Fundamentos · 6 min de lectura

¿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).

Placa de desarrollo ESP32 DevKit
Placa de desarrollo ESP32: el procesador, el Wi-Fi y el Bluetooth están dentro del módulo con tapa metálica; la placa lleva además un chip USB-serie, un regulador y los botones EN y BOOT.

¿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ísticaArduino Uno R3ESP32 (WROOM-32)
ProcesadorATmega328P, 8 bits, 16 MHzXtensa LX6, doble núcleo, 32 bits, 240 MHz
RAM2 KB520 KB
Memoria de programa (flash)32 KBNormalmente 4 MB
Conexión inalámbricaNo tieneWi-Fi + Bluetooth (Classic y BLE)
Tensión de trabajo5 V3,3 V
GPIO utilizables20Unos 34 (algunos solo de entrada)
Entradas analógicas (ADC)6 canales, 10 bits18 canales, 12 bits
Salidas analógicas (DAC)No tiene2 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:

PinesEstadoNota
GPIO 6–11No usarConectados a la flash interna; si se usan, la placa se cuelga
GPIO 34–39Solo entradaNo pueden dar salida ni tienen pull-up interna
GPIO 0, 2, 12, 15Usar con cuidadoSu nivel durante el arranque es importante
GPIO 1 y 3Usar con cuidadoTX 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 activadoPara lecturas analógicas usa ADC1 (GPIO 32–39)
GPIO 4, 5, 13, 14, 16–19, 21–23, 25–27, 32, 33SegurosEntrada y salida de uso general
Los pines del ESP32 trabajan a 3,3 V y no toleran 5 V. No conectes directamente un sensor con salida de 5 V (como el pin ECHO del HC-SR04); pon en medio un Divisor de tensión o un convertidor de nivel. Sacar hasta unos 20 mA de un pin es seguro.

Instalar el ESP32 en el Arduino IDE

  1. 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».
  2. En el Gestor de tarjetas busca esp32 e instala el paquete de Espressif Systems.
  3. Elige ESP32 Dev Module en Herramientas > Placa.
  4. 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).
  5. 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:

Arduino (C++)
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:

Arduino (C++)
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}
El ESP32 solo puede conectarse a redes Wi-Fi de 2,4 GHz; no ve las redes de 5 GHz. Si tu router emite las dos bandas con el mismo nombre y tienes problemas de conexión, ayuda dar un nombre propio a la banda de 2,4 GHz.

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é?

Arduino (C++)
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?

ModeloCaracterística destacadaCuándo elegirlo
ESP32 (WROOM-32 DevKit)Wi-Fi, Bluetooth Classic y BLE, doble núcleoPrimera placa para todo
ESP32-S3USB nativo, más RAM, instrucciones para IAProyectos con cámara, audio, teclado y ratón USB
ESP32-C3Un núcleo RISC-V, Wi-Fi y BLE, pequeño y baratoSensores IoT sencillos
ESP32-CAMCámara y ranura microSDEnvío de imágenes, cámara de vigilancia
ESP8266 (NodeMCU, Wemos D1)Más antiguo, un núcleo, solo Wi-FiProyectos 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:

MicroPython
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.

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
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). 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

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, 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

4.5(14)
23
ESP32 HTTPClient + API del tiempo (con pantalla LCD)
#133Avanzado
Premium

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

4.7(13)
20
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
Iluminación automática con el sensor de movimiento PIR del ESP32
#121Intermedio
Premium

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

4.4(24)
38
Sistema de Alarma de Movimiento ESP32 (PIR + Buzzer + LED + Telegram)
#145Avanzado
Premium

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.

0.0(0)
8

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.

¿Qué es el ESP32? Características, instalación en el Arduino IDE y primer proyecto Wi-Fi | BlueGrays