Minimizing energy consumption in advertising BLE

St-Ivoda
Posts: 3
Joined: Thu Aug 14, 2025 2:35 pm

Minimizing energy consumption in advertising BLE

Postby St-Ivoda » Thu Aug 14, 2025 3:07 pm

Hello forum. This is my first post.

I'm designing a device that should run on AAA batteries (though AA replacements are acceptable). I'm looking for a solution that will allow my device to consume minimal current during advertising mode. Here’s a bit about the device: it sleeps for 4 seconds, then wakes up, broadcasts advertisements while waiting for a connection, and goes back to sleep.

**First question:** Is it possible to implement such a cycle so that the device can run for a year on 1000 mAh (2000 mAh with AA batteries, though this is less desirable)?

**Second question:** If the answer to the first question is yes, how can this cycle be implemented?

I tried the following cycle on an ESP32-C3 chip:
- 4 seconds of deep sleep
- 100 ms of advertising
- back to deep sleep

The problem with this cycle is the long initialization after waking up (about 200 ms), during which high currents are consumed. With this approach, I only managed to achieve 2.5 mA per cycle (60 mA per day), which is a very poor result.

As an experiment, I also tried a cycle that avoided frequent reinitialization—using light sleep without reinitializing the BLE stack. The device stayed in light sleep for 20 seconds, woke up briefly on a timer (0.001 seconds), and went back to light sleep. Even with these modest settings, the device consumed 278 μA per cycle, which translates to 6.67 mA per day—only about 150 days of operation on AAA batteries.

Any suggestions for improvement?

ves011
Posts: 59
Joined: Fri Oct 07, 2022 2:31 pm
Location: romania
Contact:

Re: Minimizing energy consumption in advertising BLE

Postby ves011 » Fri Aug 15, 2025 6:21 pm

Here is a rough calculation for your first question.
1year * 365d * 24h makes 8760 hours.
If you budget is 1000mAh (2000mAh) this means you need to go to an average current consumption below 0.11 (0.22) mA / hour
Looking into ESP32-C3-MINI-1 datasheet, light sleep is 130uA and deep sleep is 5uA.
So light sleep is out of the question, even if you go for AA battery, because the room for other operations you might need is too small (~90uA)
The problem with deep sleep you already pointed it. Every time it wakes-up it goes over a boot cycle.
I measured the minimal boot sequence on a S3 and got ~800msec with an average of 41mA@80MHZ. On C3 you said its only 200msec but you don’t have the average current.
Anyway, that means every hour you have 900 cycles of 200 msec which means 0.05 hours. With an average current during these cycles of 2.2mA you already eat your 1000 mAh budget, but I’m afraid the average is much higher.

So the answer is no.

ESP32 is not the best in class when it comes to power consumption but not the worst. Its on average. Honestly not sure which chip might fit with your requirements. Being Bluetooth you might have a look into nRF chip family.

St-Ivoda
Posts: 3
Joined: Thu Aug 14, 2025 2:35 pm

Re: Minimizing energy consumption in advertising BLE

Postby St-Ivoda » Thu Aug 21, 2025 9:43 am

Unfortunately, this is true... After a few more days of research, I found out that you can exit deep sleep much faster than 200 ms (on the ESP32-C3). You just need to save some data in the RTC memory, and then the awakening will be faster. But there is a nuance... This approach is not compatible with the BLE stack, so I did not even test this approach in practice.

You correctly noted that for this task it is necessary to switch to another chip. I chose the nRF52840 because it has RTC RAM (or non-volatile memory), which allows it to save the BLE stack state during deep sleep.

Thanks for your reasoning ;)

Who is online

Users browsing this forum: ChatGPT-User, PerplexityBot, Qwantbot and 2 guests