What is NodeMCU ESP8266: Complete Guide
What is NodeMCU?
NodeMCU is open-source firmware, hardware, and software development environment project developed initially for the
ESP8266 Wi-fi SoC chip based on LUA. The most spectacular features are:
It is a low-cost, small and
powerful board. It is specifically designed for IoT applications. It is
compatible with Arduino IDE and micro python making prototyping a lot faster.
Because of all these features, it is the most popular and trending board in the
The below images show NodeMCU development board v0.9 and v1.0 (right).
The v0.9 board is also called as 1st generation or V1 board. It is very wide and not convenient to use on a breadboard. This limitation is overcome by its next generation i.e 2nd generation or v1.0 or V2 board. This board is more narrow and easy to fit on the breadboard. Also, the chip in this board is upgraded i.e. from ESP-12 to ESP-12E. 3rd generation board V3 is produced by LoLin which has minor improvements over the V2 board and is believed to have a more robust USB port than its predecessor(CH340G USB-TTL chip is used instead of Silabs CP2102 from V1.0). But again this board is wide making it difficult to use.
Since it can be connected to Internet it can be used in wide variety of applications like smart house,smart industrial devices, smart healthcare devices,etc.
Specifications & Construction:
Let’s look at the specification and construction of this module which makes it superior to its counterparts.
- The onboard ESP8266 chip manufactured by Espressif Systems has an ESP8266EX core Wi-Fi SoC and a Tensilica L106 32-bit processor in the same chip.
- It has 2.4GHz 802.11b/g/n Wi-fi with on-board antenna which supports WPA/WPA2.
- It has 17 GPIO, 11 are usable( 6 are used for communication with the onboard flash memory chip) and some of them support PWM. This GPIO can be used to interface nodeMCU with the external environment through sensors and actuators.
- It also has UART, SDIO, SPI, I2C, I2S, and IR remote control peripheral interface.
- It operates on 2.5-3.6V and average 80mA current with temperatures ranging from -40 to 125 C.
- It comes in a QFN 32-pin ( 5mm * 5mm) package.
- It supports firmware upgrades via UART download/ OTA (via network).
- It also has SDK for customized development/cloud server development.
Let us look at the pins of the NodeMCU.
Pins from D0-D8 can be used as GPIO pins.
GPIO1 and GPIO3 are tx and rx pins respectively used for UART communication.
D1 and D2 can be used SCL and SDA for I2C communication.
Note that NodeMCU doesnt has hardware I2C pins. We can implement I2C in software on any GPIO pins.
D5-D8 ( SCLK,MISO,MOSI,AND CS ) can be used for SPI communication.
You can see that in the above pinout diagram we have not labelled pins from GPIO6 to GPIO11. The reason they are not shown is they cannot be used for interfacing because they are connected ot the flash chip.
The pin marked as A0 on the silkscreen layer of PCB is the only pin which can analog read.
ESP8266 On-board LED:
On-board LED is connected to GPIO2.
You can reset the board in 2 ways one is by pressing the reset button and other is by pulling the reset pin LOW.
The block diagram of ESP8266EX is shown in figure 5 which explains the architecture of the chip.
How to upload programs to ESP8266?
Following are the steps to upload program to ESP8266:
1. Install the esp8266 by ESP8266 Community
Open Arduino IDE. Go to File> Preferences
Above two urls in additional boards manager URLs.
This URLs allow us to add additional boards in arduino IDE. ( above URLs add ESP32 and ESP8266 boards.)
Once done click Ok.
Now go to Tools > Board > Boards Manager …
Now Install the esp8266 by ESP8266 Community.
2. Once installation is done upload your program by selecting the board.
3. Open the blink sketch for ESP8266.
4. Select the appropriate COM port and click on upload.
Once uploading is done you will see led blinking on the board!!
In this blog, we have seen what is NodeMCU, different generations of NodeMCU, Specifications, Pinout diagram, and also uploaded a Blink sketch.
Feel free to comment if you have any doubts. See you in the next blog!