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!}