NodeMCU ESP8266: Guía Definitiva de Pinout, Especificaciones y Desarrollo IoT con Arduino IDE
NodeMCU es una plataforma de firmware open-source (Lua) y hardware de desarrollo basada en el SoC ESP8266EX (Espressif), que integra Wi-Fi 802.11 b/g/n, MCU Tensilica Xtensa LX106 32-bit @ 80-160 MHz, 160 KB RAM, 4 MB Flash SPI, y rico conjunto de periféricos. El nombre combina "Node" (nodo red) + "MCU". La placa de desarrollo más popular es NodeMCU DevKit v1.0 (basada en módulo ESP-12E). Esta guía cubre pinout completo, especificaciones, periféricos, alimentación, integración con Arduino IDE y alternativas.
Breve Resumen: NodeMCU ESP8266
- MCU: Tensilica Xtensa LX106 32-bit RISC @ 80/160 MHz (configurable). FreeRTOS SDK nativo.
- Wi-Fi: 802.11 b/g/n (2.4 GHz), Station / SoftAP / Station+AP, WPA2-Enterprise, WPS.
- Memoria: 4 MB Flash SPI (Winbond 25Q32 typical), 160 KB RAM (64 KB user + 96 KB system), 4 KB EEPROM emulada en Flash.
- GPIO: 17 GPIO (D0-D10, D1-D8 mapeados), 1 ADC (10-bit, 1 V max, pin A0), 2 UART (UART0 TX/RX, UART1 TX only), 2 SPI (HSPI libre, SPI0 usado por Flash), 1 I2C (software, pines GPIO4/5 típicos).
- Alimentación: USB 5 V → Regulador AMS1117-3.3V → 3.3 V. Pin VIN (5-12 V) → mismo regulador. Pines 3.3 V directos (bypass regulador, máx 500-600 mA).
- Antena: PCB meander (on-board) o conector U.FL / IPEX (versiones ESP-12F).
- Tamaño: 48.5 × 25.5 mm (DevKit v1.0). Breadboard-friendly (pines 2.54 mm).
Pinout NodeMCU DevKit v1.0 (ESP-12E) – 30 Pines
La placa expone 30 pines (2×15 header macho). 8 pines potencia/tierra, 2 reservados, 20 funcionales mapeados a ESP-12E.
| Pin Placa | GPIO ESP8266 | Función / Notas Críticas |
|---|---|---|
| VIN | - | Entrada 5-12 V DC → Regulador AMS1117-3.3V. No usar para alimentar cargas externas. |
| 3V3 (x3) | - | Salida 3.3 V del regulador (máx ~500-600 mA total). Alimentar sensores, módulos 3.3 V. |
| GND (x4) | - | Tierra común. |
| RST | RST (CHIP_EN) | Reset activo bajo. Pull-up interno. Botón RST en placa. |
| D0 | GPIO16 | WAKE (deep sleep), GPIO, SIN PWM / SIN I2C / SIN ADC. LED azul onboard (activo bajo). |
| D1 | GPIO5 | GPIO, PWM, I2C SCL (habitual), SPI CLK (HSPI). |
| D2 | GPIO4 | GPIO, PWM, I2C SDA (habitual), SPI MOSI (HSPI). |
| D3 | GPIO0 | GPIO, PWM, BOOT MODE (Bajo = Flash Mode). Pull-up interno 10k. LED rojo onboard (activo alto). No usar como salida driving carga al boot. |
| D4 | GPIO2 | GPIO, PWM, BOOT MODE (Alto = Normal). Pull-up interno. LED azul ESP-12E (activo bajo). Debe estar ALTO al boot. |
| D5 | GPIO14 | GPIO, PWM, SPI CLK (HSPI), SPI CS (HSPI). |
| D6 | GPIO12 | GPIO, PWM, SPI MISO (HSPI). |
| D7 | GPIO13 | GPIO, PWM, SPI MOSI (HSPI). |
| D8 | GPIO15 | GPIO, PWM, SPI CS (HSPI), BOOT MODE (Bajo = Normal). Pull-down interno. Debe estar BAJO al boot. |
| D9 (SD2) | GPIO9 | Conectado a Flash SPI (SD2). NO USAR. (Solo en ESP-12E, algunos módulos). |
| D10 (SD3) | GPIO10 | Conectado a Flash SPI (SD3). NO USAR. |
| RX | GPIO3 | UART0 RX (Serial). Conectado a CH340/CP2102 USB-Serial. |
| TX | GPIO1 | UART0 TX (Serial). Conectado a CH340/CP2102 USB-Serial. |
| A0 | ADC0 (TOUT) | ADC 10-bit (0-1.0 V / 0-3.3 V con divisor interno ESP32? No, ESP8266 ADC 0-1V). Divisor R 100k/220k en placa → 0-3.3 V. Solo 1 canal ADC. |
Pines "Prohibidos" / Uso Avanzado: GPIO6-11 (SDCLK, SD0-SD3, CMD) conectados a Flash SPI interno. Usarlos corrompe ejecución código. GPIO16 (D0) solo wake deep sleep, sin PWM/I2C/ADC. GPIO0, 2, 15: Strapping pins (boot mode).
Especificaciones Técnicas Completas
- Voltaje operación: 3.0 – 3.6 V (core), 3.3 V típico. Entrada VIN: 4.5 – 10 V (regulador AMS1117 dropout ~1 V).
- Corriente pico TX Wi-Fi: 170-300 mA (promedio 80 mA). Deep sleep: ~10-20 µA (RTC corriendo).
- Temperatura: -40 °C a +85 °C (industrial).
- Interfaces: 2×UART (UART0 full, UART1 TX-only), 2×SPI (SPI0 dedicado Flash, HSPI libre), 1×I2C (bit-bang SW en GPIO4/5), 1×I2S (audio), 1×ADC (10-bit, 1 canal), 17×GPIO, PWM (hasta 1 kHz-1 MHz, 10-bit res).
- Seguridad: WPA2-PSK, WPA2-Enterprise, WPS, TLS/SSL (mbedTLS/bearSSL en SDK).
- Protocolo: MQTT, HTTP/HTTPS, WebSocket, CoAP, UDP, TCP, mDNS, OTA (HTTP/HTTPS).
Alimentación: Detalles Críticos
- USB 5 V: Conector Micro-USB → Diodo Schottky (protección polaridad) → AMS1117-3.3V → 3.3 V rail. Corriente máx ~800 mA (limitador térmico AMS1117).
- Pin VIN: Entrada directa a AMS1117 (bypass USB). Aplique 5-12 V DC regulado. No exceda 12 V (disipación excesiva AMS1117 SOT-223).
- Pines 3V3: Salida regulador. Use para sensores/módulos 3.3 V. No alimente la placa por aquí (retroalimenta regulador, riesgo daño). Si tiene fuente 3.3 V externa robusta, alimente directamente pines 3V3 + GND (desconecte USB/VIN).
- Problema común: Caída de voltaje (brownout) al transmitir Wi-Fi si fuente USB / cable / puerto no entregan 500 mA+ pico. Solución: Fuente 5 V 2A + cable USB grueso/corto, o alimente VIN con 5 V 2A regulado.
Periféricos y Mapeo de Pines
GPIO (17 disponibles)
Todos excepto GPIO16 (D0) soportan: Entrada/Salida digital, Pull-up/Pull-down interno, Interrupción (cualquier flanco), PWM (software/hardware timer). GPIO6-11 (Flash) NO USAR. GPIO0,2,15: Strapping (ver arriba).
UART
- UART0 (GPIO1 TX, GPIO3 RX): Hardware full-duplex, baud hasta 4.5 Mbps (típico 115200/921600). Usado para programación (bootloader) y Serial Monitor. Conectado a chip USB-Serial (CH340G / CP2102 / FT232RL).
- UART1 (GPIO2 TX only): Solo TX (GPIO2/D4). Usado para logs debug sin interferir UART0. Requiere GPIO2 alto al boot (normal).
- Swap UART0 a GPIO13/15:
Serial.swap()mueve UART0 a GPIO13 (RX) / GPIO15 (TX). Útil si GPIO1/3 usados para otra cosa.
I2C (Software / Bit-bang)
Sin hardware I2C nativo. Implementación SW estándar en Wire.h (Arduino) usa GPIO4 (SDA/D2) y GPIO5 (SCL/D1) por defecto. Funciona hasta ~400 kHz. Pines alternativos posibles via Wire.pins(SDA, SCL). Añada pull-ups 4.7 kΩ a 3.3 V externos (internos ~30-50 kΩ débiles).
SPI
- SPI0 (Flash): GPIO6 (CLK), 7 (CS), 8 (MOSI), 9 (MISO), 10 (HD), 11 (WP). No accesibles.
- HSPI (Hardware SPI 1): Libre para usuario. Pines por defecto (mapeo NodeMCU): GPIO14 (D5/CLK), GPIO12 (D6/MISO), GPIO13 (D7/MOSI), GPIO15 (D8/CS). Controlado por registros SPI / librería
SPI.h(Arduino). Modo Master/Slave. Clock máx 80 MHz (Master), 20 MHz (Slave). - VSPI: No existe en ESP8266 (solo ESP32).
PWM
10-bit resolución (0-1023), frecuencia configurable (1 Hz - 1 kHz típico, hasta 1 MHz con timers hardware). Pines PWM: D0-D8 (excepto D0/GPIO16 sin PWM). analogWrite(pin, value) en Arduino core. Para mayor resolución/frecuencia controlada, use timers hardware (Timer0, Timer1, Timer2) vía registro o librería ESP8266PWM.
NodeMCU Breakout Board (30 pines, versión ampliada)
Versión extendida del DevKit que expone todos los pines del ESP-12E (incluyendo GPIO9, 10, y pines Flash si se desoldan). 8 pines potencia, 2 reservados, 20 GPIO. Incluye 2 LEDs (GPIO2, GPIO16). Útil para desarrollo avanzado que necesita acceso a pines Flash (ej. modo QIO, diagnóstico) o más GND/3V3. Pinout idéntico a tabla superior + pines extra.
Usar ESP8266 NodeMCU con Arduino IDE
- Archivo → Preferencias → URLs Gestor Tarjetas Adicionales: Añada:
https://arduino.esp8266.com/stable/package_esp8266com_index.json - Herramientas → Placa → Gestor de Tarjetas → Buscar "esp8266" → Instalar esp8266 by ESP8266 Community (versión 3.x.x).
- Seleccionar: Placa: "NodeMCU 1.0 (ESP-12E Module)" → Flash Size: "4M (3M SPIFFS)" o "4M (1M SPIFFS)" → CPU Frequency: "80 MHz" (o 160 MHz) → Upload Speed: "921600" → Puerto COM correcto.
- Suba sketch Blink (LED_BUILTIN = D4 / GPIO2 en NodeMCU).
Placas Alternativas y Competidores
| Placa / SoC | MCU | Wi-Fi | Bluetooth | Flash/RAM | Precio | Uso Típico |
|---|---|---|---|---|---|---|
| NodeMCU DevKit (ESP8266) | Xtensa LX106 | Sí | No | 4 MB / 160 KB | $3-5 | IoT Wi-Fi general, aprendizaje |
| ESP-12E/F / ESP-07/07S | Xtensa LX106 | Sí | No | 4 MB / 160 KB | $2-3 | Producción, embebido, PCB custom |
| ESP32 DevKit / NodeMCU-32S | Xtensa LX6 Dual Core | Sí | BLE 4.2 / 5.0 | 4-16 MB / 520 KB | $5-8 | IoT avanzado, BLE, audio, más I/O |
| ESP32-C3 / C6 / H2 (RISC-V) | RISC-V 32-bit | Sí (6/6E/7) | BLE 5.x / Thread / Zigbee | 4 MB / 400 KB | $3-5 | Matter, Thread, bajo coste, seguro |
| Arduino Nano 33 IoT | SAMD21 + NINA-W10 | Sí | BLE | 256 KB / 32 KB | $18 | Ecosistema Arduino, certificado |
| Raspberry Pi Pico W | RP2040 + CYW43439 | Sí | No | 2 MB / 264 KB | $6 | MicroPython/C, bajo coste, dual core |
| Wemos D1 Mini / D1 Mini Pro | ESP8266EX | Sí | No | 4 MB / 160 KB | $3-4 | Factor forma mini, shields apilables |
Aplicaciones Principales
- Prototipado rápido IoT (sensores → MQTT/HTTP → Cloud: Blynk, ThingsBoard, Home Assistant, AWS IoT, Azure, Google Cloud)
- Automatización hogar (Sonoff, Tasmota, ESPHome, OpenHAB)
- Datalogging remoto (batería + deep sleep + sensor + Wi-Fi)
- Control remoto (relés, motores, LEDs, cortinas, riego) vía Web/App/Voice (Alexa/Google/HomeKit via Home Assistant)
- Dispositivos wearables simples (con batería LiPo + TP4056)
- Puentes Serial-WiFi / Modbus-TCP / MQTT-Serial
- OTA (Over-The-Air) updates para flotas de dispositivos
Conclusión y Recomendaciones Finales
El NodeMCU (ESP8266) democratizó el IoT Wi-Fi de bajo coste. Su pinout "Arduino-like", regulador onboard, USB-Serial, y soporte Arduino IDE lo hacen ideal para prototipado, educación, y producción baja/media. Para producción en volumen, use módulo **ESP-12E/F / ESP-07S** soldado en PCB custom (ahorra $, espacio, fiabilidad). Para nuevos diseños 2024+, evalúe seriamente **ESP32-C3/C6/H2 (RISC-V, Matter/Thread, seguro, similar precio)** o **ESP32 (dual core, BLE, más RAM/I/O)**. El ESP8266 sigue vivo (SDK 3.x, Arduino core 3.x, ESPHome, Tasmota, ESPEasy activos), pero su single-core 80/160 MHz, 160 KB RAM, sin BLE, 1 ADC, y seguridad TLS limitada son techo para aplicaciones modernas. Si elige ESP8266: respete strapping pins (GPIO0,2,15), diseñe alimentación robusta (500 mA+ pico Wi-Fi), use deep sleep para batería, y aproveche el vasto ecosistema software.
Tecnología Industrial
- Guía esencial para pruebas de aceite de transformador para sistemas de energía fiables
- 5 claves sobre microherramientas para mecanizado de precisión
- Cumplimiento TAA Explicado: 5 Puntos Clave que Todo Proveedor Debe Conocer
- 9 Aplicaciones esenciales de Machine Learning que debes conocer
- Todo lo que Necesita Saber sobre USB-C: Características, Pinouts y Entrega de Potencia
- Explora los Mejores Proyectos con Raspberry Pi 4 de 2020
- Terminología Esencial de Chorro de Agua para Profesionales
- Ranurado (knurling) explicado: Dominando técnicas de acabado texturizado
- Brazos Robóticos Pick & Place: Guía Completa para Automatización y Productividad
- Revolucionando Operaciones Ferroviarias: Innovaciones Clave en Equipos que Debe Conocer
- 7 Librerías React Esenciales que Todo Desarrollador Debe Dominar