Componentes · 10 min de lectura

NodeMCU ESP8266: pines, Arduino IDE y servidor web Wi-Fi

Qué es el NodeMCU ESP8266: pines D1–D8 y su GPIO, instalación en Arduino IDE, Wi-Fi, servidor web para un LED, el límite de 3,3 V y diferencias con ESP32.

El NodeMCU es una placa de desarrollo económica que combina el chip ESP8266 con Wi-Fi, una conexión USB, un regulador de 3,3 V y pines aptos para protoboard. Se programa con los mismos comandos que ya conoces del Arduino IDE y, por sí sola, puede conectarse a la red de tu casa y servir una página web que abres en el móvil. Si quieres llevar un sensor de temperatura a internet, activar un relé desde el teléfono o controlar una tira LED en casa, el NodeMCU ESP8266 es uno de los puntos de partida más baratos.

En esta guía verás paso a paso las características del NodeMCU, la confusa correspondencia entre D1–D8 y GPIO, qué pines afectan al arranque de la placa, la instalación en el Arduino IDE, la conexión al Wi-Fi y un servidor web que enciende un LED desde el móvil. En las últimas secciones encontrarás las diferencias entre el ESP8266 y el ESP32 y las soluciones a los errores más comunes.

Placa de desarrollo NodeMCU V3 ESP8266
NodeMCU V3 (LoLin): el módulo ESP-12E con blindaje metálico contiene el chip ESP8266 y 4 MB de memoria flash; la placa lleva un conversor USB-serie CH340, un regulador de 3,3 V y los botones RST y FLASH.

¿Qué son el ESP8266 y el NodeMCU?

El ESP8266 es un microcontrolador de 32 bits con Wi-Fi integrado que Espressif lanzó en 2014. Gracias a su precio tan bajo, popularizó los proyectos Wi-Fi en el mundo maker. El nombre NodeMCU se refería al principio a un firmware basado en Lua escrito para este chip y a su placa de desarrollo de código abierto; hoy se usa como nombre genérico para las placas con el módulo ESP-12E. Casi nadie lo programa en Lua: lo habitual es usar el Arduino IDE o MicroPython.

CaracterísticaValor
ChipESP8266EX, Tensilica L106, 32 bits
Frecuencia de reloj80 MHz (ampliable a 160 MHz)
RAMUnos 80 KB de RAM de usuario (con Wi-Fi conectado quedan 40–50 KB para tu programa)
Memoria flash4 MB (módulo ESP-12E)
Wi-Fi802.11 b/g/n, solo 2,4 GHz; estación, punto de acceso o ambos
BluetoothNo tiene
GPIO utilizablesUnos 11 (D0–D8, RX, TX)
Entrada analógica1 canal (A0), 10 bits, unos 0–3,2 V en la placa
PWMPor software, 1 kHz por defecto, rango 0–255
Tensión de trabajo3,3 V (se alimenta con 5 V por USB o VIN)
ConsumoMedia de 70–80 mA conectado al Wi-Fi, hasta 170 mA al transmitir

En el mercado hay dos versiones habituales del NodeMCU. La V2 (Amica) es estrecha, usa un conversor USB-serie CP2102 y, al pincharla en la protoboard, deja una fila de agujeros libres a cada lado. La V3 (LoLin) es más ancha, usa un CH340G y tapa casi por completo una protoboard estándar, así que con la V3 es mucho más cómodo trabajar con dos protoboards una junto a otra. Ambas versiones tienen los mismos pines y ejecutan el mismo código. Si quieres una placa más pequeña, la Wemos D1 Mini lleva el mismo chip y funciona con los mismos programas.

Pines del NodeMCU: correspondencia entre D1–D8 y GPIO

Lo más confuso del NodeMCU es que las etiquetas D impresas en la placa no coinciden con los números GPIO reales del chip. Por ejemplo, el pin marcado como D1 es en realidad el GPIO 5. Si eliges la placa NodeMCU en el Arduino IDE puedes escribir D1 en el código y el compilador lo convierte en 5 automáticamente; pero si escribes digitalWrite(1, HIGH), estarás controlando el GPIO 1, que es el pin TX del puerto serie. En MicroPython siempre se usa el número GPIO.

