This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Higher precision in BLE_UUID_HEALTH_THERMOMETER_SERVICE

Hi,

I am trying to include temperature (read from DS18B20) in advertisement data using BLE_UUID_HEALTH_THERMOMETER_SERVICE. So far it works fine, but my temperature is multiplied by 10 (234 instead of 23.4). I use following code (inspired by examples I found), on nrf51822:

  uint32_t temperature_data = measure_temp_ds18b20();

  service_data[1].service_uuid = BLE_UUID_HEALTH_THERMOMETER_SERVICE;
  service_data[1].data.size    = sizeof(temperature_data);
  service_data[1].data.p_data  = (uint8_t *) &temperature_data;

Temperature is shown correctly (e.g. in nRF Temp app on android) but of course as 234, instead of 23.4. Is it possible to send this value as fractional?

greetings, Bartek

Parents
  • What type does measure_temp_ds18b20() return? If you are expecting a decimal i.e. 23.4 but you are storing it in uint32_t then thats a problem. Then looking at the code you provided you are storing the uint32_t into p_data in an array of uint8_t. So if you want a decimal reading maybe you need to read your measure_temp..() into a float or double or something and then store it to p_data as that type (if thats possible im not really sure). Otherwise maybe you keep it as sending in a uint32_t and just know how to interpret those raw bits on the other side of the BLE link.

Reply
  • What type does measure_temp_ds18b20() return? If you are expecting a decimal i.e. 23.4 but you are storing it in uint32_t then thats a problem. Then looking at the code you provided you are storing the uint32_t into p_data in an array of uint8_t. So if you want a decimal reading maybe you need to read your measure_temp..() into a float or double or something and then store it to p_data as that type (if thats possible im not really sure). Otherwise maybe you keep it as sending in a uint32_t and just know how to interpret those raw bits on the other side of the BLE link.

Children
No Data
Related