Programar el ESP32 con el IDE de Arduino
El Arduino IDE no trae soporte para el ESP32 de fábrica: hay que añadir su gestor de placas antes de poder compilar y subir código. Una vez hecho ese paso, programar un ESP32 es casi idéntico a programar un Arduino UNO, con algunas diferencias importantes que conviene conocer.
Requisitos previos
- Arduino IDE (2.x recomendado) ya instalado.
- Un cable USB de datos, no solo de carga.
- Conexión a internet la primera vez, para descargar el paquete de la placa.
- En algunos clones, los controladores CP2102 o CH340 del chip USB-serie.
1. Añadir el gestor de placas ESP32
- Abre Archivo → Preferencias (File → Preferences).
- En el campo URLs Adicionales de Gestor de Tarjetas, pega esta URL:
URL
https://espressif.github.io/arduino-esp32/package_esp32_index.json - Pulsa OK y ve a Herramientas → Placa → Gestor de tarjetas.
- Busca
esp32e instala el paquete esp32 by Espressif Systems.
La primera instalación tarda varios minutos
El paquete incluye el compilador y las herramientas de subida para todos los modelos de la familia (ESP32, S2, S3, C3, C6, H2...), así que puede pesar más de un gigabyte. Es un proceso que solo se hace una vez por ordenador.
2. Conectar y configurar la placa
Conecta el ESP32 al ordenador con el cable USB y configura estos ajustes en el menú Herramientas:
| Ajuste | Valor habitual | Nota |
|---|---|---|
Board | ESP32 Dev Module | O el nombre específico de tu placa si aparece en la lista |
Port | COM7 (Windows) o /dev/ttyUSB0 (Linux) | Varía según el ordenador y el puerto USB |
Upload Speed | 921600 | Bájalo a 115200 si la subida falla |
Flash Frequency | 80MHz | El valor por defecto suele funcionar bien |
A diferencia de un Arduino UNO, la mayoría de placas ESP32 tienen un circuito de auto-reseteo que entra en modo de subida solo, sin pulsar ningún botón. Si la subida se queda colgada en Connecting..., mantén pulsado el botón BOOT mientras empieza la subida y suéltalo en cuanto veas que conecta.
3. Programa de prueba: parpadeo adaptado al ESP32
El ESP32 no siempre define LED_BUILTIN. En la mayoría de placas de desarrollo el LED integrado está en el GPIO2, aunque conviene revisar la serigrafía de tu placa:
const int LED = 2;
void setup() {
pinMode(LED, OUTPUT);
}
void loop() {
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
delay(500);
}
Pulsa Verificar para compilar y Subir para cargarlo. Al terminar, el LED debería parpadear cada medio segundo sin necesidad de reiniciar la placa manualmente.
Diferencias frente a un Arduino UNO
Los pines del ESP32 trabajan a 3.3V, no a 5V
A diferencia del UNO, los GPIO del ESP32 no toleran 5V. Conectar directamente un sensor o módulo de 5V a una entrada puede dañar el chip de forma permanente. Si necesitas usar un componente de 5V, añade un divisor de voltaje o un conversor de nivel lógico entre medias.
- Lógica de 3.3V: tanto las entradas como las salidas digitales trabajan en este rango.
- Sin salida analógica real en los modelos sin DAC: hay que simular voltajes intermedios con PWM (
ledcWrite) en vez deanalogWritepuro. - Memoria particionada: el menú Herramientas → Partition Scheme permite repartir la flash entre el programa y un sistema de archivos (SPIFFS o LittleFS) si vas a guardar datos en la propia placa.
- Wi-Fi y Bluetooth integrados: no hacen falta módulos externos ni pines adicionales para conectarse a una red.
Solución de problemas comunes
| Problema | Causa probable | Solución |
|---|---|---|
Failed to connect to ESP32: Wrong boot mode | La placa no entró en modo de subida a tiempo | Mantén pulsado BOOT justo cuando empieza la subida |
| El puerto no aparece en Port | Faltan los controladores del chip USB-serie o el cable es solo de carga | Instala el driver CP2102/CH340 y prueba con otro cable |
| La subida es muy lenta o falla a mitad | Velocidad de subida demasiado alta para el cable o el puerto | Baja Upload Speed a 115200 |
| Sube bien pero el programa no arranca | La placa se queda esperando tras la subida | Pulsa el botón EN / RST para reiniciarla |
Con esto ya tienes un flujo de trabajo completo: instalar el gestor de placas, configurar el puerto correcto y subir tu primer programa. A partir de aquí, cualquier ejemplo de Arduino UNO se puede adaptar al ESP32 teniendo en cuenta la tensión de 3.3V y los pines específicos de cada modelo.