ESP8266: NodeMCU Dev Kit V1.0 Review

This post is due for a while now but I had so much fun actually using the NodeMCU that I totally forgot (or postponed) to write a review about it. So, let’s get started:

The new NodeMCU V1.0 Dev Kit module
Image Source:

The first “instalment” of the NodeMCU Dev Kit I reviewed had the version number 0.9. It was the first of its kind, since it came with an integrated USB-to-Serial converter and was fitting into a standard bread board. But both key features that would justify the higher price were tainted: at least on Mac OS X the USB-To-Serial converter did not really work well together with the standard tools, especially for firmware flashing.

While it was OK to flash it first with an external converter and then only use it to transfer files to the LUA firmware it was still a disappointment to me. The second problems was the size: it would cover all pins on both sides of the gap on a standard breadboard. This made it hard to connect it to other components. You could still use female connectors and leave the breadboard out in the first place but still, it was a design issue.


It seems that the NodeMCU team learned a lot from the first version and also listened to the community feedback. The second instalment has the version number 1.0 and this truly reflects the maturity of the board. The size of the module has shrunk considerably, making it fit wonderfully in a breadboard: with a length of 48.5mm and a width of 25.6mm it fits also better in casings than the old version (47.1×30.6mm).

ESP8266 ESP-12E Module Riding Piggy-Back

The V0.9 version used the ESP-12 module which is a pretty common choice. For the new version the group around NodeMCU used the newer ESP-12E which comes 4MB of flash memory. This gives you a lot of space to store code and data. The interface to write to the memory also changed, which gave me some initial troubles until the “standard” tools were updated (read more here). Besides the upgrade in flash memory there seem to be more pins available. But I’m not sure to if and how these additional pins can be used. It looks to me as if the same amount of GPIO pins are available (see section below).

Related:  ESP8266, Arduino, Raspberry Pi: introduction to IoT hardware

Serial-To-USB converter

As mentioned before the converter was a serious problem in the previous version.  The CH340 chip was not well supported, neither for Mac OS X nor by the tools. The new version comes with the CP2102 chip and it works really well and without hassle. Here is the dmesg output on Mac OS X:

com_silabs_driver_CP210xVCPDriver(.)::setPowerState - Waking up
com_silabs_driver_CP210xVCPDriver(.)::GetCP210xInfo - Part Number Found: 0x02
com_silabs_driver_CP210xVCPDriver(.)::GetCP210xInfo - UsbConfigurationDescriptor - 
com_silabs_driver_CP210xVCPDriver(.)::GetCP210xInfo     .bLength = 9 
com_silabs_driver_CP210xVCPDriver(.)::GetCP210xInfo     .bDescriptorType = 0x02 
com_silabs_driver_CP210xVCPDriver(.)::GetCP210xInfo     .wTotalLength = 32 
com_silabs_driver_CP210xVCPDriver(.)::GetCP210xInfo     .bNumInterfaces = 1 
com_silabs_driver_CP210xVCPDriver(.)::GetCP210xInfo     .bConfigurationValue = 1 
com_silabs_driver_CP210xVCPDriver(.)::GetCP210xInfo     .iConfiguration = 0 
com_silabs_driver_CP210xVCPDriver(.)::GetCP210xInfo     .bmAttributes = 0x80 
com_silabs_driver_CP210xVCPDriver(.)::GetCP210xInfo     .MaxPower = 50 
com_silabs_driver_CP210xVCPDriver(.)::start - Sucessfully loaded the driver

A nice feature that I didn’t know/have before is that I don’t have to press the buttons or change jumpers anymore before flashing new firmware to the module. Together with the Arduino IDE this happens automagically. This saves you a lot of handwork when writing your code.

The Module Pin-Out

The available pins are very similar to other modules. It come in very handy that 3V3 and GND are available various times if you are operating on the “flying circuit”. There is also a Vin pin which takes +5V (according to the pin-out). I assume that it can take other voltage as well, because there is a LD33 chip on the module. If you know more about the range, please let me know.
The NodeMCU V1.0 pin out map.


I have been playing with the NodeMCU V1.0 for quite a while now and I have to say it makes a lot more fun than with the other available modules: less wiring, more coding, debugging, playing. I have used it together with the SSD1306 Oled 128×64 display on various occasions: first in a LUA based WeatherStation which has even been used in a beautiful 3D printed setup on Thingiverse (read more). 
3D printed case for NodeMCU, running my code (on the right side)
Then I have rewritten the hole code for the Arduino IDE and now I also have less problems with heap space running out. I could even attach two displays simultaneously and get an individual output for it.
Multi display output, driven by a NodeMCU V1.0
Related:  ESP8266 OLED display library release


I can wholeheartedly recommend the NodeMCU V1.0 for you, especially if you are just getting started with the whole ESP8266 thing. It is relatively cheap, easy to use and beginner friendly. Later, when you are moving on to productising your idea you might focus on the ESP-12E directly and use that in your own design. For prototyping and beginners its just perfect!


Now a beer! Did you like this post? It often takes me several hours of my free time to write one. If I was your neighbour would you offer me a beer for the hard work I did for you? The beauty is: beers can be teletransported with a painless donation using Paypal. A beer in a Swiss bar costs about USD $4.80. Or use this affiliate link if you order something on Banggood and I'll get a small kickback. Thank you!