Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: BLE_API LIS3DH mbed nRF51822 BMC050 nRF51_LowPwr nRF51_Vdd
Fork of BLE_EddystoneBeacon_Service by
Revision 35:c64495aac4d1, committed 2016-02-17
- Comitter:
- kenjiArai
- Date:
- Wed Feb 17 22:39:00 2016 +0000
- Parent:
- 34:f6d4a699a1ea
- Child:
- 36:5508506dda71
- Commit message:
- Run on TY51822r3 board with ACC sensor (LIS3DH)
Changed in this revision
--- a/BLE_API.lib Thu Nov 26 16:36:04 2015 +0000 +++ b/BLE_API.lib Wed Feb 17 22:39:00 2016 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/teams/Bluetooth-Low-Energy/code/BLE_API/#c6c50b28ccd2 +http://mbed.org/teams/Bluetooth-Low-Energy/code/BLE_API/#ff83f0020480
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LIS3DH.lib Wed Feb 17 22:39:00 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/kenjiArai/code/LIS3DH/#50ac3372def2
--- a/main.cpp Thu Nov 26 16:36:04 2015 +0000
+++ b/main.cpp Wed Feb 17 22:39:00 2016 +0000
@@ -14,38 +14,101 @@
* limitations under the License.
*/
+/*
+ * /////// Works well on Switch Science mbed TY51822r3 ///////
+ * Modified by Kenji Arai
+ * http://www.page.sannet.ne.jp/kenjia/index.html
+ * http://mbed.org/users/kenjiArai/
+ *
+ * Started: Feburary 1st, 2016
+ * Revised: Feburary 18th, 2016
+ *
+ * Original:
+ * nRF51822_SimpleControls
+ * https://developer.mbed.org/teams/Bluetooth-Low-Energy/code/BLE_EddystoneBeacon_Service/
+ * Tested Controller Device:
+ * iPhone6 Physical Web (PhyWeb) By Viet Hoa Dinh
+ * https://itunes.apple.com/us/app/physical-web/id927653608?mt=8
+ */
+
+/*
+ * STEP1
+ * If you just got the board, plese set following difinition and not connect all of pins.
+#define NOT_USE_ACC 1
+#define CHK_ACC 0
+#define NEED_CONSOLE_OUTPUT 0
+ * STEP2
+ * If you equiped the LIS3DH Acc sensor, please check ACC data using folloing definition.
+#define NOT_USE_ACC 0
+#define CHK_ACC 1
+#define NEED_CONSOLE_OUTPUT 1
+ * STEP3
+ * This is a final setup without no debug information.
+#define NOT_USE_ACC 0
+#define CHK_ACC 0
+#define NEED_CONSOLE_OUTPUT 0
+ *
+ */
+
+// Include ---------------------------------------------------------------------------------------
#include "mbed.h"
-#include "ble/BLE.h"
+#include "BLE.h"
#include "EddystoneService.h"
+#include "LIS3DH.h"
+// Definition ------------------------------------------------------------------------------------
+#define NOT_USE_ACC 0
+#define CHK_ACC 0
+#define NEED_CONSOLE_OUTPUT 0 /* Set this if you need debug messages on the console;
+ * it will have an impact on code-size and power consumption. */
+
+#if NEED_CONSOLE_OUTPUT
+#define DEBUG(...) { printf(__VA_ARGS__); }
+#else
+#define DEBUG(...) /* nothing */
+#endif /* #if NEED_CONSOLE_OUTPUT */
+
+// Object ----------------------------------------------------------------------------------------
+DigitalOut CHG_LED(LED1);
+I2C i2c(I2C_SDA0, I2C_SCL0); // SDA, SCL
+LIS3DH acc(i2c,LIS3DH_G_CHIP_ADDR,LIS3DH_DR_NR_LP_50HZ, LIS3DH_FS_2G);
+
+// RAM -------------------------------------------------------------------------------------------
EddystoneService *eddyServicePtr;
-void onBleInitError(BLE::InitializationCompleteCallbackContext* initContext)
-{
- /* Initialization error handling goes here... */
+// ROM / Constant data ---------------------------------------------------------------------------
+
+// Function prototypes ---------------------------------------------------------------------------
+
+//-------------------------------------------------------------------------------------------------
+// Control Program
+//-------------------------------------------------------------------------------------------------
+#if (NOT_USE_ACC == 0)
+int8_t check_dice(void){
+ float fa[3]; // Acc 0:X, 1:Y, 2:Z
+
+ acc.read_data(fa);
+ DEBUG("acc:%4.3f\r\n", fa[0]);
+ if (fa[0] > 6.0f){ return 2;}
+ if (fa[0] < -6.0f){ return 5;}
+ if (fa[1] > 6.0f){ return 4;}
+ if (fa[1] < -6.0f){ return 3;}
+ if (fa[2] > 6.0f){ return 1;}
+ if (fa[2] < -6.0f){ return 6;}
+ return 0;
+}
+#else
+int8_t check_dice(void){
+ return 1;
+}
+#endif // (NOT_USE_ACC == 0)
+
+void onBleInitError(BLE::InitializationCompleteCallbackContext* initContext){
+ // Initialization error handling goes here...
(void) initContext;
}
-/*
- * Update TLM frame battery voltage value.
- */
-uint16_t tlmBatteryVoltageCallback(uint16_t prevBatteryVoltage)
-{
- prevBatteryVoltage++;
- return prevBatteryVoltage;
-}
-
-/*
- * Update TLM frame beacon temperature value.
- */
-uint16_t tlmBeaconTemperatureCallback(uint16_t prevBeaconTemperature)
-{
- prevBeaconTemperature++;
- return prevBeaconTemperature;
-}
-
-void bleInitComplete(BLE::InitializationCompleteCallbackContext* initContext)
-{
+void bleInitComplete(BLE::InitializationCompleteCallbackContext* initContext){
BLE &ble = initContext->ble;
ble_error_t error = initContext->error;
@@ -53,42 +116,85 @@
onBleInitError(initContext);
return;
}
-
- /* Set UID and TLM frame data */
- const UIDNamespaceID_t uidNamespaceID = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99};
- const UIDInstanceID_t uidInstanceID = {0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF};
+ // Set UID and TLM frame data
+ const UIDNamespaceID_t uidNamespaceID =
+ {0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99};
+ const UIDInstanceID_t uidInstanceID =
+ {0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF};
uint8_t tlmVersion = 0x00;
- /* Initialize a EddystoneBeaconConfig service providing config params, default URI, and power levels. */
- static const PowerLevels_t defaultAdvPowerLevels = {-47, -33, -21, -13}; // Values for ADV packets related to firmware levels, calibrated based on measured values at 1m
- static const PowerLevels_t radioPowerLevels = {-30, -16, -4, 4}; // Values for radio power levels, provided by manufacturer.
+ // Initialize a EddystoneBeaconConfig service
+ // Values for ADV packets related to firmware levels, calibrated based on measured values at 1m
+// static const PowerLevels_t defaultAdvPowerLevels = {-47, -33, -21, -13};
+ static const PowerLevels_t defaultAdvPowerLevels = {-87, -73, -61, -53};
+ // Values for radio power levels, provided by manufacturer.
+// static const PowerLevels_t radioPowerLevels = {-30, -16, -4, 4};
+ static const PowerLevels_t radioPowerLevels = {-60, -46, -34, -26};
+ eddyServicePtr = new EddystoneService(ble, defaultAdvPowerLevels, radioPowerLevels);
+ // created short cut web addres by http://bitly.oshiire.org/
- /* Set everything to defaults */
- eddyServicePtr = new EddystoneService(ble, defaultAdvPowerLevels, radioPowerLevels);
-
- /* Set default URL, UID and TLM frame data if not initialized through the config service */
- eddyServicePtr->setURLData("http://mbed.org");
+ switch (check_dice()){
+ case 1:
+ eddyServicePtr->setURLData("http://bit.ly/1oJh91B"); // Switch sience(mbed)
+ break;
+ case 2:
+ eddyServicePtr->setURLData("http://bit.ly/1oJhP7g"); // switch sience(HP)
+ break;
+ case 3:
+ eddyServicePtr->setURLData("http://bit.ly/1VvuCVr"); // Taiyo Yuden BLE
+ break;
+ case 4:
+ eddyServicePtr->setURLData("http://bit.ly/1Vvtp0l"); // Taiyo Yuden
+ break;
+ case 5:
+ eddyServicePtr->setURLData("http://bit.ly/1Vvt51J"); // JH1PJL(mbed)
+ break;
+ case 6:
+ eddyServicePtr->setURLData("http://bit.ly/1VvteT0"); // JH1PJL(HP)
+ break;
+ case 0:
+ default:
+ eddyServicePtr->setURLData("http://mbed.org");
+ break;
+ }
eddyServicePtr->setUIDData(&uidNamespaceID, &uidInstanceID);
eddyServicePtr->setTLMData(tlmVersion);
-
- /* Set battery voltage and temperature callbacks */
- eddyServicePtr->onTLMBatteryVoltageUpdate(tlmBatteryVoltageCallback);
- eddyServicePtr->onTLMBeaconTemperatureUpdate(tlmBeaconTemperatureCallback);
-
- /* Start Eddystone in config mode */
- eddyServicePtr->startBeaconService(5, 5, 5);
+ eddyServicePtr->startBeaconService(5, 5, 5); // Start Eddystone in config mode
}
-int main(void)
-{
+#if (CHK_ACC == 0)
+int main(void){
+ uint8_t old_dice;
+
+ CHG_LED = 1;
BLE& ble = BLE::Instance(BLE::DEFAULT_INSTANCE);
ble.init(bleInitComplete);
-
- /* SpinWait for initialization to complete. This is necessary because the
- * BLE object is used in the main loop below. */
- while (ble.hasInitialized() == false) { /* spin loop */ }
+ while (ble.hasInitialized() == false){;}
+ old_dice = check_dice(); // set initial value
+ wait(0.5);
+ CHG_LED = 0;
+ while (true) {
+ ble.waitForEvent();
+ if (old_dice != check_dice()){
+ SCB->AIRCR = 0x05fa0004; // System RESET!![
+ // Not come here (Just in case)
+ deepsleep();
+ while(true){ wait(100);}
+ }
+ }
+}
+#else
+#if (NOY_USE_ACC == 1)
+#error "Please set CHK_ACC = 0)
+#else
+int main(void){
+ float fa[3];
while (true) {
- ble.waitForEvent(); /* this will return upon any system event (such as an interrupt or a ticker wakeup) */
+ acc.read_data(fa);
+ printf("acc:x=%4.2f,y=%4.2f,z=%4.2f\r\n",fa[0],fa[1],fa[2]);
+ wait(0.5);
}
}
+#endif // (NOY_USE_ACC == 1)
+#endif // (CHK_ACC == 0)
--- a/mbed.bld Thu Nov 26 16:36:04 2015 +0000 +++ b/mbed.bld Wed Feb 17 22:39:00 2016 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/9296ab0bfc11 \ No newline at end of file +http://mbed.org/users/mbed_official/code/mbed/builds/252557024ec3 \ No newline at end of file
--- a/nRF51822.lib Thu Nov 26 16:36:04 2015 +0000 +++ b/nRF51822.lib Wed Feb 17 22:39:00 2016 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/teams/Nordic-Semiconductor/code/nRF51822/#1762975cb3cb +http://mbed.org/teams/Nordic-Semiconductor/code/nRF51822/#1751e2e2637a