EtiquetaGPIOFunción extraNota de uso
D0GPIO 16Despertar del sueño profundoSin interrupciones; se conecta a RST para el deep sleep
D1GPIO 5I2C SCLSeguro, uso general
D2GPIO 4I2C SDASeguro, uso general
D3GPIO 0Botón FLASHSi está en LOW al arrancar, la placa entra en modo programación
D4GPIO 2LED integrado (lógica invertida), TX1Debe estar en HIGH al arrancar
D5GPIO 14SPI SCKSeguro, uso general
D6GPIO 12SPI MISOSeguro, uso general
D7GPIO 13SPI MOSISeguro, uso general
D8GPIO 15SPI CSDebe estar en LOW al arrancar; la placa tiene una resistencia pull-down
RXGPIO 3UART RXDéjalo libre mientras usas el monitor serie
TXGPIO 1UART TXEnvía los mensajes de arranque al encender
A0ADC0Entrada analógicaSolo lectura analógica, unos 0–3,2 V
SD2, SD3GPIO 9, 10Conectados a la memoria flashNo usar

Según esta tabla, los pines que puedes usar sin preocupaciones en tus primeros proyectos son D1, D2, D5, D6 y D7. D3, D4 y D8, en cambio, deciden el modo de arranque: al recibir alimentación, el ESP8266 mira los niveles de GPIO 0, GPIO 2 y GPIO 15 y, para un arranque normal, espera GPIO 0 y GPIO 2 en HIGH y GPIO 15 en LOW. Si un pulsador, relé o sensor conectado a estos pines cambia el nivel durante el arranque, la placa arranca en modo de carga en lugar de ejecutar tu programa, o no arranca. Aun así, D3 y D4 sirven para pulsadores, porque un pulsador no está pulsado al arrancar; pero mantén lejos de estos pines los módulos cuya salida esté en LOW.

Los pines del ESP8266 funcionan a 3,3 V y oficialmente no toleran 5 V; no deberías sacar más de unos 12 mA por pin. No conectes directamente un sensor con salida de 5 V (por ejemplo, el pin ECHO del HC-SR04); pon en medio un Divisor de tensión o un conversor de nivel. Nunca metas 5 V por el pin 3V3; alimenta la placa con 5 V por USB o por el pin VIN.

El pin A0 también es un caso especial: la entrada analógica del chip ESP8266 solo mide de 0 a 1 V, pero gracias al divisor de tensión de 220 kΩ y 100 kΩ de la placa NodeMCU puedes aplicar a A0 unos 0–3,2 V, y analogRead(A0) devuelve ese rango como 0–1023. Como solo hay una entrada analógica, si vas a usar varios sensores analógicos necesitarás un ADC I2C como el ADS1115. Los pines D1 y D2 forman el bus I2C por defecto; tienes lo básico de I2C en ¿Qué es I2C?.

Instalar el ESP8266 en el Arduino IDE

  1. En el Arduino IDE abre Archivo > Preferencias y añade https://arduino.esp8266.com/stable/package_esp8266com_index.json en el campo «URLs adicionales de gestor de placas».
  2. Abre Herramientas > Placa > Gestor de placas, busca esp8266 e instala el paquete de ESP8266 Community.
  3. En el menú Herramientas > Placa elige NodeMCU 1.0 (ESP-12E Module). Si usas una Wemos D1 Mini, elige LOLIN(WEMOS) D1 R2 & mini.
  4. Conecta la placa con un cable de datos y elige su puerto en Herramientas > Puerto. Si no aparece ningún puerto, instala el driver CH340 para las placas V3 o el CP2102 para las V2.
  5. Deja Upload Speed en 115200; cuando la carga funcione sin fallos, puedes subirla a 921600 para cargar más rápido.

