Disclaimer: This post has affiliate (and direct) links to the reviewed product on Amazon.
As fun as adding a voltage booster (for 5V projects) and/or voltage regulation and a charge circuit is to our designs, sometimes it’s nice to just have everything done for us. We’re big fans of the ESPxxxx/NodeMCU ecosystem: they’re cheap, they’re WiFi-enabled out-of-the-box, they’re small, and they’re usable in the Arduino ecosystem if that’s how you roll.
We found this little guy on Amazon:
It’s a NodeMCU-compatible board with a built-on 18650 battery holder and charge control circuit: it may end up being one of our go-to designs when we need a battery-operated, low-IO WiFi-enabled part (a disturbingly-frequent ask), barely larger than the battery itself. Slick. Let’s take a look, and do a sanity programming check.
Major plus: MOUNTING HOLES. Boards without mounting holes are a real pain. Minor drag: the 18650 battery holder is on the back, so you’re not going to pop this bad boy in a breadboard any time soon, unless you put some longer headers on the top of the board, and don’t mind not being able to hit the switches or see the lights.
The Guts
The brain is an ESP-WROOM-02 (see links in Resources) with a Silicon Labs CP2102 handling USB comms. An Advanced Monolithic Systems AMS1117 chip regulates the volts, charging is controlled with a Nanjing Extension Microelectronics TP5400 (whose datasheet I could only find in Chinese 🙁
The LED near the charge controller will be red when charging, green when charged or under USB-only power. You can charge and run the board at the same time. We see solar in this board’s future.
The Setup
There are a number of steps to make this work in the Arduino environment; you may want to go a different route–but we needed to keep in the Arduino ecosystem to keep our classes as uniform as possible.
- Install USB Driver
- Add Board Manager URL
- Pick a board, any board
- Set the RESET method
Install USB Driver
You may need to install a driver for the Silicon Labs CP2102. Drivers are available on the Silicon Labs CP2102 Driver Downloads page for major environments.
For OS X (the only one we’ve tested so far) you’ll get a ZIP file with a disk image (DMG). Unzip, open the image, and run the package file Silicon Labs VCP Driver.pkg
, and do the normal package install thing.
Add Board Manager URL
If you haven’t already been using ESP-ish boards you’ll need to add a board manager URL to the board manager. In the Arduino IDE open the preferences via Cmd-,
or the menu. The list of board manager URLs is a comma-separated list.

To it add:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Pick a Board, Any Board
For this mini-review we stuck with a generic 8266 board. Under Tools ⇨ Board
choose “Generic ESP8266 Module.”
Set the RESET Method
To upload our sketches to the board we need to set the RESET method under Tools ⇨ Reset
.
We didn’t need to make any other changes to get the basics working.
The Glory
The “documentation” on the Amazon product page states that the on-board LED is on GPIO16, so our go-to example, Blink, will use pin 16 for the LED:
#define LED 16 void setup() { pinMode(LED, OUTPUT); } void loop() { digitalWrite(LED, 0); delay(250); digitalWrite(LED, 1); delay(250); }
If you’ve followed all the steps above (and do let us know if we’ve left anything out) you should see an attractively-blue blinking LED.
We’ll be revisiting this board both here and in our upcoming Maker’s End Inspiration Series book, ESP Inspiration, so stay tuned–this little guy is going to get some projects!
Resources
- ESP8266 WROOM Series Overview (Espressif)
- ESP-WROOM-02 Datasheet (Espressif, PDF)
- Silicon Labs CP2102 Drivers (Silicon Labs)
Where did you find what the RESET method should be? Is this a per board specification or is this some general knowledge?
If this thing charges itself from a battery it has an onboard battery or capacitor? Is that weird or just to regulate voltage?
You didn’t show any wi-fi-ing. How’s that work? How’s it connect to an AP?
Can you put the header pin strip on the top so that the battery would then be “on the top” and breadboard-able?
Just found this lovely little module, as well. Wondering if you’d determined how to enable Deep Sleep mode?
It’s (roughly) an 8266, so related sleep code should “just work”, although not sure if there’s additional functionality in the packaged chip. The doc links (eventually) lead to full specs–we’ll poke around at it when we have a chance.
One comment/question at Amazon mentions the jumper pads on the trace from the RST pin. I’ll be connecting those shortly.
ESPHome Deep Sleep mode works perfectly after these two pads have been jumpered. 🙂
That’s great–we’ll also try this out! Thanks!