Low power solution for ESP32 with Lipo battery

I want to develop an IOT product with ESP32 MCU, it should with 18650 Lipo battery, and the battery life should be as long as possible.

After study current solutions, I found most of them have some problems. Before go further, let’s check 18650 discharge characteristics first.

18650 Battery Discharge Curve. Source: batteryuniversity.com

If discharged at 0.2C, at the discharge cutoff of 3.0V/cell, produces only about 3200mAh.
Most of product use ESP32 module, ESP32-WROOM-32D. It work voltage rang is: 3.0 V ~ 3.6 V. Current min 500mA.



Github link

  • ESP module: ESP32-WROOM-32D
  • With USB input, changer and program.
  • External 5V input.
  • USB, Battery power path choose.
  • USB to URT with CH340T.
  • Battery IC BL4054B-42TPRN(SOT23-5). Charge current 455mA.
  • Power to ESP32 with SY8089AAAC. It’s a 5.5V, 2A continuous, 3A peak, 1MHz Synchronous Step Down Regulator.

That solution is quite good. If discharge below 3V, it will harm to battery. So it no need fully discharge the battery to something like 2.7V.

ES with onboard antenna, integrated SPI flash 4Mb. Choose module other than IC is good for testing board, or study purpose. But for production, I'd like to choose use IC such as ESP32-D0WD directly, which will saving cost. Because in my application I don't need the SPI flash.

In conclude, ESP32-DevKit-LiPo provides a quite good power solution.



GitHub link


  • Charger IC TP4054. Charge current 500mA.
  • USB to URT with, CP2104
  • AP2112. Let's check it Dropout Voltage.

At low current level the dropout voltage is small, but at high current the drop out voltage will be about 0.3V. That means battery voltage below 3.6V, the Vin of LDO will be smaller than Vout + Vdrop. Then the Vout will equal to Vin-Vdrop. If Vin smaller than 3.3V than the output voltage is out of ESP32 module mini operation voltage.

So from the schematic it shows when USB not plug in, it will turn off the displayer screen power by default. It's better not use the LDO output 3.3V to drive other heavy load, such as moto, speaker, ect.

So, when we choose LDO for battery application, must pay attention to the LDO drop out voltage. If it's big will make the battery not work very quickly.

And the quiescent current IQ is 55uA, which is quite small.

FireBeetle ESP32

Product link.


  • ESP module: ESP32-WROOM-32D
  • USB to UART: CH340C
  • Changer: TP4056
  • ESP32 power: LDO RT9080-33GJ5
  • USB, Battery power path choose.
  • Battery voltage measurement. Divided voltage with 1MΩ resister.
  • Maximum discharge current: 600mA
  • Maximum charge current: 500mA
  • External crystal.

The interesting thing is that Firebeetle used an additional LDO for CH340C. The LDO is XC6206P332MR. That means just USB inserted, there will be power for CH340C. It will save battery power.

RT9080 quiescent current IQ is just 2uA.And it add an external crystal 32.768 kHz, which used for RTC week up. The module specification said: the electricity current under ultra-low power is 10μA.


ESP32Picoremote Link
This project use a hardware circuit to shut down the LDO for power saving. The LDO can be active by a push button and locked by software, and also can switch off the LDO by software.
This solution is quite good for long time not running project. For example, turn off the module for some time no activity, and the module need turn on by user to push button manually.

Some other kinds of ESP32 model comparison can be find on website: http://esp32.net/

Leave a Reply