Primer programa: hacer parpadear el LED integrado

En el NodeMCU hay un LED azul en el módulo ESP-12E conectado al GPIO 2 (D4); las placas V2 (Amica) tienen un segundo LED en D0. Estos LED funcionan con lógica invertida: se encienden cuando el pin está en LOW y se apagan en HIGH. En el núcleo de Arduino, la constante LED_BUILTIN ya está definida como 2:

Arduino (C++)
1// NodeMCU dahili LED'i: GPIO2 (D4), ters mantık / onboard LED: GPIO2 (D4), inverted logic
2
3void setup() {
4  pinMode(LED_BUILTIN, OUTPUT);
5}
6
7void loop() {
8  digitalWrite(LED_BUILTIN, LOW);    // LOW = yanar / LOW = on
9  delay(500);
10  digitalWrite(LED_BUILTIN, HIGH);   // HIGH = söner / HIGH = off
11  delay(500);
12}
Es normal ver caracteres extraños en el monitor serie después de cargar el programa: el ESP8266 envía sus mensajes de arranque a 74880 baudios. Si pones el monitor serie a 74880 podrás leer la causa del reinicio y el modo de arranque; tus propios mensajes aparecen a la velocidad que elegiste en el código (por ejemplo, 115200).

Conectarse al Wi-Fi

El verdadero punto fuerte del ESP8266 es el Wi-Fi. El programa siguiente conecta la placa a la red de tu casa en modo estación y muestra en el monitor serie la dirección IP asignada por el router y la intensidad de la señal. Si no logra conectarse en 20 segundos, deja de esperar y muestra un aviso. Cambia el nombre de la red y la contraseña por los tuyos y abre el monitor serie a 115200 baudios:

Arduino (C++)
1#include <ESP8266WiFi.h>
2
3const char* ssid = "AgAdi";          // Wi-Fi adın / your Wi-Fi name
4const char* password = "Sifre123";   // Wi-Fi şifren / your Wi-Fi password
5
6void setup() {
7  Serial.begin(115200);
8  Serial.println();
9  WiFi.mode(WIFI_STA);               // istemci modu / station mode
10  WiFi.begin(ssid, password);
11  Serial.print("Baglaniyor / connecting");
12  unsigned long start = millis();
13  while (WiFi.status() != WL_CONNECTED) {
14    delay(500);
15    Serial.print('.');
16    if (millis() - start > 20000) {  // 20 sn'de bağlanamazsa / give up after 20 s
17      Serial.println("\nBaglanamadi, ag adini ve sifreyi kontrol et / failed, check SSID and password");
18      return;
19    }
20  }
21  Serial.println();
22  Serial.print("IP: ");
23  Serial.println(WiFi.localIP());    // modemin verdiği adres / address given by the router
24  Serial.print("Sinyal / RSSI: ");
25  Serial.print(WiFi.RSSI());         // -50 iyi, -80 zayıf / -50 good, -80 weak
26  Serial.println(" dBm");
27}
28
29void loop() {
30}
Valor RSSICalidad de señalQué esperar
-30 a -50 dBmExcelenteConexión estable y rápida
-50 a -67 dBmBuenaSuficiente para un servidor web y datos de sensores
-67 a -80 dBmDébilCortes ocasionales, páginas que cargan despacio
Por debajo de -80 dBmMuy débilPuede que no conecte; acerca la placa al router
El ESP8266 solo puede conectarse a redes de 2,4 GHz. Si tu router emite las bandas de 2,4 y 5 GHz con el mismo nombre y la placa no conecta, dar a la banda de 2,4 GHz un nombre propio suele resolver el problema. Las redes empresariales (WPA2-Enterprise) y las redes de invitados con página de inicio de sesión en el navegador no funcionan sin código adicional.

Controlar un LED desde el móvil: un servidor web sencillo

