The best way to save energy in an application

Hi,
I am developing an application that includes the following features:
1. PWM to control the buzzer
2. 2 Uarte to communicate with 2 external devices
3. BLE to wireless communication (ble_app_uart)
4. Timer
5. saadc to read battery level
6. nrf_log_info for debugging

Now I want to implement an application as economical as possible, so I planned this topic
1. PWM => I enable/disable depending on when the user wants/don't want to ring buzzer by app_pwm_enable (& context) / app_pwm_disable (& context)
2. Libuarte => I enable/disable uarte when nRF needs/no need to communicate with external devices using nrf_libuarte_async_uninit (& libuarte) / nrf_libuarte_async_ninit (& libuarte)
3. BLE => I increase the advertising interval as big as possible
4. timer => I think app_timer is the best way
5. saadc => now i don't have any solution for this
6. Log Info => I think I will disable it in sdk_config.h => NRF_LOG_BACKEND_RTT_ENABLED 0
I'm using the ON system when the device is idle
So can you give me some comments and suggestions on my plan?
I am using custom board with nRF5833 chip and my application is based on SDK16 ble_app_uart example
As this feature is the most important feature in my project so please provide me a complete process for this feature.
Thank you

Parents
  • Hi,

    These are all very good measures for low power. For the SAADC you can follow our low-power SAADC example which uses the RTC to schedule samples, see this. The logger should definitely be disabled if you want to have low current consumption. For the BLE you can decrease the TX power, use DCDC and external LF crystal. 

    Here is a blog post about optimizing power on nRF52. 

    regards

    Jared 

  • hi Jared,
    1. Like previous your reply. You confirm that I can supply 1.8v for nRF52833 to work saver energy than 3.3V.
    Does it affects performance or any other exception like peripheral, BLE strength, libuartes speed, other handler...?
    Or it is similar 3.3v but saver than ? I mean I only supply from external source for nRF 1.8v for all process.
    In my module it doesn't have conductor connect with DCC so I think I can't use DC/DC converter. 

    2. I followed this thread to disable logging => I only  set NRF_LOG_DEFAULT_LEVEL 0 for disable logging ? May I miss some configs to disable logging? I'm just using NRF_LOG_INFO to debug, may it is simillar RTT  backend log ?

Reply
  • hi Jared,
    1. Like previous your reply. You confirm that I can supply 1.8v for nRF52833 to work saver energy than 3.3V.
    Does it affects performance or any other exception like peripheral, BLE strength, libuartes speed, other handler...?
    Or it is similar 3.3v but saver than ? I mean I only supply from external source for nRF 1.8v for all process.
    In my module it doesn't have conductor connect with DCC so I think I can't use DC/DC converter. 

    2. I followed this thread to disable logging => I only  set NRF_LOG_DEFAULT_LEVEL 0 for disable logging ? May I miss some configs to disable logging? I'm just using NRF_LOG_INFO to debug, may it is simillar RTT  backend log ?

Children
Related