Aziz Bench

ESP32 and Arduino battery life calculator

Estimate the runtime of an ESP32, Arduino or nRF node that sits in deep sleep and wakes up to measure and transmit. Start from a preset, then replace the values with the ones you measure on your circuit.

Estimated runtime
6.1months
≈ 187 days · wake-up every 15 min
Average current
379 µA
Charge per day
9.1 mAh
Wake-ups per charge
18,000
Current profile · one cycle
Microcontroller and radio
µA

Chip or module only. The regulator and the rest of the board go under always-on draws.

Wake-up cycle
Active phase · CPU and sensors
mA
ms
Transmission · radio on
mA
ms
Always-on draws
µA
µA

Sensors in standby, LEDs, the divider used to read the battery. A 100k + 100k divider on a full LiPo draws about 21 µA.

Battery
mAh
%
%/month

Usable share is the part of the charge your circuit can draw before the voltage drops below its minimum.

Where the charge goes

    What to improve

    Runtime vs wake-up interval

    The dashed line is the ceiling set by sleep current, always-on draws and self-discharge. The closer you get to it, the less a longer interval helps.

    Plain text ready to paste in a forum post or an issue.

    The model works in mAh and assumes a linear regulator (LDO), where battery current roughly equals circuit current. With a switching converter real runtime is usually better. Temperature and battery ageing are not modelled.

    How the estimate works

    A battery-powered node spends almost all of its life asleep. Every few minutes it wakes up, reads its sensors, turns on the radio to send the data and goes back to sleep. Runtime depends on the average current over one full cycle, not on the peaks.

    I_avg = (I_active × t_active + I_radio × t_radio + I_sleep × t_sleep) / T
            + I_regulator + I_peripherals + I_self-discharge
    
    runtime = usable capacity / I_avg

    Self-discharge is converted into an equivalent constant current. A 2000 mAh LiPo losing about 2% per month behaves like an extra 55 µA load, more than five times what an ESP32 draws in deep sleep.

    With the default preset (bare ESP32 module, HT7333 regulator, 2000 mAh LiPo, a wake-up every 15 minutes with 2 seconds of Wi-Fi) the average current is about 379 µA and the battery lasts roughly 6 months. Wi-Fi accounts for 70% of the charge, so shortening the connection is the most effective change.

    Typical deep sleep currents

    ChipModeTypical current
    ESP32Deep sleep, RTC timer≈ 10 µA
    ESP32-C3Deep sleep≈ 5 µA
    ESP32-S3Deep sleep, RTC timer≈ 8 µA
    ATmega328P (Uno, Nano, Pro Mini)Power-down with watchdog≈ 4 µA
    nRF52840System ON with RTC≈ 2–3 µA
    RP2040 (Raspberry Pi Pico board)Dormant≈ 0.8 mA

    Indicative chip-level values from manufacturer datasheets, at about 3.3 V and room temperature. A development board adds its regulator, LEDs and USB-serial chip, often hundreds of times more.

    Why an ESP32 dev board drains the battery in deep sleep

    The ESP32 chip drops to about 10 µA, but a typical DevKit keeps drawing several milliamps. The AMS1117 regulator alone takes about 5 mA of quiescent current, the power LED stays lit and the USB-serial chip stays powered. On a 2000 mAh LiPo that turns months into about a week.

    Pick the "ESP32 DevKit as-is" preset above to see the difference. For battery use, move to a bare module or a board designed for low power, with a low-quiescent regulator such as an MCP1700 or HT7333.

    Frequently asked questions

    How long does an ESP32 last on a battery?

    It depends mostly on how often it wakes up and how long Wi-Fi stays on. A bare ESP32 module with a low-quiescent regulator, waking every 15 minutes for about 2 seconds of Wi-Fi, lasts around 6 months on a 2000 mAh LiPo, and more than a year if it wakes once an hour. A development board used as-is lasts about a week.

    Can I power an ESP32 from a CR2032 coin cell?

    Not reliably with Wi-Fi. Transmission peaks go above 200 mA, while a CR2032 is designed for loads of a few milliamps, so the voltage collapses and the chip resets. For coin cells use a BLE chip such as the nRF52, or switch to a LiPo or AA cells.

    Which voltage regulator should I use for a battery-powered ESP32?

    A low-dropout regulator with low quiescent current, such as an MCP1700 (about 1.6 µA) or an HT7333 (about 4 µA). Check that its maximum output current suits the Wi-Fi peaks and add a bulk capacitor close to the module. Avoid the AMS1117 found on many boards: it draws about 5 mA even with no load.

    How do I measure deep sleep current?

    A multimeter in series on the µA range works for the sleep current, but its shunt can drop enough voltage to reset the board when it wakes up. A power profiler such as Nordic’s PPK2 records the whole cycle, from microamps to hundreds of milliamps, and its numbers can go straight into this calculator.

    Why does battery self-discharge matter?

    With long wake-up intervals the average current becomes so small that the battery’s own losses dominate. A LiPo losing 2% a month equals about 55 µA on 2000 mAh. For multi-year runtime, a Li-SOCl₂ primary lithium cell loses around 1% a year.