

The NodeMCU ESP8266 (ESP-12E) is a low-cost, open-source IoT platform based on the ESP8266 Wi-Fi module. It features a built-in microcontroller, USB interface for programming, and compatibility with the Arduino IDE, making it an excellent choice for IoT projects. With its integrated Wi-Fi capabilities, the NodeMCU ESP8266 allows seamless connectivity to the internet, enabling remote monitoring and control of devices.








| Specification | Value |
|---|---|
| Microcontroller | ESP8266 (Tensilica L106 32-bit) |
| Operating Voltage | 3.3V |
| Input Voltage (VIN) | 4.5V - 10V |
| Flash Memory | 4MB (ESP-12E module) |
| Clock Speed | 80 MHz (up to 160 MHz) |
| Digital I/O Pins | 11 |
| Analog Input Pins | 1 (10-bit ADC, 0-3.3V range) |
| Wi-Fi Standard | 802.11 b/g/n |
| USB Interface | Micro-USB |
| Power Consumption | ~70mA (idle), ~200mA (Wi-Fi TX) |
| Dimensions | 58mm x 31mm x 13mm |
| Pin Name | Pin Number | Description |
|---|---|---|
| VIN | - | Input voltage pin (4.5V - 10V). Used to power the board externally. |
| GND | - | Ground pin. Connect to the ground of the circuit. |
| 3V3 | - | 3.3V output pin. Provides regulated 3.3V power. |
| D0-D8 | GPIO 16-0 | General-purpose digital I/O pins. Can be used for PWM, I2C, SPI, etc. |
| A0 | - | Analog input pin (0-3.3V range). |
| RX | GPIO 3 | UART receive pin. Used for serial communication. |
| TX | GPIO 1 | UART transmit pin. Used for serial communication. |
| EN | - | Enable pin. Pull high to enable the module. |
| RST | - | Reset pin. Pull low to reset the module. |
Powering the Board:
Programming the Board:
Connecting Peripherals:
The following example demonstrates how to connect the NodeMCU ESP8266 to a Wi-Fi network and control an LED connected to GPIO 2.
#include <ESP8266WiFi.h> // Include the ESP8266 Wi-Fi library
const char* ssid = "Your_SSID"; // Replace with your Wi-Fi network name
const char* password = "Your_Password"; // Replace with your Wi-Fi password
const int ledPin = 2; // GPIO 2 is connected to the LED
void setup() {
pinMode(ledPin, OUTPUT); // Set GPIO 2 as an output pin
digitalWrite(ledPin, LOW); // Turn off the LED initially
Serial.begin(115200); // Start serial communication at 115200 baud
Serial.println("Connecting to Wi-Fi...");
WiFi.begin(ssid, password); // Connect to the Wi-Fi network
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWi-Fi connected!");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP()); // Print the assigned IP address
}
void loop() {
digitalWrite(ledPin, HIGH); // Turn on the LED
delay(1000); // Wait for 1 second
digitalWrite(ledPin, LOW); // Turn off the LED
delay(1000); // Wait for 1 second
}
The NodeMCU is not detected by the computer:
Wi-Fi connection fails:
The board resets unexpectedly:
GPIO pins not working as expected:
Can I power the NodeMCU with a 5V USB charger?
Yes, the onboard voltage regulator will step down the voltage to 3.3V.
What is the maximum current the GPIO pins can source/sink?
Each GPIO pin can source/sink up to 12mA. Avoid exceeding this limit to prevent damage.
Can I use the NodeMCU with a 5V sensor?
Use a voltage divider or level shifter to step down the sensor's output to 3.3V.
How do I reset the NodeMCU?
Press the onboard reset button or pull the RST pin low momentarily.