Ahora vamos a convertir el NodeMCU en un pequeño servidor web. Conecta un LED al pin D1 (GPIO 5) con una resistencia de 220 Ω: la pata larga del LED va a D1 a través de la resistencia y la corta a GND. Con un LED rojo, esta resistencia da una corriente de (3,3 V − 2 V) / 220 Ω ≈ 6 mA, muy por debajo del límite del pin; para calcular el valor de tu propio LED usa la Calculadora de resistencia para LED. Después de cargar el código, abre la dirección que aparece en el monitor serie en el navegador de un móvil conectado al mismo Wi-Fi.

Arduino (C++)
1#include <ESP8266WiFi.h>
2#include <ESP8266WebServer.h>
3#include <ESP8266mDNS.h>
4
5const char* ssid = "AgAdi";          // Wi-Fi adın / your Wi-Fi name
6const char* password = "Sifre123";   // Wi-Fi şifren / your Wi-Fi password
7
8const int LED_PIN = D1;              // GPIO5, 220 ohm direnç ile LED / LED through a 220 ohm resistor
9bool ledOn = false;
10
11ESP8266WebServer server(80);
12
13void handleRoot() {
14  String html = "<!DOCTYPE html><html><head><meta charset='utf-8'>"
15                "<meta name='viewport' content='width=device-width,initial-scale=1'>"
16                "<title>NodeMCU</title></head>"
17                "<body style='font-family:sans-serif;text-align:center'>"
18                "<h1>NodeMCU LED</h1><p>LED: <b>";
19  html += ledOn ? "ACIK / ON" : "KAPALI / OFF";
20  html += "</b></p><p>A0: ";
21  html += analogRead(A0);            // 0-1023 arası analog değer / analog value 0-1023
22  html += "</p><p><a href='/on'><button>AC / ON</button></a> "
23          "<a href='/off'><button>KAPAT / OFF</button></a></p></body></html>";
24  server.send(200, "text/html", html);
25}
26
27void setLed(bool on) {
28  ledOn = on;
29  digitalWrite(LED_PIN, on ? HIGH : LOW);
30  server.sendHeader("Location", "/");   // ana sayfaya yönlendir / redirect to the main page
31  server.send(303, "text/plain", "");
32}
33
34void setup() {
35  pinMode(LED_PIN, OUTPUT);
36  digitalWrite(LED_PIN, LOW);
37  Serial.begin(115200);
38  WiFi.mode(WIFI_STA);
39  WiFi.begin(ssid, password);
40  while (WiFi.status() != WL_CONNECTED) {
41    delay(500);
42    Serial.print('.');
43  }
44  Serial.println();
45  Serial.print("Tarayicida ac / open in browser: http://");
46  Serial.println(WiFi.localIP());
47
48  if (MDNS.begin("nodemcu")) {       // http://nodemcu.local adresi / address http://nodemcu.local
49    MDNS.addService("http", "tcp", 80);
50  }
51
52  server.on("/", handleRoot);
53  server.on("/on", []() { setLed(true); });
54  server.on("/off", []() { setLed(false); });
55  server.onNotFound([]() { server.send(404, "text/plain", "Bulunamadi / not found"); });
56  server.begin();
57}
58
59void loop() {
60  server.handleClient();             // gelen istekleri işle / handle incoming requests
61  MDNS.update();
62}
Parte del códigoPara qué sirve
ESP8266WebServer server(80)Crea un servidor en el puerto 80 (HTTP)
server.on("/on", ...)Enciende el LED cuando el navegador pide /on
sendHeader("Location", "/") y send(303)Tras la acción redirige el navegador a la página principal, así recargar la página no vuelve a enviar la orden
analogRead(A0)Muestra en la página el valor de A0; ahí puedes conectar una LDR o un potenciómetro
MDNS.begin("nodemcu")Permite llegar al dispositivo con el nombre nodemcu.local en lugar de la IP
server.handleClient()Debe llamarse continuamente en loop; atiende las peticiones entrantes

