Cómo conectar ESP32 a WiFi desde Arduino IDE
Aprende cómo conectar ESP32 a WiFi con Arduino IDE, código probado y solución de errores frecuentes de red, credenciales y desconexiones en tu placa.
Un ESP32 que compila pero no llega a la red no sirve para enviar datos de un sensor, controlar un relé ni publicar una lectura en una pantalla remota. Saber cómo conectar ESP32 a WiFi consiste en cargar unas pocas líneas de código, sí, pero también en verificar frecuencia de red, alimentación, credenciales y mensajes del monitor serie. Ahí es donde suelen aparecer los problemas reales.
Esta guía usa Arduino IDE y una placa ESP32 de desarrollo típica, como ESP32 DevKit. El procedimiento es el mismo para muchas variantes, aunque los pines disponibles, la antena y la estabilidad de alimentación pueden cambiar según el modelo.
Qué necesitas antes de conectar el ESP32 al WiFi
Necesitas una placa ESP32, un cable USB que transmita datos y no solo cargue, Arduino IDE con el paquete de placas ESP32 instalado y acceso a una red WiFi de 2,4 GHz. También conviene tener abierto el monitor serie a 115200 baudios.
El punto crítico es la frecuencia. La mayoría de placas ESP32 clásicas trabajan con WiFi de 2,4 GHz, no con redes exclusivas de 5 GHz. Muchos routers emiten ambas bandas con el mismo nombre de red, y normalmente el ESP32 negocia 2,4 GHz sin intervención. El problema aparece cuando el router está configurado solo en 5 GHz o cuando se intenta conectar a una red corporativa, de universidad o de invitados con portal cautivo.
Un portal cautivo es esa página que pide aceptar condiciones o iniciar sesión después de conectarte. El ESP32 puede asociarse a la red, pero el código básico no puede completar esa autenticación web. Para pruebas y proyectos domésticos, utiliza una red WPA2/WPA3 Personal de 2,4 GHz con contraseña conocida.
Configura Arduino IDE correctamente
En el menú de placas, selecciona el modelo que corresponda a tu hardware. Si tu placa es una ESP32 DevKit genérica y no tienes certeza del fabricante, `ESP32 Dev Module` suele ser un buen punto de partida. Después selecciona el puerto serie que aparece al conectar la placa.
No necesitas instalar una librería WiFi externa para este ejemplo. `WiFi.h` forma parte del paquete para ESP32. Si Arduino IDE informa que no encuentra ese archivo, el problema no es el sketch: falta instalar o actualizar el soporte de placas ESP32.
Antes de culpar a la red, sube un ejemplo sencillo que escriba por el puerto serie. Si la carga falla, si el puerto desaparece o si el monitor muestra caracteres ilegibles, resuelve eso primero. Un cable USB defectuoso y una velocidad serie mal configurada se confunden a menudo con un fallo de WiFi.
Cómo conectar ESP32 a WiFi con código mínimo
Crea un sketch nuevo y carga este código. Cambia `NOMBRE_DE_TU_RED` y `TU_CONTRASENA` por los datos exactos de tu red. Respeta mayúsculas, minúsculas, espacios y caracteres especiales: el SSID y la contraseña son sensibles a esos detalles.
```cpp #include
const char ssid = "NOMBRE_DE_TU_RED"; const char password = "TU_CONTRASENA";
void setup() { Serial.begin(115200); delay(1000);
WiFi.begin(ssid, password); Serial.print("Conectando al WiFi");
while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); }
Serial.println("\nWiFi conectado"); Serial.print("IP local: "); Serial.println(WiFi.localIP()); Serial.print("RSSI: "); Serial.print(WiFi.RSSI()); Serial.println(" dBm"); }
void loop() { } ```
Sube el programa y abre el monitor serie a 115200 baudios. Tras varios puntos, deberías ver el mensaje `WiFi conectado`, una dirección IP local como `192.168.1.35` y la potencia de señal RSSI.
La IP es la dirección que el router asignó al ESP32 dentro de tu red local. Te servirá más adelante si montas un servidor web en la placa, envías datos a otro equipo de la red o quieres identificarla desde el panel del router.
El RSSI se expresa en dBm y tiene valores negativos. Cerca de -40 dBm es una señal muy buena; entre -50 y -67 dBm suele funcionar bien; bajo -75 dBm ya pueden aparecer cortes, reintentos y latencia. No hace falta obsesionarse con un número exacto, pero medirlo evita diseñar un proyecto sobre una conexión marginal.
Por qué este código espera dentro de `setup()`
El bucle `while` detiene la ejecución hasta que el ESP32 obtiene conexión. Para un primer montaje es útil porque confirma rápidamente si la red funciona. Para un dispositivo final no siempre es la mejor opción: si el router está apagado, el ESP32 se quedará bloqueado en ese punto y no ejecutará el resto del proyecto.
En una estación de sensores que debe registrar datos aunque no haya internet, conviene fijar un tiempo máximo de espera y continuar en modo local. En cambio, para un controlador que depende completamente de una API o de MQTT, puede tener sentido reintentar hasta recuperar la red. Depende de qué debe hacer tu equipo cuando el WiFi falla.
Errores frecuentes al conectar un ESP32 al WiFi
Si el monitor serie imprime puntos sin parar, empieza por lo básico: confirma el nombre de red y la contraseña. Copiar y pegar desde un gestor de claves puede introducir espacios invisibles. Como prueba, usa temporalmente una contraseña simple, pero no dejes una red doméstica sin seguridad por comodidad.
Si el ESP32 no detecta una red que sí aparece en tu teléfono, revisa que sea de 2,4 GHz. Algunos routers permiten separar ambas bandas con nombres distintos, por ejemplo `Casa_2G` y `Casa_5G`. Conecta el ESP32 a la primera. También revisa el canal WiFi: las configuraciones regionales extrañas o canales no admitidos pueden dar problemas en placas genéricas.
Cuando se conecta una vez y luego se cae, mira primero la alimentación. El ESP32 tiene picos de consumo durante la transmisión WiFi. Alimentarlo desde un USB débil, un regulador insuficiente o cables muy finos puede provocar reinicios aparentemente aleatorios. Si además controlas relés, motores, tiras LED o servos, no alimentes esas cargas desde el pin de 3,3 V de la placa. Comparte GND cuando corresponda, pero usa una fuente dimensionada para la carga.
También hay que distinguir entre WiFi conectado e internet disponible. `WL_CONNECTED` indica que la placa se asoció al router. No garantiza que el router tenga salida a internet, que DNS funcione ni que un servidor externo responda. Si tu proyecto consume una API, comprueba esas capas por separado.
Reinicios y reconexión sin bloquear el proyecto
El ESP32 suele reconectarse automáticamente, pero no conviene asumir que siempre lo hará en el momento que necesitas. En el `loop()`, puedes vigilar el estado y solicitar una reconexión cuando se haya perdido:
```cpp if (WiFi.status() != WL_CONNECTED) { Serial.println("WiFi desconectado, reintentando..."); WiFi.disconnect(); WiFi.begin(ssid, password); delay(5000); } ```
Este fragmento es suficiente para pruebas, pero tiene una limitación: esos cinco segundos bloquean el resto del programa. Si lees sensores cada pocos milisegundos, controlas un motor o atiendes una interfaz, usa una lógica basada en `millis()` para reintentar sin detener el sistema. Es menos corto, pero más correcto en proyectos que hacen varias tareas.
IP dinámica, IP fija y acceso posterior
Por defecto, el router entrega una IP dinámica mediante DHCP. Es la opción más simple y adecuada para la mayoría de proyectos. El detalle es que la dirección puede cambiar después de reiniciar el router o el ESP32.
Si vas a acceder siempre a un servidor web alojado en la placa, tienes dos alternativas. La más limpia suele ser reservar una IP para la dirección MAC del ESP32 desde el router. La otra es configurar IP estática en el sketch. La reserva desde el router evita conflictos y centraliza la configuración de la red; la IP fija en código puede servir en instalaciones aisladas, pero exige elegir una dirección fuera del rango DHCP o reservarla correctamente.
No asignes una IP al azar solo porque parece libre. Dos dispositivos con la misma IP generan fallos intermitentes difíciles de diagnosticar: a ratos responde uno, a ratos el otro y a veces ninguno.
Credenciales y seguridad en proyectos reales
No publiques el SSID y la contraseña en repositorios, capturas de pantalla o código compartido. Para un prototipo de aula puede bastar con editar el sketch, pero en un proyecto mantenible conviene guardar las credenciales en un archivo local excluido del control de versiones, o implementar una pantalla de configuración inicial.
Tampoco confundas la clave WiFi con la seguridad de tu aplicación. Si el ESP32 controla una cerradura, un relé o cualquier carga relevante, conectarlo a la red es solo el primer paso. Debes autenticar las órdenes, limitar el acceso local y prever qué ocurre tras un reinicio. Un relé que vuelve encendido por una mala inicialización no se arregla con una señal WiFi excelente.
La prueba útil no es solo ver una IP en el monitor serie. Aleja la placa del router, reiníciala varias veces, corta la red durante un minuto y observa cómo se comporta el proyecto. Ese montaje repetido revela antes los límites de alimentación, cobertura y código que cualquier ficha técnica.