Power measurement
ESP32 deep-sleep power: measuring the parts that still consume
A battery node that sleeps for five minutes and wakes for two seconds spends almost all of its life asleep. That makes the sleep current more important than the peak current, but development boards hide several permanent loads: regulator quiescent current, power LEDs, USB interface chips, and pull-up resistors.
I measured three versions of the same simple climate node. All used an ESP32 module, an SHT41, and a 3.3 V supply. Current was measured on the 3.3 V side with a bench meter in series. Wi-Fi transmit peaks were checked separately with a current monitor because the bench meter averages them too aggressively.
| Configuration | Deep sleep | Awake, CPU idle | Short radio peak |
|---|---|---|---|
| Development board, unchanged | 1.12 mA | 22 mA | 238 mA |
| Board with power LED removed | 0.63 mA | 21 mA | 236 mA |
| Bare module + low-Iq regulator | 18 µA | 19 mA | 231 mA |
The firmware itself was already doing the obvious work: disable unused peripherals, read the sensor once, publish one packet, then sleep. The important detail was to stop keeping the sensor powered between cycles. The SHT41 sits behind a small load switch controlled by GPIO 25. It is enabled only after wake-up and disabled before sleep.
constexpr gpio_num_t SENSOR_EN = GPIO_NUM_25;
constexpr uint64_t SLEEP_US = 5ULL * 60ULL * 1000000ULL;
void goToSleep() {
digitalWrite(SENSOR_EN, LOW);
gpio_hold_en(SENSOR_EN);
esp_sleep_enable_timer_wakeup(SLEEP_US);
esp_deep_sleep_start();
}
For a rough energy estimate I used 18 µA during 298 seconds of sleep, 19 mA for 1.6 seconds of active work, and an equivalent 120 mA for 0.4 seconds of radio activity. That gives about 0.089 mAh per five-minute cycle, or roughly 25.6 mAh per day. A nominal 2000 mAh cell would therefore look like a 78-day source before regulator losses, cold weather, self-discharge, and usable-capacity limits. I would budget closer to 55–60 days.
The unchanged development board is a different story. Its 1.12 mA sleep current alone consumes about 26.9 mAh per day. The board can still be useful on a large cell, but firmware tuning cannot remove a permanently lit LED or a regulator that wastes hundreds of microamps.