The ESP8266 is supposed to consume only 20μA in deep sleep mode, making it totally awesome for sensor projects that sleep most of the time and then upload their data using wifi.
I use the NodeMCU v3 (Lolin) for prototyping, but when I want to attach it to a battery it quickly drains. After some experimentation (and reading a related blogpost about battery powering the NodeMCU v2) I found two reasons:
- The AMS1117 voltage regulator has an idle power consumption of about 4mA. This reduces my battery life by a factor of 200!
- The onboard CH340 USB-to-serial converter takes another 200μA.
So reducing power consumption to a minimum is straightforward:
Step 1: Unsolder the chips
I unsoldered the AMS1117 (spot marked in red) completely. You could probably get away by just removing it’s ground connection or 3.3V. I haven’t tried, let me know if you have!
I didn’t unsolder the CH340 chip on the left, instead I only unsoldered the ground pin (bottom right in the picture) and bent it up.
Measuring the power consumption, my multimeter now shows 19μA, woohoo!
Step 2: Switch the USB-to-serial on and off
Since the voltage regulator is gone, the board now needs an external power supply. I just used another NodeMCU board connecting the 3.3V and Ground pins (as in the picture above). The AMS1117 on the other board is able to provide 1A of current, so that’s plenty to power both.
The drawback of unsoldering the CH340 however is that the chip cannot be easily accessed or programmed anymore via USB. Not a big deal if you already flashed a Wifi-enabled OTA-capable firmware. But if that’s not the case, here’s a really easy hack: just solder a dupont cable to the bent-up ground pin of the CH340. You can then easily plug it back into any of the exposed ground pins on the nodemcu board to recover full USB support of the device. Awesome!