Project aiming to do a Bluetooth Low Energy IoT devices, which measure temperature and humidity. Bluetooth achieved with the IDB05A1 shield. Temperature/humidity achieved with a DHT11 sensor. Project working, tested on an STM32 L476 board.
Dependencies: BLE_API X_NUCLEO_IDB0XA1 mbed
Diff: DHT11_BLEService.h
- Revision:
- 0:d2c18f736df1
- Child:
- 1:023e1eae2048
diff -r 000000000000 -r d2c18f736df1 DHT11_BLEService.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DHT11_BLEService.h Fri Apr 07 11:36:47 2017 +0000 @@ -0,0 +1,49 @@ +#ifndef __BLE_DHT11_SERVICE_H__ +#define __BLE_DHT11_SERVICE_H__ + + +class DHT11Service { +public: + const static uint16_t DHT11_UUID = 0x2A61;//False UUID does not exists + const static uint16_t TEMPERATURE_CHARACTERISTIC_UUID = 0x2A6E; + const static uint16_t HUMIDITY_CHARACTERISTIC_UUID = 0x2A6F; + + DHT11Service(BLEDevice &_ble, uint8_t initialTempValue, uint8_t initialHumiValue) : + ble(_ble), + /*temperatureValue(TEMPERATURE_CHARACTERISTIC_UUID,&initialTempValue),*/ + temperatureValue(TEMPERATURE_CHARACTERISTIC_UUID, + &initialTempValue, + sizeof(uint32_t), + sizeof(uint32_t), + GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY), + humidityValue(HUMIDITY_CHARACTERISTIC_UUID, + &initialHumiValue, + sizeof(uint32_t), + sizeof(uint32_t), + GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY) + /*humidityValue(HUMIDITY_CHARACTERISTIC_UUID,&initialHumiValue)*/ + { + GattCharacteristic *charTable[] = {&temperatureValue,&humidityValue}; + GattService service(DHT11_UUID, charTable, sizeof(charTable) / sizeof(GattCharacteristic *)); + ble.addService(service); + + } + + /*GattAttribute::Handle_t getValueHandle() const { + return temperatureValue.getValueHandle(); + }*/ + + void updateTemperatureValue(uint32_t value) { + ble.gattServer().write(temperatureValue.getValueHandle(), (uint8_t *)&value, sizeof(uint32_t)); + } + void updateHumidityValue(uint32_t value) { + ble.gattServer().write(humidityValue.getValueHandle(), (uint8_t *)&value, sizeof(uint32_t)); + } + +private: + BLEDevice &ble; + GattCharacteristic temperatureValue; + GattCharacteristic humidityValue; +}; + +#endif