Introducción
La Placa NodeMCU V3 WiFi ESP8266-12F CH340 con OLED 0.96″ es una tarjeta de desarrollo basada en el popular microcontrolador ESP8266 de Espressif Systems, que integra de fábrica un display OLED SSD1306 de 0.96 pulgadas con resolución de 128×64 píxeles. Esta placa está diseñada para proyectos de Internet de las Cosas (IoT) gracias a su conectividad WiFi 802.11 b/g/n incorporada, su bajo consumo y su reducido tamaño.
A diferencia de otras placas NodeMCU convencionales, esta versión incluye el display OLED soldado directamente sobre la PCB, lo que la hace ideal para aplicaciones donde se necesita mostrar información sin depender de periféricos externos: sensores ambientales, estaciones meteorológicas, paneles de control remoto, cerraduras inteligentes, entre otros.
Especificaciones Técnicas
| Parámetro | Valor |
|---|---|
| Microcontrolador | Tensilica L106 32 bits — 80/160 MHz |
| Memoria Flash | 4 MB (SPIFFS) |
| SRAM | 80 KB datos + 32 KB caché |
| EEPROM | 512 Bytes (emulada en Flash) |
| WiFi | 802.11 b/g/n — AP / Estación / Modo mixto — WPA/WPA2 |
| Protocolos | TCP/IP, MQTT, HTTP, WebSockets |
| GPIOs disponibles | 11 pines de E/S digital |
| Entrada analógica | 1 ADC de 10 bits (0–1V máx.) |
| Interfaces | UART, I2C, SPI, PWM (4 canales) |
| Tensión de entrada | 4.5–9 V por VIN / 5 V por Micro USB |
| Tensión de operación | 3.3 V (regulado internamente) |
| Consumo | ~170 mA en operación / ~10 µA en deep sleep |
| Potencia WiFi | +20 dBm máximo |
| Pantalla | OLED 0.96″ (128×64 px, SSD1306, I2C en D5/D6) |
| Dimensiones módulo | 58 mm × 30 mm |
| Dimensiones ESP-12 | 24 mm × 16 mm |
| Conector USB | Micro USB (alimentación + programación) |
| Peso | ~10 g |
| Conversor USB-Serial | CH340G |
Componentes Principales
1. ESP8266-12F — El Corazón del Módulo
El ESP8266-12F es una versión mejorada del conocido SoC ESP8266EX. Incluye:
- CPU: Tensilica L106 de 32 bits, capaz de alcanzar 160 MHz en modo overclock.
- WiFi: Stack completo 802.11 b/g/n con soporte para modo estación (STA), punto de acceso (AP) y ambos simultáneamente.
- Bajo consumo: Modo deep sleep que consume apenas microamperios, ideal para proyectos alimentados por batería.
- Flash externa: 4 MB de memoria Flash vía SPI para almacenar firmware y datos (SPIFFS).
2. CH340G — Conversor USB-Serial
El CH340G es el chip encargado de convertir la señal USB proveniente del ordenador a UART para comunicarse con el ESP8266. Es el componente que permite programar la placa desde el Arduino IDE sin necesidad de hardware adicional.
Nota sobre controladores: En Windows 10/11 el CH340G puede requerir la instalación manual del controlador. Puede descargarse desde la página oficial de WCH. En Linux y macOS generalmente funciona con los controladores nativos del sistema.
3. Display OLED SSD1306 0.96″ (128×64)
El display OLED SSD1306 está soldado directamente sobre la placa y se comunica por I2C usando los pines:
| Señal | GPIO | Pin NodeMCU |
|---|---|---|
| SCL | GPIO 5 | D1 |
| SDA | GPIO 4 | D2 |
| VCC | — | 3.3 V |
| GND | — | GND |
Dirección I2C por defecto: 0x3C
Características del display:
- Resolución: 128×64 píxeles
- Controlador: SSD1306
- Comunicación: I2C (también disponible en SPI en otras versiones)
- No requiere backlight (los píxeles emiten luz propia)
- Bajo consumo energético
Diagrama de Pines (Pinout)
La placa NodeMCU V3 dispone de 30 pines en total (15 por lado). A continuación se muestra el pinout estándar:
┌──────────────────────────────┐
│ USB Micro │
│ CH340G │
┌───────────────┤ ├───────────────────┐
│ RST ─────┤ ├──── A0 (ADC) │
│ TXD0 ─────┤ ├──── RSV │
│ RXD0 ─────┤ ├──── RSV │
│ GPIO5 (D1) ─┤ OLED SCL ├──── GPIO16 (D0) │
│ GPIO4 (D2) ─┤ OLED SDA ├──── GPIO14 (D5) │
│ GPIO0 (D3) ─┤ ├──── GPIO12 (D6) │
│ GPIO2 (D4) ─┤ ├──── GPIO13 (D7) │
│ 3.3V ─────┤ ├──── GPIO15 (D8) │
│ GND ─────┤ ├──── GND │
│ GND ─────┤ ├──── 3.3V │
│ VIN ─────┤ ├──── EN │
└──────────────────────────────────────────────────────────────────┘
Descripción de pines importantes
| Pin | Función | Descripción |
|---|---|---|
| VIN | Alimentación | 4.5–9 V de entrada (regulador interno a 3.3 V) |
| 3.3V | Salida regulada | Salida del regulador interno, útil para alimentar sensores externos |
| GND | Tierra | Referencia común |
| EN | Enable | HABILITAR = HIGH (activo); LOW = modo bajo consumo |
| RST | Reset | LOW para reiniciar el microcontrolador |
| GPIO0 (D3) | Boot mode | Conectar a GND durante el arranque para modo flash |
| GPIO2 (D4) | LED integrado | Generalmente conectado al LED azul de la placa |
| A0 (ADC) | Entrada analógica | ADC de 10 bits, rango 0–1 V |
| GPIO5 (D1) | I2C SCL | Pin de reloj para el OLED (y cualquier otro dispositivo I2C) |
| GPIO4 (D2) | I2C SDA | Pin de datos para el OLED (y cualquier otro dispositivo I2C) |
Cómo Programar la Placa con Arduino IDE
Paso 1: Instalar el soporte para ESP8266 en Arduino IDE
- Abre el Arduino IDE.
- Ve a Archivo → Preferencias (o File → Preferences).
- En el campo URLs adicionales de Gestor de URLs agrega:
http://arduino.esp8266.com/stable/package_esp8266com_index.json - Ve a Herramientas → Placa → Gestor de placas.
- Busca ESP8266 e instala el paquete esp8266 by ESP8266 Community.
Paso 2: Seleccionar la placa correcta
En Herramientas → Placa → ESP8266 selecciona:
NodeMCU 1.0 (ESP-12E Module)
Importante: Aunque el módulo sea ESP-12F, la placa NodeMCU 1.0 (ESP-12E Module) es compatible. También puede seleccionarse NodeMCU 0.9 (ESP-12 Module).
Paso 3: Configurar el puerto COM
Conecta la placa por Micro USB al ordenador. En Herramientas → Puerto selecciona el puerto COM correspondiente (ej. COM3, COM4, etc.). Si no aparece, verifica que los drivers del CH340G estén instalados correctamente.
Paso 4: Cargar un primer programa de prueba
void setup() {
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, LOW); // Enciende el LED (activo en LOW en algunas placas)
delay(500);
digitalWrite(LED_BUILTIN, HIGH); // Apaga el LED
delay(500);
Serial.println("¡Hola desde NodeMCU ESP8266!");
}
Cómo Usar el Display OLED Integrado
Instalación de bibliotecas
Para controlar el display OLED SSD1306 necesitas dos bibliotecas de Adafruit:
- Adafruit_SSD1306 — Controlador del display.
- Adafruit_GFX — Biblioteca gráfica para dibujar texto, formas e imágenes.
Para instalarlas:
- Ve a Herramientas → Gestor de Bibliotecas (o Sketch → Include Library → Manage Libraries).
- Busca SSD1306 e instala Adafruit SSD1306.
- Busca GFX e instala Adafruit GFX Library.
- Reinicia el Arduino IDE.
Conexión (ya integrada en la placa)
Como el display viene soldado de fábrica, no necesitas realizar ninguna conexión externa. La placa ya tiene el OLED conectado a:
- SCL → GPIO 5 (D1)
- SDA → GPIO 4 (D2)
- VCC → 3.3 V
- GND → GND
Código de ejemplo: "¡Hola Mundo!" en el OLED
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
Serial.begin(115200);
// Inicializar el display con dirección I2C 0x3C
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println("Error: SSD1306 no encontrado");
for (;;); // Detener ejecución
}
delay(2000);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 10);
display.println("¡Hola Mundo!");
display.println("NodeMCU ESP8266");
display.println("OLED 0.96\" SSD1306");
display.display();
}
void loop() {
// No hacer nada
}
Dibujar formas básicas
display.clearDisplay();
// Dibujar un píxel
display.drawPixel(64, 32, WHITE);
// Dibujar una línea
display.drawLine(0, 0, 127, 20, WHITE);
// Dibujar un rectángulo
display.drawRect(30, 10, 50, 30, WHITE);
// Dibujar un rectángulo relleno
display.fillRect(30, 10, 50, 30, WHITE);
// Dibujar un círculo
display.drawCircle(64, 32, 10, WHITE);
// Dibujar un triángulo
display.drawTriangle(10, 10, 55, 20, 5, 40, WHITE);
display.display();
Texto con desplazamiento (scroll)
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(10, 0);
display.println("scroll");
display.display();
delay(100);
// Scroll de izquierda a derecha
display.startscrollright(0x00, 0x0F);
delay(2000);
display.stopscroll();
delay(1000);
// Scroll de derecha a izquierda
display.startscrollleft(0x00, 0x0F);
delay(2000);
display.stopscroll();
Mostrar imágenes BMP (128×64)
Puedes convertir imágenes monocromáticas a un array de bytes usando herramientas como LCD Image Converter y mostrarlas con:
static const uint8_t PROGMEM logo_bmp[] = { /* ... datos de la imagen ... */ };
display.clearDisplay();
display.drawBitmap(
(display.width() - LOGO_WIDTH) / 2,
(display.height() - LOGO_HEIGHT) / 2,
logo_bmp, LOGO_WIDTH, LOGO_HEIGHT, 1
);
display.display();
Proyectos de Ejemplo
1. Estación Meteorológica con DHT11/DHT22
Muestra temperatura y humedad en el OLED:
#include <DHT.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define DHTPIN 14 // GPIO14 (D5)
#define DHTTYPE DHT11 // o DHT22
DHT dht(DHTPIN, DHTTYPE);
Adafruit_SSD1306 display(128, 64, &Wire, -1);
void setup() {
Serial.begin(115200);
dht.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.print("Temp: ");
display.print(t);
display.println(" C");
display.print("Hum: ");
display.print(h);
display.println(" %");
display.display();
delay(2000);
}
2. Servidor Web con Información en OLED
Crea un punto de acceso WiFi y muestra la IP asignada en el display:
#include <ESP8266WiFi.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 display(128, 64, &Wire, -1);
const char* ssid = "MiNodeMCU";
const char* password = "12345678";
void setup() {
Serial.begin(115200);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println("Iniciando AP...");
display.display();
WiFi.softAP(ssid, password);
IPAddress ip = WiFi.softAPIP();
display.clearDisplay();
display.setCursor(0, 0);
display.println("AP iniciado!");
display.print("IP: ");
display.println(ip);
display.display();
}
void loop() {
// Servidor web aquí...
}
Consumo de Energía y Deep Sleep
El ESP8266 puede entrar en modo deep sleep para ahorrar batería. Durante este modo el consumo cae a ~10 µA.
void setup() {
// Código de inicialización...
Serial.begin(115200);
Serial.println("Iniciando...");
// Mostrar algo en el OLED
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.println("Durmiendo...");
display.display();
delay(100);
// Entrar en deep sleep por 60 segundos
ESP.deepSleep(60e6); // 60 segundos en microsegundos
}
void loop() {
// No se ejecuta porque el chip se reinicia al despertar
}
Importante: Para usar deep sleep correctamente, el pin GPIO16 (D0) debe estar conectado al pin RST. En algunas versiones de la placa esta conexión ya viene incorporada; si no, debe puentearse externamente.
Comparativa: NodeMCU V3 vs Otras Placas
| Característica | NodeMCU V3 (ESP-12F) | NodeMCU V2 (ESP-12E) | ESP32 DevKit |
|---|---|---|---|
| CPU | L106 32-bit 80 MHz | L106 32-bit 80 MHz | Xtensa LX6 240 MHz |
| Flash | 4 MB | 4 MB | 4–16 MB |
| SRAM | 80 KB + 32 KB caché | 80 KB + 32 KB caché | 520 KB |
| WiFi | 802.11 b/g/n | 802.11 b/g/n | 802.11 b/g/n + Bluetooth |
| ADC | 1 canal (10 bits) | 1 canal (10 bits) | 2 canales (12 bits) |
| OLED integrado | ✅ Sí (0.96″) | ❌ No | ❌ No (salvo modelos T-Display) |
| Conversor USB | CH340G | CP2102 o CH340G | CP2102 o CH340G |
| Precio aproximado | Medio | Bajo | Medio-Alto |
Preguntas Frecuentes (FAQ)
¿Qué controladores necesito para el CH340G?
Descarga el controlador desde la página oficial de WCH. En Windows 10/11, si el sistema no lo reconoce automáticamente, ejecuta el instalador y reinicia el ordenador.
¿El display OLED comparte pines con otros periféricos?
Sí, los pines GPIO 4 (D2) y GPIO 5 (D1) se usan para el OLED por I2C. Si conectas otros dispositivos I2C (como un sensor BME280 o un escáner), deben compartir el mismo bus I2C sin conflictos de dirección.
¿Puedo usar el OLED con SPI en lugar de I2C?
El display integrado en esta placa está cableado en I2C. Si necesitas SPI, deberás adquirir un display OLED externo y conectarlo a los pines SPI del ESP8266 (GPIO 14 = CLK, GPIO 12 = MISO, GPIO 13 = MOSI, GPIO 15 = CS).
¿Qué hago si el OLED no muestra nada?
- Verifica que la dirección I2C sea
0x3C(puedes usar un escáner I2C). - Asegúrate de tener las librerías Adafruit_SSD1306 y Adafruit_GFX instaladas.
- Revisa que la placa esté bien alimentada (5 V por USB).
- Si el display tiene un pin RESET, conéctalo a un GPIO (o usa
-1si no está presente).
¿Puedo programar la placa con MicroPython?
Sí. El ESP8266 es compatible con MicroPython. Deberás flashear el firmware de MicroPython usando esptool.py y luego conectar por terminal serial o WebREPL.
Enlaces y Referencias
- Datasheet oficial ESP8266EX — Espressif
- NodeMCU ESP8266 Specifications — Make-It.ca
- Guía OLED SSD1306 con ESP8266 — Random Nerd Tutorials
- Librería Adafruit_SSD1306 (GitHub)
- Librería Adafruit_GFX (GitHub)
- Controlador CH340G — WCH
- Producto — Sistemsoft Mecatrónica
- Instalar ESP8266 en Arduino IDE
- Pinout de referencia ESP8266
Conclusión
La Placa NodeMCU V3 WiFi ESP8266-12F CH340 con OLED 0.96″ es una herramienta versátil y económica para dar los primeros pasos —o avanzar— en el mundo del IoT. Su display integrado elimina la necesidad de periféricos adicionales para visualizar datos, y su compatibilidad con el Arduino IDE, MicroPython y una enorme comunidad de desarrolladores la convierten en una opción sólida tanto para aprendizaje como para prototipado profesional.
Ya sea para una estación meteorológica, un servidor web embebido, un controlador de sensores o un proyecto de domótica, esta placa ofrece todo lo necesario en un formato compacto y listo para usar.
Artículo publicado en el Blog de Electrónica — Julio 2026.
