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

Tips on ULP, BLE and SoftDevice S110 with PCA10001 [nRF51822]

Hello Nordic people!

I'm developing my first firmware on nRF51822 and I need help with BLE, profiles and SoftDevice S110 stack.

Application it's a speed sensor for bicycles. I wish minimum energy consumption. Today, FW is capable to measure cadence data using RTC & LFCLK. Among the pulses due to wheel revolutions, I put the nRF CPU on sleep thus it consumes a very small amount of energy (Vdd=1.8 V, Idd=4.32 mA when CPU ON and Idd=3.05 uA when CPU sleep). I'm very happy ;)

Now it's time to send the speed information to external devices through BLE, using SoftDevice S110.

I think 8-16 bit of data are enough for speed information. I want a speed-related, variable frame-rate:

  • at speed lower than 15 km/h, wheel revolution period is higher than 500 ms thus frame-rate higher than 1/500 ms will be a waste of energy. In this situation, frame-rate will match the wheel's revolution period (>500 ms) and Frame_rate<(1/500) ms.
  • at speed higher than 15 km/h, wheel revolution period is lower than 500 ms. However send data via radio too often is still a waste of energy (end-user has no advantages in a non-real time applications like this) thus maximum desirable frame-rate is Frame_rate_max=1/500 ms. The end-user BLE equipment will have a maximum display-refresh rate of 1/500 ms. It's a good compromise.

Summarizing, maximum frame-rate is 2 FPS (1/500 ms). When no wheel's revolutions happened in 4 seconds, I send a 0 km/h data and switch off nRF51822 thus minimum frame-rate is 0.25 FPS (1/4 s).


I'm starting to read BLE manuals but is still a jungle of information. I briefly saw the GATT and CSC profile but I'm not sure it's the better choice to obtain extra low power consumption.

Maybe it's smarter using a custom profile? Have you got some useful links, BLE quick start, simple nRF51822 project and profiles/services and tips about this application? Please, put me on the right way :) Thank you all!

Parents
  • Hi

    With your frame rate of 2Hz, you should be able to obtain very low current consumption.

    Perhaps you will benefit of looking at this blog. There is also a current consumption guide here.

    To create a proprietary profile, nAN-36 is a good starting point. It is perhaps a little outdated but the principles should be still valid. A more updated accompanied ble_app_lbs code is available on Nordic's Github page

    Connection interval tips. Choose 500ms connection interval, and a slave latency of 7, to allow the device to respond to the central device in every 8th connection event if there is no data to send for 8*500ms. Supervision timeout of perhaps 5-10 seconds.

  • Thank you for fast response! I try to download last GitHub version of nrf51-ble-app-lbs into PCA10001 board but, with USB dongle and Master Control Panel, I cannot see any BLE device (see here). I think it's a "nrf51-ble-app-lbs" problem because the dongle and MCP works well with other BLE examples applications (e.g. ble_app_hrs). I use SoftDevice 7.1 and SDK v.6.0.0.43681. Are there any solution to nAN36 application or are there others app notes to quick jump to BLE world? Thank you again.

Reply
  • Thank you for fast response! I try to download last GitHub version of nrf51-ble-app-lbs into PCA10001 board but, with USB dongle and Master Control Panel, I cannot see any BLE device (see here). I think it's a "nrf51-ble-app-lbs" problem because the dongle and MCP works well with other BLE examples applications (e.g. ble_app_hrs). I use SoftDevice 7.1 and SDK v.6.0.0.43681. Are there any solution to nAN36 application or are there others app notes to quick jump to BLE world? Thank you again.

Children
No Data
Related