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

Related