Si la página no se abre, asegúrate de que el móvil está conectado a la misma red Wi-Fi que el NodeMCU y no a una red de invitados o a los datos móviles. El nombre nodemcu.local suele funcionar en ordenadores y iPhone; algunos móviles Android no admiten mDNS, así que en ellos tendrás que usar la dirección IP. Si en lugar del LED conectas un módulo relé, el mismo código te permite controlar una lámpara real; tienes los detalles en ¿Qué es un módulo relé?.

Modo punto de acceso (AP): conexión sin router

Si no hay Wi-Fi cerca, el NodeMCU puede crear su propia red. En modo punto de acceso conectas el móvil directamente a la red NodeMCU-AP y la placa suele responder en 192.168.4.1. Este modo es ideal para un sistema de riego en el jardín o un aparato de medida que se usa en el exterior. Para combinar el servidor web anterior con este modo, basta con usar las líneas de softAP en lugar de las de WiFi.begin; el modo WIFI_AP_STA cumple los dos papeles a la vez. La contraseña debe tener al menos 8 caracteres o la red no se creará.

Arduino (C++)
1#include <ESP8266WiFi.h>
2
3void setup() {
4  Serial.begin(115200);
5  WiFi.mode(WIFI_AP);                            // kendi ağını kur / create its own network
6  bool ok = WiFi.softAP("NodeMCU-AP", "12345678"); // ad ve en az 8 karakter şifre / name and 8+ char password
7  Serial.println(ok ? "AP hazir / AP ready" : "AP hatasi / AP error");
8  Serial.print("IP: ");
9  Serial.println(WiFi.softAPIP());               // genellikle 192.168.4.1 / usually 192.168.4.1
10}
11
12void loop() {
13  Serial.print("Bagli cihaz / stations: ");
14  Serial.println(WiFi.softAPgetStationNum());
15  delay(3000);
16}

ESP8266 con MicroPython

Además del lenguaje de Arduino, el NodeMCU también se puede programar con MicroPython. Después de grabar el firmware de MicroPython en la placa con esptool, ejecutas código Python directamente desde un editor como Thonny. Como la memoria del ESP8266 es limitada, los programas grandes de MicroPython pueden dar errores de memoria, pero para proyectos sencillos de Wi-Fi y sensores resulta muy práctico. Ten en cuenta que en MicroPython el número de pin es el GPIO, no la etiqueta D:

MicroPython
1import network, time
2from machine import Pin
3
4led = Pin(2, Pin.OUT)                     # D4 = GPIO2, dahili LED / onboard LED
5wlan = network.WLAN(network.STA_IF)
6wlan.active(True)
7wlan.connect("AgAdi", "Sifre123")         # Wi-Fi adı ve şifresi / Wi-Fi name and password
8
9while not wlan.isconnected():
10    time.sleep(0.5)
11print("IP:", wlan.ifconfig()[0])
12
13while True:
14    led.value(not led.value())            # ters mantık: 0 = yanar / inverted: 0 = on
15    time.sleep(0.5)

¿ESP8266 o ESP32?

CaracterísticaESP8266 (NodeMCU)ESP32 (DevKit)
ProcesadorUn núcleo, 80/160 MHzDos núcleos, 240 MHz
RAMUnos 80 KB de RAM de usuario520 KB
Wi-Fi802.11 b/g/n, 2,4 GHz802.11 b/g/n, 2,4 GHz
BluetoothNo tieneClassic y BLE
GPIOUnos 11Unos 34 (algunos solo entrada)
Entrada analógica1 canal, 10 bits18 canales, 12 bits
PWMPor softwarePWM por hardware de 16 canales (LEDC)
I2C y UARTI2C por software, 1 UART completo más un UART1 solo con TX2 I2C por hardware, 3 UART
Pines táctiles y DACNo tiene10 pines táctiles, 2 DAC
PrecioMás baratoAlgo más caro

