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

Committer:
ledonger
Date:
Tue Apr 18 14:09:50 2017 +0000
Revision:
2:c0bd998cb02f
Parent:
1:023e1eae2048
New name;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ledonger 0:d2c18f736df1 1 #ifndef __BLE_DHT11_SERVICE_H__
ledonger 0:d2c18f736df1 2 #define __BLE_DHT11_SERVICE_H__
ledonger 0:d2c18f736df1 3
ledonger 0:d2c18f736df1 4
ledonger 0:d2c18f736df1 5 class DHT11Service {
ledonger 0:d2c18f736df1 6 public:
ledonger 1:023e1eae2048 7 const static uint16_t DHT11_UUID = 0xA100;//False UUID does not exists
ledonger 0:d2c18f736df1 8 const static uint16_t TEMPERATURE_CHARACTERISTIC_UUID = 0x2A6E;
ledonger 0:d2c18f736df1 9 const static uint16_t HUMIDITY_CHARACTERISTIC_UUID = 0x2A6F;
ledonger 0:d2c18f736df1 10
ledonger 0:d2c18f736df1 11 DHT11Service(BLEDevice &_ble, uint8_t initialTempValue, uint8_t initialHumiValue) :
ledonger 0:d2c18f736df1 12 ble(_ble),
ledonger 0:d2c18f736df1 13 /*temperatureValue(TEMPERATURE_CHARACTERISTIC_UUID,&initialTempValue),*/
ledonger 0:d2c18f736df1 14 temperatureValue(TEMPERATURE_CHARACTERISTIC_UUID,
ledonger 0:d2c18f736df1 15 &initialTempValue,
ledonger 1:023e1eae2048 16 sizeof(uint8_t),
ledonger 1:023e1eae2048 17 sizeof(uint8_t),
ledonger 0:d2c18f736df1 18 GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY),
ledonger 0:d2c18f736df1 19 humidityValue(HUMIDITY_CHARACTERISTIC_UUID,
ledonger 0:d2c18f736df1 20 &initialHumiValue,
ledonger 1:023e1eae2048 21 sizeof(uint8_t),
ledonger 1:023e1eae2048 22 sizeof(uint8_t),
ledonger 0:d2c18f736df1 23 GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY)
ledonger 0:d2c18f736df1 24 /*humidityValue(HUMIDITY_CHARACTERISTIC_UUID,&initialHumiValue)*/
ledonger 0:d2c18f736df1 25 {
ledonger 0:d2c18f736df1 26 GattCharacteristic *charTable[] = {&temperatureValue,&humidityValue};
ledonger 0:d2c18f736df1 27 GattService service(DHT11_UUID, charTable, sizeof(charTable) / sizeof(GattCharacteristic *));
ledonger 0:d2c18f736df1 28 ble.addService(service);
ledonger 0:d2c18f736df1 29
ledonger 0:d2c18f736df1 30 }
ledonger 0:d2c18f736df1 31
ledonger 1:023e1eae2048 32 GattAttribute::Handle_t getValueHandle() const {
ledonger 0:d2c18f736df1 33 return temperatureValue.getValueHandle();
ledonger 1:023e1eae2048 34 }
ledonger 0:d2c18f736df1 35
ledonger 1:023e1eae2048 36 void updateTemperatureValue(uint8_t value) {
ledonger 1:023e1eae2048 37 ble.gattServer().write(temperatureValue.getValueHandle(), (uint8_t *)&value, sizeof(uint8_t));
ledonger 0:d2c18f736df1 38 }
ledonger 1:023e1eae2048 39 void updateHumidityValue(uint8_t value) {
ledonger 1:023e1eae2048 40 ble.gattServer().write(humidityValue.getValueHandle(), (uint8_t *)&value, sizeof(uint8_t));
ledonger 0:d2c18f736df1 41 }
ledonger 0:d2c18f736df1 42
ledonger 0:d2c18f736df1 43 private:
ledonger 0:d2c18f736df1 44 BLEDevice &ble;
ledonger 0:d2c18f736df1 45 GattCharacteristic temperatureValue;
ledonger 0:d2c18f736df1 46 GattCharacteristic humidityValue;
ledonger 0:d2c18f736df1 47 };
ledonger 0:d2c18f736df1 48
ledonger 0:d2c18f736df1 49 #endif