I’m a hobbyist working on a small ESP32 project with a custom PCB. I’m using an ESP32-C3 Mini powered by a TP4056 charging module (with protection chip DW01A + FS8205) and a LiPo battery. The battery is properly connected, voltage is present at OUT+ / OUT–, and there’s an on/off switch.
Problem:
The ESP32 only starts when USB is connected (either to the TP4056 or directly to the ESP32).
As soon as I unplug USB, everything shuts off immediately. Even if I turn it back on using the switch, the ESP32 stays completely dead, even though the battery provides a stable 4.0 V.
The ESP32 seems to never boot unless USB is plugged in. I’ve already tried adding a 0.1 µF capacitor between EN and GND – didn’t help.
Strangely:
If I briefly plug in USB, the ESP32 instantly starts, even with battery connected. And then it continues to run on battery as long as I don’t disconnect power again. But once it’s fully turned off, it won’t start again without USB help.
Question:
What could be the reason for this behavior?
Is the TP4056 protection circuit (DW01A) blocking initial power-up?
Does the ESP32 need a tiny boot current or pulse that the battery side doesn’t deliver?
Is there something I must add to the circuit to make the ESP32 start autonomously on battery?
I’d appreciate any help. My goal is to make the ESP32 run 100% standalone on battery, without needing USB to kick-start it.
I'm not familiar with your board/processor. Any chance that you have a line while(!Serial) in setup()? That would wait for an USB connection to be established.
When it's just the battery, you have 4V across OUT+ and OUT-, but the C3 doesn't power up, and the power indicator LED (assuming there is one) doesn't light up. But when you connect power to the input of the charger module, everything works? And what is the voltage across OUT+ and OUT- then?
Which pin on the C3 gets the power from the charger/battery?
If you need 5V for the esp32 then a boost converter will need closer to 6.5+. Generally in this situation starting with 2 cells to give 7.4V works better.
Remember
Full (briefly) 4.2V
Nominal 3.7V
Dead 3.0V
Also you lose xV when doing the boost or buck. Starting with 7.4 has longer life. and only drops to 6 so as long as you have less than a 1V drop across the buck you can use all the battery (BTW, batter means multiple cells)
I’m working with two different custom PCBs using the ESP32-C3 Mini and TP4056 (with DW01A + FS8205A) protection circuit. Both are powered by a 3.7 V LiPo battery, connected to the TP4056. The OUT+ goes to the 5V pin of the ESP32.
Old PCB:
Switch is between battery+ and B+
Behavior:
When battery is connected: B+ = 4V, OUT+ = 0 V (regardless of switch)
When USB is connected: OUT+ becomes active, ESP32 boots
After that: ESP32 keeps running even without USB — until the switch is turned OFF
After switching OFF and ON again: OUT+ remains dead until USB is reconnected
Assumption: DW01A protection keeps OUT+ disabled after full power loss, needs a brief USB impulse to reactivate
New PCB:
Switch is after TP4056, between OUT+ and ESP32
Behavior:
Battery connected: B+ and OUT+ = 4V, regardless of switch state
Problem: ESP32 does NOT boot when only powered by the battery, even if it was previously running
So: It doesn’t continue running after USB is removed, unlike the old PCB
Measured:
In both versions, B+ = 4V (when battery connected)
On the new PCB, OUT+ is always present – but ESP32 still doesn’t boot or stay powered
Question:
Could adding a 220 µF electrolytic capacitor (low ESR) to OUT+ → GND help stabilize the power and prevent this startup issue from battery?
Old PCB (previous version):
• The OUT+ from the TP4056 module is not connected directly to the ESP32.
• Instead, a slide switch is placed between the battery’s positive terminal and B+ of the TP4056.
• This means the entire TP4056 module (including the DW01A protection chip) is disconnected when the switch is OFF.
• Power only reaches OUT+ (and then the ESP32’s 5V pin) after USB is plugged in once, because the DW01A needs to “wake up” first.
• Once OUT+ is active, the ESP32 continues running even without USB – until switched off.
New PCB (current version):
• The slide switch is now placed after the TP4056, between OUT+ and the ESP32’s 5V pin.
• In this setup, the TP4056 is always connected to the battery, and OUT+ is constantly at ~4 V.
• However, even with constant voltage at OUT+, the ESP32 does not start when powered only by the battery (no USB), and doesn’t continue running after USB is disconnected.
• This suggests a startup issue – possibly due to the soft-start or lack of inrush current buffering.
Ok, first of all, if your TP4056 module is like mine, the OUT+ and BAT+ holes are shorted together on the module. The protection circuit is all on the negative side. So when you say "B+ = 4V, OUT+ = 0 V (regardless of switch)", I have to ask 4V and 0V relative to what?
But I think what's going on here is that the switch disconnects the battery from the DW01. When you do that, the DW01 goes into "shipping mode" which keeps everything shut down thereafter until charging current is applied to the module. From the datasheet:
The new board is puzzling because the switch is in the right place. On the old board, you said once you apply power to the module, it all works, and when you remove that power, the C3 continues to run on just the battery. But on the new board, that doesn't work. So I assume these are two different batteries. Have you tried switching them?
When using the battery alone, OUT+ to OUT- is 4V, but it doesn't power up the C3. But when you add the charging input, what does that voltage change to?
If it doesn't continue running after USB is disconnected, that's not a startup issue. How much does the voltage at the 5V pin drop when you remove USB? Can you look at that on a scope?
In your next design you should use a XIAO ESP32-C3
It has a battery connection and built-in charger.
Nothing else needed, just a protected battery.
Leo..
The original issue turned out to be a simple soldering problem, which is now fixed. The device now starts and runs correctly on battery and the on/off switch works.
However, I noticed another strange behaviour:
If I turn the device off and leave it for some time (for example 20–30 minutes), it suddenly won't start again with the switch. It looks completely dead.
If I briefly connect USB (either to the charger module or directly to the ESP32), it immediately starts again and then works normally on battery.
For stability I already added:
a 0.1 µF (100 nF / 104) capacitor between EN/RESET and GND
a 220 µF capacitor between OUT+ and GND of the power supply
So the system works, but after being off for a while it seems like it needs a short USB "kick" to start again.
Is this something known with ESP32 battery setups?
And is this usually solvable without changing the whole hardware design? I'd like to continue developing the project first.
That's interesting. The system actually runs fine on battery once it has started. The problem only appears when it has been powered off for some time and then refuses to start again until USB is briefly connected.
For stability I already added:
a 0.1 µF capacitor between EN and GND
a 220 µF capacitor between the power rail (OUT+) and GND
Do you have an idea which part of the hardware design could cause this behaviour?
For example the power path, the charging/protection module, or the way the ESP32 is powered?
I'd appreciate any hints about what I should check.
I think we may have been down this road before. If power to the DW01 is ever shut down, then you have to connect a charger to get it to start up again. A schematic of the current circuit woud help.