En resumen, el ESP8266 sigue siendo más que suficiente para enviar a internet los datos de un sensor, activar un relé desde el móvil o servir una página web sencilla, y además es más barato. Para proyectos nuevos que necesiten Bluetooth, muchas entradas analógicas, cámara, mucha potencia de cálculo o varias tareas a la vez, el ESP32 es mejor opción. El código se adapta fácilmente: muchas veces basta con escribir WiFi.h en lugar de ESP8266WiFi.h, WebServer.h en lugar de ESP8266WebServer.h y ESPmDNS.h en lugar de ESP8266mDNS.h, borrar la línea MDNS.update() (el ESP32 no la tiene) y usar los números GPIO en lugar de etiquetas de placa como D1. Más detalles en ¿Qué es el ESP32? y ¿Arduino o ESP32?.

Alimentación y sueño profundo

El NodeMCU se alimenta con 5 V por USB o por el pin VIN, y el regulador de la placa los baja a 3,3 V. El pico de 170 mA al transmitir por Wi-Fi puede provocar una caída de tensión en un puerto USB débil o con un cable fino y hacer que la placa se reinicie sola, así que usa un buen cable y un adaptador de al menos 1 A. En proyectos con batería, ESP.deepSleep() duerme el chip con unos 20 µA; para que pueda despertar al terminar el temporizador, tienes que unir el pin D0 (GPIO 16) con el pin RST. Sin embargo, el conversor USB-serie y el regulador de la placa siguen consumiendo mientras duerme, por eso para una larga duración de batería dan mejor resultado un módulo ESP-12 suelto o placas de bajo consumo. Para estimar la duración de la batería usa la Calculadora de autonomía de batería.

Ideas de proyectos con el NodeMCU

  • Termómetro Wi-Fi: Muestra la temperatura y la humedad medidas por un DHT11 en una página que abres en el móvil.
  • Enchufe inteligente: Enciende y apaga una lámpara con un módulo relé y un botón en una página web.
  • Aviso de riego: Conecta un sensor de humedad del suelo a A0 y muestra un aviso en la página cuando la tierra se seque.
  • Tira LED Wi-Fi: Elige desde el móvil el color y el efecto de una tira WS2812B.
  • Reloj por internet: Obtén la hora de un servidor NTP y muéstrala en una pantalla LCD I2C.
  • Alarma de movimiento: Envía un mensaje de Telegram cuando un sensor PIR detecte movimiento.

Errores frecuentes y cómo solucionarlos

SíntomaCausa probableSolución
No aparece el puertoCable solo de carga o falta el driverUsa un cable de datos; instala el driver CH340 o CP2102
«Failed to connect to ESP8266: Timed out waiting for packet header»La placa no pudo entrar en modo de cargaMantén pulsado FLASH, pulsa y suelta RST, suelta FLASH y vuelve a iniciar la carga
La placa no arranca o se reinicia sin pararUn circuito en D3, D4 o D8 altera los niveles de arranquePasa ese circuito a pines seguros como D5, D6 o D7
Caracteres extraños en el monitor serieVelocidad en baudios distintaElige la misma velocidad que en el código; los mensajes de arranque van a 74880 baudios
No se conecta al Wi-FiRed de 5 GHz, contraseña errónea o señal débilUsa una red de 2,4 GHz, revisa mayúsculas y minúsculas, mira el RSSI
El LED no se enciende y el monitor serie se callaEn el código pone 1 en lugar de D1 (GPIO 1 = TX)Usa la etiqueta D1 o el GPIO 5 en el código
Error «Soft WDT reset»Un bucle dentro de loop() que tarda demasiadoAñade yield() o delay(1) dentro de los bucles largos; ambos dan paso a las tareas Wi-Fi de fondo y al watchdog
Si tienes problemas de conexión al cargar el programa, desconecta primero la placa del ordenador, quita todo lo que esté conectado a D3, D4, D8 y RX y vuelve a intentarlo. Un módulo en esos pines puede impedir que la placa entre en modo de carga al arrancar. Además, usar un puerto USB del propio ordenador en lugar de un hub USB reduce los cortes por picos de consumo.

