¿Qué es el ESP32? Características, instalación en el Arduino IDE y primer proyecto Wi-Fi
Qué es el ESP32 y en qué se diferencia de Arduino. Wi-Fi y Bluetooth, pines seguros, instalación en el Arduino IDE, primer Blink, conexión Wi-Fi, controlar un LED desde el móvil, variantes del ESP32 y errores comunes.
El ESP32 es un microcontrolador de doble núcleo, muy barato, fabricado por Espressif, que lleva Wi-Fi y Bluetooth integrados. Por sí solo hace muchas cosas que un Arduino Uno no puede: conectarse a la red de casa, servir una página web que abres en el móvil, obtener la hora y el tiempo de internet y hablar con el teléfono por Bluetooth. Además, se programa en el Arduino IDE con las órdenes de Arduino que ya conoces. Hoy es la placa más popular para empezar con proyectos del Internet de las Cosas (IoT).

¿Qué es el ESP32 y para qué sirve?
En realidad, «ESP32» es el nombre del chip que hay bajo la tapa metálica. La placa que tienes en la mano es una placa de desarrollo que lleva ese chip (como la ESP32 DevKit o la NodeMCU-32S): incluye un conversor USB-serie para hablar con el ordenador, un regulador que baja 5 V a 3,3 V y los botones de reinicio (EN) y programación (BOOT). Algunas cosas que puedes hacer con un ESP32:
- Estación meteorológica Wi-Fi: mostrar la temperatura y la humedad en una página que abres en el móvil.
- Control desde el móvil: manejar una lámpara, un enchufe o una puerta con un botón en una página web.
- Obtener datos de internet: mostrar la hora real (NTP), el tiempo o el cambio de divisas en una pantalla.
- Enviar avisos: avisarte por Telegram o por correo cuando se detecte movimiento.
- Dispositivos Bluetooth: hacer un mando que se empareje con el móvil o un aparato que el ordenador vea como teclado.
- Sensores que funcionan meses con pilas: despertar del sueño profundo solo para medir.
ESP32 frente a Arduino Uno
| Característica | Arduino Uno R3 | ESP32 (WROOM-32) |
|---|---|---|
| Procesador | ATmega328P, 8 bits, 16 MHz | Xtensa LX6, doble núcleo, 32 bits, 240 MHz |
| RAM | 2 KB | 520 KB |
| Memoria de programa (flash) | 32 KB | Normalmente 4 MB |
| Conexión inalámbrica | No tiene | Wi-Fi + Bluetooth (Classic y BLE) |
| Tensión de trabajo | 5 V | 3,3 V |
| GPIO utilizables | 20 | Unos 34 (algunos solo de entrada) |
| Entradas analógicas (ADC) | 6 canales, 10 bits | 18 canales, 12 bits |
| Salidas analógicas (DAC) | No tiene | 2 canales, 8 bits |
Viendo esta tabla parece que el ESP32 gana en todo, pero el Uno también tiene ventajas: al funcionar a 5 V es compatible directamente con la mayoría de los sensores y módulos antiguos, sus pines son más resistentes y da menos sorpresas a quien empieza. Si no necesitas conexión inalámbrica, el Uno sigue siendo un gran punto de partida; para decidir cuál elegir, echa un vistazo a ¿Qué Arduino comprar?
Pines del ESP32: ¿cuáles se pueden usar con seguridad?
Los pines del ESP32 no son todos «iguales» como en Arduino. Algunos están conectados a la memoria flash, otros solo funcionan como entradas y el nivel de otros influye en el arranque de la placa. Puedes ver el mapa completo de tu placa en la herramienta Pinout; aquí tienes un resumen:
| Pines | Estado | Nota |
|---|---|---|
| GPIO 6–11 | No usar | Conectados a la flash interna; si se usan, la placa se cuelga |
| GPIO 34–39 | Solo entrada | No pueden dar salida ni tienen pull-up interna |
| GPIO 0, 2, 12, 15 | Usar con cuidado | Su nivel durante el arranque es importante |
| GPIO 1 y 3 | Usar con cuidado | TX y RX de la comunicación serie por USB |
| Pines ADC2 (0, 2, 4, 12–15, 25–27) | No leen analógico con el Wi-Fi activado | Para lecturas analógicas usa ADC1 (GPIO 32–39) |
| GPIO 4, 5, 13, 14, 16–19, 21–23, 25–27, 32, 33 | Seguros | Entrada y salida de uso general |
Instalar el ESP32 en el Arduino IDE
- En el Arduino IDE abre Archivo > Preferencias y añade https://espressif.github.io/arduino-esp32/package_esp32_index.json en el campo «Gestor de URLs adicionales de tarjetas».
- En el Gestor de tarjetas busca esp32 e instala el paquete de Espressif Systems.
- Elige ESP32 Dev Module en Herramientas > Placa.
- Conecta el ESP32 con un cable USB y elige el puerto correcto en Herramientas > Puerto. Si no aparece ningún puerto, instala el controlador del chip USB-serie de tu placa (CP2102 o CH340).
- Si al cargar el programa se queda mucho rato «Connecting...», mantén pulsado el botón BOOT de la placa y suéltalo cuando empiece la carga.
Primer programa: hacer parpadear el LED integrado
La mayoría de las placas ESP32 DevKit tienen un LED azul conectado al GPIO 2. El código siguiente lo hace parpadear cada medio segundo; como ves, las órdenes son exactamente las mismas que en Arduino:
1const int LED_PIN = 2; // çoğu DevKit'te dahili mavi LED / onboard blue LED on most DevKits
2
3void setup() {
4 pinMode(LED_PIN, OUTPUT);
5}
6
7void loop() {
8 digitalWrite(LED_PIN, HIGH);
9 delay(500);
10 digitalWrite(LED_PIN, LOW);
11 delay(500);
12}Conectarse a la red Wi-Fi
El gran punto fuerte del ESP32 es el Wi-Fi. El código siguiente se conecta a la red de casa y escribe en el Monitor Serie la dirección IP que el router asigna al ESP32. Cambia el nombre de la red y la contraseña por los tuyos y abre el Monitor Serie a 115200 baudios:
1#include <WiFi.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 WiFi.begin(ssid, password);
9 Serial.print("Bağlanıyor / connecting");
10 while (WiFi.status() != WL_CONNECTED) {
11 delay(500);
12 Serial.print(".");
13 }
14 Serial.println();
15 Serial.print("IP adresi / IP address: ");
16 Serial.println(WiFi.localIP());
17}
18
19void loop() {
20}Controlar un LED desde el móvil: un servidor web sencillo
Ahora vamos a convertir el ESP32 en un pequeño servidor web. Después de cargar el código, abre la dirección IP que aparece en el Monitor Serie en el navegador de un móvil conectado a la misma Wi-Fi; los dos botones de la página encienden y apagan el LED de la placa. Si en lugar del LED conectas un relé, controlarás una lámpara de verdad de la misma forma; mira ¿Qué es un módulo relé?
1#include <WiFi.h>
2#include <WebServer.h>
3
4const char* ssid = "AgAdi";
5const char* password = "Sifre123";
6const int LED_PIN = 2;
7
8WebServer server(80);
9
10void handleRoot() {
11 server.send(200, "text/html",
12 "<meta name='viewport' content='width=device-width'>"
13 "<h1>ESP32</h1>"
14 "<a href='/on'><button>LED AÇ / ON</button></a> "
15 "<a href='/off'><button>LED KAPAT / OFF</button></a>");
16}
17
18void setup() {
19 pinMode(LED_PIN, OUTPUT);
20 Serial.begin(115200);
21 WiFi.begin(ssid, password);
22 while (WiFi.status() != WL_CONNECTED) delay(500);
23 Serial.println(WiFi.localIP()); // bu adresi telefonda aç / open this address on your phone
24
25 server.on("/", handleRoot);
26 server.on("/on", []() { digitalWrite(LED_PIN, HIGH); handleRoot(); });
27 server.on("/off", []() { digitalWrite(LED_PIN, LOW); handleRoot(); });
28 server.begin();
29}
30
31void loop() {
32 server.handleClient();
33}Variantes del ESP32: ¿cuál comprar?
| Modelo | Característica destacada | Cuándo elegirlo |
|---|---|---|
| ESP32 (WROOM-32 DevKit) | Wi-Fi, Bluetooth Classic y BLE, doble núcleo | Primera placa para todo |
| ESP32-S3 | USB nativo, más RAM, instrucciones para IA | Proyectos con cámara, audio, teclado y ratón USB |
| ESP32-C3 | Un núcleo RISC-V, Wi-Fi y BLE, pequeño y barato | Sensores IoT sencillos |
| ESP32-CAM | Cámara y ranura microSD | Envío de imágenes, cámara de vigilancia |
| ESP8266 (NodeMCU, Wemos D1) | Más antiguo, un núcleo, solo Wi-Fi | Proyectos Wi-Fi muy sencillos |
Alimentación y uso con pilas
Al activar el Wi-Fi, el ESP32 puede consumir durante un instante hasta 250 mA. Si un puerto USB flojo o un cable fino no aguantan ese pico, la placa se reinicia con el mensaje «Brownout detector was triggered». Usa un buen cable y un cargador de 5 V de al menos 1 A y, si hace falta, añade un condensador de 100–470 µF entre 3V3 y GND. En proyectos con pilas, el modo de sueño profundo del ESP32 baja el consumo del chip a microamperios; pero el regulador y el LED de las placas de desarrollo siguen gastando unos mA, así que para una autonomía larga se prefiere un módulo suelto o una placa de bajo consumo.
El ESP32 con MicroPython
El ESP32 no solo se programa en el lenguaje de Arduino, también con MicroPython. Una vez instalado MicroPython en la placa con Thonny, conectarse al Wi-Fi son unas pocas líneas:
1import network, time
2from machine import Pin
3
4led = Pin(2, Pin.OUT)
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()) # LED'i yakıp söndür / toggle the LED
15 time.sleep(0.5)Ideas de proyectos con ESP32
- Estación meteorológica Wi-Fi: sigue desde el móvil la temperatura y la humedad medidas con un DHT11.
- Enchufe inteligente: enciende una lámpara con un relé desde una página web o un asistente de voz.
- Alarma de movimiento: envía un aviso por Telegram cuando un sensor PIR detecte a alguien.
- Reloj por internet: obtén la hora de un servidor NTP y muéstrala en una LCD o en un display de 7 segmentos.
- Mando Bluetooth: maneja un coche robot con una app del móvil.
- Sensor que ahorra pila: un aparato que despierta cada 10 minutos, envía una medida y vuelve a dormir.
Errores comunes y cómo solucionarlos
- No aparece el puerto: puede que el cable sea solo de carga o que falte el controlador USB-serie; usa un cable de datos e instala el controlador CP2102 o CH340.
- «Failed to connect... Timed out waiting for packet header»: mantén pulsado BOOT al empezar la carga.
- La placa se reinicia sin parar: falta alimentación (brownout); usa mejor cable, mejor cargador y un condensador.
- No se conecta al Wi-Fi: la red puede ser de 5 GHz, o hay un error de mayúsculas y minúsculas en el nombre o la contraseña.
- Usar los GPIO 6–11: están conectados a la flash; si se usan, la placa se cuelga.
- Los valores analógicos fallan al activar el Wi-Fi: el sensor está en un pin ADC2; pásalo a uno de los pines ADC1, entre GPIO 32 y 39.
El ESP32 es la forma más fácil de llevar a internet lo que has aprendido con Arduino. Para repasar lo básico de Arduino, mira ¿Qué es Arduino?; en la app BlueGrays encontrarás decenas de proyectos con ESP32, como LED, servidor web, WebSocket, reloj NTP, datos del tiempo y alarma por Telegram, con esquemas y código.
Preguntas frecuentes
¿El ESP32 es un Arduino?
No. El ESP32 es un microcontrolador distinto fabricado por Espressif, mientras que Arduino es el nombre de un ecosistema de placas y software. Pero gracias al paquete que ofrece Espressif, el ESP32 se puede programar en el Arduino IDE con órdenes de Arduino, así que la mayoría del código de Arduino funciona en el ESP32 con pequeños cambios.
¿El ESP32 funciona a 5 V?
La placa de desarrollo se puede alimentar con 5 V por USB o por el pin VIN; el regulador de la placa los baja a 3,3 V. Pero los pines GPIO trabajan a 3,3 V y no toleran 5 V, así que no debes conectarles señales de 5 V directamente.
¿Compro un ESP32 o un Arduino Uno?
Para proyectos que necesiten Wi-Fi, Bluetooth o internet, compra un ESP32. Si empiezas en electrónica y quieres trabajar sin problemas con sensores y módulos de 5 V y seguir los tutoriales al pie de la letra, el Arduino Uno te dará menos sorpresas.
¿El ESP32 se conecta a redes Wi-Fi de 5 GHz?
El ESP32 clásico, el ESP32-S3 y el ESP32-C3 solo admiten Wi-Fi de 2,4 GHz y no ven las redes de 5 GHz. Asegúrate de que la banda de 2,4 GHz de tu router esté activada.
¿Qué diferencia hay entre el ESP32 y el ESP8266?
El ESP8266 es un chip más antiguo, de un núcleo, que solo tiene Wi-Fi y una única entrada analógica. El ESP32 tiene doble núcleo, es más rápido, también tiene Bluetooth y ofrece muchos más pines, canales ADC y memoria. Para proyectos nuevos se prefiere el ESP32.
¿Se puede usar el ESP32 sin internet?
Sí. El ESP32 puede crear su propia red Wi-Fi (modo punto de acceso), varios ESP32 pueden comunicarse entre sí sin router con ESP-NOW y puede conectarse a un móvil por Bluetooth. También puedes usarlo como un Arduino potente sin ninguna de sus funciones inalámbricas.
Proyectos para hacer después de leer esto
Ver todos los proyectos
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.

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.

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). Podrás conectarte desde el navegador a la dirección IP del ESP32 con `/control` y, al pulsar los botones, encender y apagar el LED conec

