Volver al Blog
Electrónica24 de julio de 2026

Guía Completa - Placa NodeMCU V3 ESP8266-12F CH340 con Display OLED 0.96″

Guía de la Placa NodeMCU V3 ESP8266-12F CH340 con Display OLED 0.96

A

Administrador

Equipo de Pixelnova

Guía Completa - Placa NodeMCU V3 ESP8266-12F CH340 con Display OLED 0.96″

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ámetroValor
MicrocontroladorTensilica L106 32 bits — 80/160 MHz
Memoria Flash4 MB (SPIFFS)
SRAM80 KB datos + 32 KB caché
EEPROM512 Bytes (emulada en Flash)
WiFi802.11 b/g/n — AP / Estación / Modo mixto — WPA/WPA2
ProtocolosTCP/IP, MQTT, HTTP, WebSockets
GPIOs disponibles11 pines de E/S digital
Entrada analógica1 ADC de 10 bits (0–1V máx.)
InterfacesUART, I2C, SPI, PWM (4 canales)
Tensión de entrada4.5–9 V por VIN / 5 V por Micro USB
Tensión de operación3.3 V (regulado internamente)
Consumo~170 mA en operación / ~10 µA en deep sleep
Potencia WiFi+20 dBm máximo
PantallaOLED 0.96″ (128×64 px, SSD1306, I2C en D5/D6)
Dimensiones módulo58 mm × 30 mm
Dimensiones ESP-1224 mm × 16 mm
Conector USBMicro USB (alimentación + programación)
Peso~10 g
Conversor USB-SerialCH340G

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ñalGPIOPin NodeMCU
SCLGPIO 5D1
SDAGPIO 4D2
VCC3.3 V
GNDGND

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

PinFunciónDescripción
VINAlimentación4.5–9 V de entrada (regulador interno a 3.3 V)
3.3VSalida reguladaSalida del regulador interno, útil para alimentar sensores externos
GNDTierraReferencia común
ENEnableHABILITAR = HIGH (activo); LOW = modo bajo consumo
RSTResetLOW para reiniciar el microcontrolador
GPIO0 (D3)Boot modeConectar a GND durante el arranque para modo flash
GPIO2 (D4)LED integradoGeneralmente conectado al LED azul de la placa
A0 (ADC)Entrada analógicaADC de 10 bits, rango 0–1 V
GPIO5 (D1)I2C SCLPin de reloj para el OLED (y cualquier otro dispositivo I2C)
GPIO4 (D2)I2C SDAPin 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

  1. Abre el Arduino IDE.
  2. Ve a Archivo → Preferencias (o File → Preferences).
  3. En el campo URLs adicionales de Gestor de URLs agrega:
    http://arduino.esp8266.com/stable/package_esp8266com_index.json
    
  4. Ve a Herramientas → Placa → Gestor de placas.
  5. 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:

  1. Adafruit_SSD1306 — Controlador del display.
  2. Adafruit_GFX — Biblioteca gráfica para dibujar texto, formas e imágenes.

Para instalarlas:

  1. Ve a Herramientas → Gestor de Bibliotecas (o Sketch → Include Library → Manage Libraries).
  2. Busca SSD1306 e instala Adafruit SSD1306.
  3. Busca GFX e instala Adafruit GFX Library.
  4. 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ísticaNodeMCU V3 (ESP-12F)NodeMCU V2 (ESP-12E)ESP32 DevKit
CPUL106 32-bit 80 MHzL106 32-bit 80 MHzXtensa LX6 240 MHz
Flash4 MB4 MB4–16 MB
SRAM80 KB + 32 KB caché80 KB + 32 KB caché520 KB
WiFi802.11 b/g/n802.11 b/g/n802.11 b/g/n + Bluetooth
ADC1 canal (10 bits)1 canal (10 bits)2 canales (12 bits)
OLED integrado✅ Sí (0.96″)❌ No❌ No (salvo modelos T-Display)
Conversor USBCH340GCP2102 o CH340GCP2102 o CH340G
Precio aproximadoMedioBajoMedio-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?

  1. Verifica que la dirección I2C sea 0x3C (puedes usar un escáner I2C).
  2. Asegúrate de tener las librerías Adafruit_SSD1306 y Adafruit_GFX instaladas.
  3. Revisa que la placa esté bien alimentada (5 V por USB).
  4. Si el display tiene un pin RESET, conéctalo a un GPIO (o usa -1 si 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


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.