ADT7410 or TMP102 with mbed HRM1017 sample program konashi.js http://jsdo.it/micutil/7GnE

Dependencies:   ADT7410 BLE_API_Native_IRC TMP102 mbed

Fork of BLE_Health_Thermometer_IRC by Yoshihiro TSUBOI

konashi.jsを使う場合 http://jsdo.it/micutil/7GnE

techBASICを使う場合 https://www.dropbox.com/s/q5vuqmdr7o8r9v0/ADT7410.txt

I2C温度計:ADT7410またはTMP102を使って mbed HRM1017で温度を表示させるサンプルプログラムです

ADT7410:秋月 http://akizukidenshi.com/catalog/g/gM-06675/ で購入できます。

TMP102:スイッチサイエンス http://www.switch-science.com/catalog/1474/ で購入できます。

mbed HRM1017 http://www.switch-science.com/catalog/1755/

mbedのコード http://mbed.org/users/micono/code/BLE_ADT7410_TMP102_Sample/

ADT7410を使う場合:UseADT7410 1

TMP102を使う場合:UseADT7410 0

konashi.jsを使う場合:KONASHI 1

nRF Toolboxを使う場合:KONASHI 0

ADT7410配線図 /media/uploads/micono/adt7410mbedhrm1017.jpg

Files at this revision

API Documentation at this revision

Comitter:
micono
Date:
Sun Jul 20 01:24:21 2014 +0000
Parent:
4:51e3d15f6b54
Child:
6:58ac5eb16aec
Commit message:
ADT7410 or TMP102 with mbed HRM1017 sample program

Changed in this revision

ADT7410.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ADT7410.lib	Sun Jul 20 01:24:21 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/tkreyche/code/ADT7410/#e1aee50340ec
--- a/main.cpp	Wed Jun 11 15:20:50 2014 +0000
+++ b/main.cpp	Sun Jul 20 01:24:21 2014 +0000
@@ -15,30 +15,53 @@
  */
 
 #include "mbed.h"
-#include "TMP102.h"
 #include "nRF51822n.h"
 
 nRF51822n   nrf;                               /* BLE radio driver */
-TMP102      healthThemometer(p22, p20, 0x90);  /* The TMP102 connected to our board */
+
+#define UseADT7410 1
+#if UseADT7410
+    #include "ADT7410.h"
+    ADT7410 healthThemometer(p22, p20, 0x90, 400);
+#else
+    #include "TMP102.h"
+    TMP102 healthThemometer(p22, p20, 0x90);  /* The TMP102 connected to our board */
+#endif
+
+#define DBG 0
+#if DBG
+    Serial  pc(USBTX, USBRX);
+#endif
 
 /* LEDs for indication: */
 DigitalOut  oneSecondLed(LED1);        /* LED1 is toggled every second. */
 DigitalOut  advertisingStateLed(LED2); /* LED2 is on when we are advertising, otherwise off. */
 
 
+
+
+
+#define KONASHI 1
+#if KONASHI
+/* Health Thermometer Service */ 
+uint8_t             thermTempPayload[2] = { 0, 0 };
+static const uint16_t konashi_service_uuid = 0xFF00;
+static const uint16_t konashi_i2c_read_uuid = 0x300F;
+GattService         thermService (konashi_service_uuid);
+GattCharacteristic  thermTemp (konashi_i2c_read_uuid,2, 2,
+                                GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_INDICATE);
+#else
 /* Health Thermometer Service */ 
 uint8_t             thermTempPayload[5] = { 0, 0, 0, 0, 0 };
 GattService         thermService (GattService::UUID_HEALTH_THERMOMETER_SERVICE);
 GattCharacteristic  thermTemp (GattCharacteristic::UUID_TEMPERATURE_MEASUREMENT_CHAR,
                                5, 5, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_INDICATE);
 
-/* Battery Level Service */
-uint8_t            batt = 100;     /* Battery level */
-uint8_t            read_batt = 0; /* Variable to hold battery level reads */
-GattService        battService ( GattService::UUID_BATTERY_SERVICE );
-GattCharacteristic battLevel   ( GattCharacteristic::UUID_BATTERY_LEVEL_CHAR, 1, 1,
-                                 GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY |
-                                 GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ);
+GattService         thermService (GattService::UUID_HEALTH_THERMOMETER_SERVICE);
+GattCharacteristic  thermTemp (GattCharacteristic::UUID_TEMPERATURE_MEASUREMENT_CHAR,
+                               5, 5, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_INDICATE);
+#endif
+
 
 
 /* Advertising data and parameters */
@@ -64,6 +87,9 @@
      
     virtual void onConnected(void)
     {
+        #if DBG
+            pc.printf("Connected\n\r");
+        #endif
         advertisingStateLed = 0;
     }
 
@@ -106,9 +132,12 @@
     thermService.addCharacteristic(thermTemp);
     nrf.getGattServer().addService(thermService);
     
+#if KONASHI
+#else    
     /* Add the Battery Level service */
     battService.addCharacteristic(battLevel);
     nrf.getGattServer().addService(battService);
+#endif
 
     /* Start advertising (make sure you've added all your data first) */
     nrf.getGap().startAdvertising(advParams);
@@ -131,17 +160,34 @@
 {
       /* Toggle the one second LEDs */
       oneSecondLed = !oneSecondLed;
-      
+
+#if KONASHI
+#else      
       /* Update battery level */
       nrf.getGattServer().updateValue(battLevel.handle, (uint8_t*)&batt, sizeof(batt));
       /* Decrement the battery level. */
       batt <=50 ? batt=100 : batt--;;
+#endif
       
       /* Update the temperature. Note that we need to convert to an ieee11073 format float. */
+#if UseADT7410
+      float temperature = healthThemometer.getTemp();
+#else
       float temperature = healthThemometer.read();
+#endif
+    #if KONASHI
+      uint16_t temp_ieee11073 = temperature;
+      //memcpy(thermTempPayload, &temp_ieee11073, 2);
+      thermTempPayload[0]=floor(temperature);
+      thermTempPayload[1]=floor(10*(temperature-(float)thermTempPayload[0]));
+    #else
       uint32_t temp_ieee11073 = quick_ieee11073_from_float(temperature);
       memcpy(thermTempPayload+1, &temp_ieee11073, 4);
-      nrf.getGattServer().updateValue(thermTemp.handle, thermTempPayload, sizeof(thermTempPayload));
+    #endif
+#if DBG
+    pc.printf("DATA:%d\n\r",temp_ieee11073);
+#endif
+    nrf.getGattServer().updateValue(thermTemp.handle, thermTempPayload, sizeof(thermTempPayload));
 }
 
 /**