Contador ESP32 WebSocket (2 botones + pantalla LCD + web en tiempo real)
En este proyecto, el ESP32 utiliza la compatibilidad con WebSocket de ESPAsyncWebServer para enviar en tiempo real a todos los navegadores conectados los valores de temperatura y humedad que lee del sensor DHT11. En lugar del sondeo HTTP estándar, se establece una comunicación bidireccional a través de una única conexión TCP permanente, lo que reduce el retraso a milisegundos. En el navegador, se dibuja un gráfico de líneas en tiempo real utilizando Chart.js con JavaScript puro; el formato de lo

ESP32 HTTPClient + API del tiempo (con pantalla LCD)
En este proyecto, utilizamos el ESP32 para realizar una llamada a la API REST de la página web de información meteorológica (wttr.in) a través de Internet, utilizando `HTTPClient.h`. Analizamos la respuesta JSON devuelta con ArduinoJson v7 y mostramos la información sobre la ciudad, la temperatura, la humedad, el tiempo y el viento en una pantalla LCD I2C, tanto en turco como en inglés. wttr.in es gratuito y no requiere clave API: basta con escribir el nombre de cualquier ciudad para obtener su

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.

Iluminación automática con el sensor de movimiento PIR del ESP32
En este proyecto, utilizaremos el sensor de movimiento PIR HC-SR501 para detectar a las personas que entren en la habitación y encender el LED automáticamente. Cuando se detecte movimiento, el LED permanecerá encendido durante un tiempo determinado y gestionaremos el tiempo mediante la función `millis()` y un contador, sin necesidad de utilizar `delay()`. De este modo, obtendremos un sistema de iluminación con sensor de movimiento que no bloquea el ESP32 y permite realizar otras tareas. En la vi

Sistema de Alarma de Movimiento ESP32 (PIR + Buzzer + LED + Telegram)
Un sistema inteligente de alarma de seguridad que activa el buzzer y el LED cuando el sensor PIR detecta movimiento, y envía simultáneamente una notificación instantánea al propietario vía Telegram. Cuenta con un cooldown de 30 segundos para evitar falsas alarmas. Ideal para seguridad del hogar, vigilancia de garajes, almacenes o salas de trabajo. Con ESP32-CAM se pueden añadir notificaciones con fotos; con el clásico ESP32 DevKit V1 se envían notificaciones de texto.
Más artículos
Aprende en qué se diferencia el ESP32 de Arduino, qué pines son seguros, cómo instalarlo en el Arduino IDE y cómo hacer tu primer proyecto Wi-Fi que enciende un LED desde el móvil.