El NodeMCU ESP8266 es la forma más económica de llevar lo que has aprendido con Arduino al mundo inalámbrico: con unas pocas líneas de código se conecta a la red de tu casa y te permite crear aparatos que controlas desde el móvil. En la aplicación BlueGrays encontrarás proyectos inalámbricos en el ESP32, como conexión Wi-Fi, servidor web, WebSocket, reloj NTP y mDNS, con esquemas de circuito y código paso a paso, y podrás adaptar fácilmente la misma lógica a tu NodeMCU.

Preguntas frecuentes

¿El NodeMCU y el ESP8266 son lo mismo?

ESP8266 es el nombre del chip Wi-Fi fabricado por Espressif. El NodeMCU es una placa de desarrollo que añade al módulo ESP-12E con ese chip una conexión USB, un regulador y pines aptos para protoboard. En resumen, todo NodeMCU es una placa ESP8266, pero no toda placa ESP8266 es un NodeMCU; el ESP-01 y la Wemos D1 Mini usan el mismo chip.

¿El NodeMCU funciona con 5 V?

La placa se puede alimentar con 5 V por USB o por el pin VIN, y el regulador los baja a 3,3 V. Sin embargo, los pines GPIO trabajan a 3,3 V y oficialmente no toleran 5 V. Las señales de 5 V debes conectarlas a través de un divisor de tensión o de un conversor de nivel.

¿Qué GPIO es D1 en el NodeMCU?

D1 es el GPIO 5 y es el pin SCL por defecto del I2C. Otras correspondencias habituales son D2 = GPIO 4, D4 = GPIO 2, D5 = GPIO 14, D6 = GPIO 12, D7 = GPIO 13 y D8 = GPIO 15. En el Arduino IDE puedes escribir D1 directamente en el código; en MicroPython debes usar el número GPIO.

¿El ESP8266 se conecta a Wi-Fi de 5 GHz?

No, el ESP8266 solo admite redes 802.11 b/g/n en la banda de 2,4 GHz. Comprueba que la banda de 2,4 GHz de tu router está activa; si las dos bandas comparten nombre, dar a la de 2,4 GHz un nombre propio suele resolver los problemas de conexión.

¿Qué diferencia hay entre el NodeMCU V2 y el V3?

La V2 (Amica) es más estrecha, usa un conversor USB-serie CP2102 y deja agujeros libres a ambos lados de la protoboard. La V3 (LoLin) es más ancha y usa un CH340G. Los pines, el procesador y el código son idénticos; solo cambian el tamaño y el driver USB que debes instalar.

¿El ESP8266 tiene Bluetooth?

No, el ESP8266 no tiene hardware Bluetooth; solo admite Wi-Fi. Para proyectos que necesiten Bluetooth o BLE, usa un ESP32 o añade a tu placa un módulo Bluetooth aparte como el HC-05.

Ver todos los proyectos
LED Parpadeante con ESP32
#103Principiante

LED Parpadeante con ESP32

Enseña el uso básico de la salida GPIO con ESP32. Conseguimos un efecto de parpadeo encendiendo y apagando un LED desde el pin digital. Versión para ESP32 del clásico proyecto blink en Arduino UNO; el mapa de pines y la sintaxis son los mismos, la diferencia está sólo en los números de pin.

4.7(36)
92
Parpadeo del LED interno del ESP32
#106Principiante

Parpadeo del LED interno del ESP32

Parpadeo del LED azul incorporado en el ESP32 DevKit V1. ¡No se necesitan componentes externos! El primer proyecto que debe probar cuando compra un ESP32. GPIO 2 está conectado al LED interno.

4.8(29)
53
Conexión Wi-Fi STA con ESP32 (con pantalla LCD)
#127Avanzado
Premium

Conexión Wi-Fi STA con ESP32 (con pantalla LCD)

En este proyecto, conectamos el ESP32 a la red Wi-Fi doméstica en modo Station (STA) de forma segura y tolerante a fallos. Separamos el SSID y la contraseña en el archivo `secrets.h` para evitar que se filtren a Git, configuramos un mecanismo de reconexión automática y mostramos el nivel de señal RSSI y la dirección IP en una pantalla LCD I2C. El LED interno actúa como indicador de estado.

