Power measurement

ESP32 deep-sleep power: measuring the parts that still consume

· ESP32 · low-power nodes

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.

Measured current at 3.3 V.
ConfigurationDeep sleepAwake, CPU idleShort radio peak
Development board, unchanged1.12 mA22 mA238 mA
Board with power LED removed0.63 mA21 mA236 mA
Bare module + low-Iq regulator18 µA19 mA231 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.

Practical result: measure the assembled board, not the ESP32 data sheet. On this node, hardware around the module changed sleep current by more than sixty times.