ESP8266IOT Projects

Nodemcu ESP8266 Pinout, Features, and specifications

Nodemcu ESP8266 Description:


Nodemcu ESP8266 Pinout, Features, and specifications– in this basic getting started tutorial you will learn the very basic things about the NodeMCU ESP8266 Wifi Module.

NodeMCU is an open-source firmware for which open-source prototyping board designs are available. The name “NodeMCU” combines “node” and “MCU” (micro-controller unit). The term “NodeMCU” strictly speaking refers to the firmware rather than the associated development kits. Both the firmware and prototyping board designs are open source. Nodemcu ESP8266 and Nodemcu ESP32 are becoming very popular and are almost used in more then 50% IoT based projects today.

The firmware uses the Lua scripting language. The firmware is based on the eLua project and built on the Espressif Non-OS SDK for ESP8266. It uses many open source projects, such as lua-cjson and SPIFFS. Due to resource constraints, users need to select the modules relevant for their project and build a firmware tailored to their needs. Support for the 32-bit ESP32 has also been implemented.

The prototyping hardware typically used is a circuit board functioning as a dual in-line package (DIP) which integrates a USB controller with a smaller surface-mounted board containing the MCU and antenna. The choice of the DIP format allows for easy prototyping on breadboards. The design was initially was based on the ESP-12 module of the ESP8266, which is a Wi-Fi SoC integrated with a Tensilica Xtensa LX106 core, widely used in IoT applications.

The components and tools used in this tutorial can be purchased from Amazon, the components Purchase links are given below:

Nodemcu ESP8266 WiFi Module:

Other Tools and Components:

Super Starter kit for Beginners

Digital Oscilloscopes

Variable Supply

Digital Multimeter

Soldering iron kits

PCB small portable drill machines

*Please Note: These are affiliate links. I may make a commission if you buy the components through these links. I would appreciate your support in this way!

About the Nodemcu ESP8266 Pinout:

Nodemcu ESP8266

NodeMCU ESP8266 Wifi Module is an open-source Lua based firmware and development board specially targeted for IoT based applications. It includes firmware that runs on the ESP8266 Wi-Fi SoC from Espressif Systems, and hardware which is based on the ESP-12 module.

Nodemcu ESP8266 Specifications & Features

Microcontroller: Tensilica 32-bit RISC CPU Xtensa LX106

Operating Voltage: 3.3V

Input Voltage: 7-12V

Digital I/O Pins (DIO): 16

Analog Input Pins (ADC): 1

UARTs: 1

SPIs: 1

I2Cs: 1

Flash Memory: 4 MB


Clock Speed: 80 MHz

USB-TTL based on CP2102 is included onboard, Enabling Plug n Play

PCB Antenna

Small Sized module to fit smartly inside your IoT projects

Nodemcu ESP8266 Pinout:

For practical purposes ESP8266 NodeMCU V2 and V3 boards present identical pinouts. While working on the NodeMCU based projects we are interested in the following pins.

Power pins (3.3 V).

Ground pins (GND).

Analog pins (A0).

Digital pins (D0 – D8, SD2, SD3, RX, and TX – GPIO XX)

Most ESP8266 NodeMCU boards have one input voltage pin (Vin), three power pins (3.3v), four ground pins (GND), one analog pin (A0), and several digital pins (GPIO XX).

Pin      Code               Arduino alias

A0       A0                               A0

D0       GPIO 16                     16

D1       GPIO 5                       5

D2       GPIO 4                       4

D3       GPIO 0                       0

D4       GPIO 2                       2

D5       GPIO 14                     14

D6       GPIO 12                     12

D7       GPIO 13                     13

D8       GPIO 15                     15

SD2     GPIO 9                       9

SD3     GPIO 10                     10

RX      GPIO 3                       3

TX       GPIO 1                       1

Nodemcu ESP8266 PWM Pins:

Nodemcu ESP8266

Applications of Nodemcu

Prototyping of IoT devices

Low power battery operated applications

Network projects

Projects requiring multiple I/O interfaces with Wi-Fi and Bluetooth functionalities

Programming Nodemcu with Arduino IDE

The Nodemcu Development Board can be easily programmed using the Arduino IDE since it is easy to use. Programming Nodemcu with the Arduino IDE will hardly take 10-20 minutes. All you need is the latest version of the Arduino IDE, a USB cable, and the Nodemcu board itself. You can check this Getting Started Tutorial for NodeMCU to prepare your Arduino IDE for Nodemcu. You can also check my getting started tutorial for ESP32 Wifi + Bluetooth Module to prepare your Arduino IDE for the ESP32 module.

NodeMCU Getting Started Tutorials:

If you have never used the Nodemcu ESP8266 Wifi Module, then I highly recommend watching my previous getting started and basics video tutorials explaining how to get started with the Nodemcu ESP8266 Wifi module.

I hope you have learned something new from this article. If you have any questions regarding this article, or any other project based on the Nodemcu (ESP8266 or ESP32), let me know in a comment.

Nodemcu ESP8266 Related Projects:

Arduino Firebase Database, Students Attendance system using RFID and GSM

Nodemcu with GSM Sim900A, GSM WIFI, IOT GSM

ESP8266 Lora based IoT Smart Irrigation System with Cell Phone App

IoT CNC Shield, Nodemcu CNC shield, ESP8266 CNC Shield, Mobile CNC Shield

For more basic, intermediate and advanced level projects.


Engr Fahad

My name is Shahzada Fahad and I am an Electrical Engineer. I have been doing Job in UAE as a site engineer in an Electrical Construction Company. Currently, I am running my own YouTube channel "Electronic Clinic", and managing this Website. My Hobbies are * Watching Movies * Music * Martial Arts * Photography * Travelling * Make Sketches and so on...

One Comment

  1. Once we give low input to pin 16 of NodeMCU ESP8266, it remains low, see my code below which is not able to switch off led because of this issue, can’t we use pin 16 as general purpose input, is it special?

    enum LedStatus
    LedOff = 0,
    LedOn = 1
    enum LedStatus curentLedStatus = LedOff;
    #define BAUD_RATE 9600
    // Pins of push buttons and led
    #define pinPButtonLedOn 16
    #define pinPButtonLedOff 5
    #define pinLed 4

    void setup()
    // put your setup code here, to run once:
    pinMode(pinPButtonLedOn, INPUT_PULLUP); // set arduino pin to input pull-up mode
    pinMode(pinPButtonLedOff, INPUT_PULLUP); // set arduino pin to input pull-up mode
    pinMode(pinLed, OUTPUT); // set arduino pin to output mode

    void loop()
    // put your main code here, to run repeatedly:
    Serial.printf(“\n \n \n On button state :”);

    Serial.printf(“\n \n \n Off button state :”);
    if (digitalRead(pinPButtonLedOn) == LOW && curentLedStatus == LedOff)
    digitalWrite(pinLed, HIGH);
    curentLedStatus = LedOn;
    Serial.printf(“\n \n \n Led turned On by Push Button”);

    if (digitalRead(pinPButtonLedOff) == LOW && curentLedStatus == LedOn)
    digitalWrite(pinLed, LOW);
    curentLedStatus = LedOff;
    Serial.printf(“\n \n \n Led turned Off by Push Button”);

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button