ESP32C6 + Grove Base Power Consumption

Hi All

I’ve been working for many months on a hobby project to build a BLE weather sensor. (It’s been on hold for a few months while my stuff went into storage during some building works at home.)

The problem that I have is power consumption, but first let me explain the device. I have an ESP32C6 on a Grove shield, a Grove BME280 sensor and a 330MAh LiPo battery. It’s a BLE beacon and works well from a software perspective. I can read it reliably from a Raspberry Pi Zero2W which runs the web site for my home weather station.

I initially had problems with power consumption that were traced to the BME280 and the need to power it via a controllable GPIO pin rather than from the I2C. That problem was solved thanks to great help from these forums.

Unfortunately, my device only lasts approximately 100 hours on a single charge of the 330MAh battery which is a LOT less than the several weeks/months I was expecting. I initially thought the power problem was still down to the BME280, so I tried every trick I could find to reduce its power consumption, but nothing worked,

Next, I tried removing the BME280 grove board altogether and replacing its output with dummy readings, so the device now just consists of an ESP32C6+Grove Shield+330MAh battery. Guess what? The device still only lasts ~100 hours on a single battery charge! Clearly, something in this setup is consuming ~3mA instead of the (average) 60μA I was expecting. I am suspicious of the Grove shield but I lack the tools to prove this.

So, now to the questions:

1. Has anyone built a successful BLE beacon using ESP32C6+Grove shield and got anything like the expected power consumption?

2.Has anyone built a successful BLE beacon device with long battery life using any other processor that is compatible with the Grove Shield socket?

{Aside: If you’re wondering where that 60μA figure comes from, I found this excellent write-up by @msfujino. BLE Advertising Current Comparison, ESP32C3,C6,S3, MG24, nRF52840 and plugged in the advertising/wake numbers for my device: 100ms wake+80ms advertise plus 5 seconds sleep. Yes, 5 seconds is very short but I need that for debugging!}

Hi SteveF,

How was the estimate of 60 uA calculated?
My experiment, linked above, shows that when the ESP32C6 advertises for 1 second and sleeps for 59 seconds, the average current over 60 seconds is 1270 uA.

My device does 100ms wake/boot,(mainly delay for BLE stack to stabilize) then a short 80ms advertising cycle (2 x 40 ms advertising packets) then 5000 ms sleep. I used your 1270uA.figure for the wake/boot and for advertising, and then your 13.1uA for the sleep. This gives ((1270x180)+(5000*13.1))/(5000+180) = 56.8uA average, which I’ve rounded up to 60,.

As can be seen from the ESP32C3 example in the graph, the device consumes 80 mA during the period when it is awake and advertising.

Ouch!! I was looking at the wrong graph. That gives me an average power consumption of 2.8mA, which explains everything. The ESP32C6 clearly isn’t suited for the job. I need to find a better processor.

PS. I forgot to say thanks for such a quick and helpful response

Hi there,

So , You see @msfujino is good like that, He knows the 411.
Take a look at the newest XIAO Nrf54LM20a that should do everything you need, including the ability to turn off the Sensor for “zero” consumption from it. also can accurately characterise the battery and send you the battery level over the BLE as well.

Great project too, btw :+1:

HTH
GL :slight_smile: PJ :v:

FYI.. the price is thru the roof in my curency, maybe better in yours