4.4(21)
33
Servidor web asíncrono ESP32 (con indicación de IP en la pantalla LCD)
#129Avanzado
Premium

Servidor web asíncrono ESP32 (con indicación de IP en la pantalla LCD)

En este proyecto, convertimos el ESP32 en un **servidor web asíncrono** que puedes controlar desde tu teléfono o tu ordenador, siempre que estén conectados a la misma red Wi-Fi. Gracias a la biblioteca ESPAsyncWebServer, el servidor puede procesar varias solicitudes al mismo tiempo (a diferencia del clásico `WebServer.h`, que se bloquea con una sola solicitud).

4.8(16)
26
Contador ESP32 WebSocket (2 botones + pantalla LCD + web en tiempo real)
#130Avanzado
Premium

Contador ESP32 WebSocket (2 botones + pantalla LCD + web en tiempo real)

En este proyecto, dos botones conectados al ESP32 (GPIO 5 suma, GPIO 4 resta) cambian un contador. El valor se actualiza al instante en una pantalla LCD I2C de 16x2 y, gracias al soporte WebSocket de ESPAsyncWebServer, en todos los navegadores conectados sin recargar la página. En lugar del sondeo HTTP se usa una única conexión persistente y el ESP32 envía el nuevo valor a todos con ws.textAll().

4.5(14)
23
ESP32 mDNS: Acceso al dispositivo mediante bluegrays-esp.local (con pantalla LCD)
#131Avanzado
Premium

ESP32 mDNS: Acceso al dispositivo mediante bluegrays-esp.local (con pantalla LCD)

En este proyecto, al añadir el servicio mDNS (Multicast DNS) al ESP32, permitimos el acceso mediante un nombre de host legible, como `bluegrays-esp.local`, en lugar de una dirección IP. Aunque la IP asignada por el DHCP cambie, siempre podrás acceder al dispositivo con el mismo nombre. Además, al ejecutar un pequeño servidor web en él, enviamos comandos de control de los LED desde el navegador mediante la dirección `http://bluegrays-esp.local/`. En la pantalla LCD I2C se muestran el nombre de ho

4.8(14)
23
ESP32: hora real desde Internet con NTP
#128Avanzado
Premium

ESP32: hora real desde Internet con NTP

El ESP32 se conecta a Wi-Fi y obtiene la hora real con precisión de milisegundos desde servidores NTP (Network Time Protocol). Gracias a `configTzTime()`, se aplica automáticamente la zona horaria de Turquía (TRT, UTC+3) y el cambio DST se gestiona mediante la cadena POSIX TZ. La hora se muestra en el monitor serie y en una pantalla LCD I2C opcional. Se sincroniza una vez al inicio y luego el RTC interno sigue contando.

4.5(13)
21
Actualización OTA del ESP32 — Instalación inalámbrica del firmware (con pantalla LCD)
#132Avanzado
Premium

Actualización OTA del ESP32 — Instalación inalámbrica del firmware (con pantalla LCD)

En este proyecto aprenderás a instalar un nuevo firmware en el ESP32 a través de Wi-Fi, sin necesidad de un cable USB. Con la biblioteca `ArduinoOTA`, el ESP32 se hace visible en la red y aparece automáticamente como `bluegrays-ota` en la pestaña «Puerto de red» del IDE de Arduino. La primera instalación se realiza mediante USB; a partir de ahí, todas las actualizaciones se realizan de forma inalámbrica, lo cual es una característica fundamental para los dispositivos de campo. En la pantalla LCD

4.7(13)
21

Aprende los pines del popular y barato NodeMCU ESP8266, instálalo en el Arduino IDE, conéctalo al Wi-Fi y crea paso a paso un servidor web que enciende un LED desde el móvil; además, sus diferencias con el ESP32.

NodeMCU ESP8266: pines, Arduino IDE y servidor web Wi-Fi | BlueGrays