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 Reply
  • I think the ble_app_lbs is basically the template application with addition of a single service with 2x custom characteristics. Perhaps you just need to evaluate if you feel more comfortable with modifying the service in the ble_app_lbs example for your own purpose or to start from scratch from the ble_app_template , using the principles described in the nAN-36 and ble_app_lbs. In any case, you would need to add your LPCOMP and other functionality on top of that. Do you have PC10028 already, it requires SDK 7.0.1, see SDK release notes.

Children
No Data
Related