Si estás empezando un proyecto conectado, tarde o temprano alguien te va a recomendar un ESP32. Es el microcontrolador más usado en proyectos IoT de aficionados y en muchos productos comerciales, y tiene motivos: Wi-Fi y Bluetooth integrados, mucha potencia por muy poco dinero y una comunidad enorme.
Esta guía reúne lo que necesitas saber para elegir y empezar: qué es, en qué se diferencian los modelos, cómo se programa y qué errores evitar. Está escrita desde la experiencia práctica con ESP32-S3 y ESP32-C3 en proyectos de domótica.
Qué es un ESP32
El ESP32 es una familia de microcontroladores de la empresa china Espressif Systems. Un microcontrolador es un pequeño computador en un solo chip: procesador, memoria y periféricos (pines de entrada y salida, conversores analógicos, comunicaciones), pensado para controlar hardware.
Lo que hizo popular al ESP32 es que trae la radio integrada. Con un Arduino Uno necesitas un módulo aparte para conectarte a Wi-Fi; con un ESP32, el Wi-Fi y el Bluetooth vienen en el mismo chip. Eso abarata y simplifica cualquier proyecto que tenga que hablar con un celular, con un router o con la nube.
Cuando compras "un ESP32", casi nunca compras el chip suelto, sino:
- Un módulo: el chip con su memoria flash, el cristal y la antena, sobre una pequeña placa metálica certificada para emitir radio (por ejemplo, la serie WROOM).
- Una placa de desarrollo: el módulo con un puerto USB, un regulador de voltaje y pines listos para conectar. Son las que se usan para prototipos, como las DevKit o las Super Mini.
La familia ESP32: qué modelo es cuál
El nombre "ESP32" se usa para toda la familia, pero hay modelos con diferencias importantes:
| Modelo | Procesador | Radio | Para qué destaca |
|---|---|---|---|
| ESP32 (el clásico) | 2 núcleos Xtensa LX6 | Wi-Fi 4, Bluetooth clásico y BLE | El más documentado; audio por Bluetooth clásico |
| ESP32-S2 | 1 núcleo Xtensa LX7 | Wi-Fi 4, sin Bluetooth | USB nativo; bajo costo |
| ESP32-S3 | 2 núcleos Xtensa LX7 | Wi-Fi 4 y BLE 5 | Potencia, USB nativo, instrucciones para IA y procesamiento de señales |
| ESP32-C3 | 1 núcleo RISC-V | Wi-Fi 4 y BLE 5 | Barato y suficiente para tareas simples |
| ESP32-C6 | RISC-V | Wi-Fi 6, BLE 5 y 802.15.4 (Thread, Zigbee) | Domótica con Thread y Matter |
| ESP32-H2 | RISC-V | BLE 5 y 802.15.4, sin Wi-Fi | Dispositivos Thread o Zigbee de bajo consumo |
Espressif sigue sacando modelos nuevos, así que revisa su web para la lista actualizada. Para la mayoría de los proyectos, la elección real está entre tres: el ESP32 clásico, el S3 y el C3.
Cómo elegir el modelo para tu proyecto
La pregunta no es "cuál es mejor", sino qué va a hacer la placa:
- Si mantiene una conexión segura con la nube (TLS con AWS IoT, HTTPS, MQTT seguro) y además hace otras cosas, elige un ESP32-S3 o un ESP32 clásico. Los dos núcleos y la memoria extra dan margen.
- Si hace una sola tarea simple (mover un relé, leer un sensor) y se repite muchas veces en el proyecto, un ESP32-C3 es más barato y suficiente.
- Si necesitas Bluetooth clásico (por ejemplo, audio a un parlante), solo lo tiene el ESP32 clásico.
- Si quieres Thread o Zigbee, para domótica compatible con Matter, mira el ESP32-C6 o el H2.
- Si vas a procesar audio o imagen (voz local, cámara), el S3 con memoria PSRAM.
Un reparto habitual en domótica: un ESP32-S3 como pasarela (TLS, MQTT, JSON, ESP-NOW y un servidor web al mismo tiempo) y ESP32-C3 en cada luz. Un C3 también puede hacer de pasarela, pero con menos margen. La comparación completa, con un sketch para medir la RAM libre de tu placa, está en la parte 2 de la serie de domótica.
Las memorias del ESP32
Tres memorias que conviene distinguir:
- SRAM interna: la memoria de trabajo, unos cientos de KB. Aquí viven las variables, la pila de cada tarea y los buffers de Wi-Fi y TLS. Es la que se agota primero.
- Flash: donde se guarda el programa y los datos permanentes, normalmente de 4 a 16 MB. Una parte, la partición NVS, sirve para guardar configuración que sobrevive a los reinicios.
- PSRAM (opcional): memoria externa adicional, de 2 a 8 MB, que traen algunos módulos. Útil para imágenes, audio o buffers grandes.
Si tu proyecto usa TLS, mira siempre la RAM libre después de conectar. Es el primer recurso que se queda corto. Para guardar configuración en la flash, tienes una guía completa en la parte 6, sobre NVS y Preferences.
Cómo se programa
Hay varias formas, según tu experiencia y tu proyecto:
| Entorno | Lenguaje | Para quién |
|---|---|---|
| Arduino IDE / Arduino CLI | C++ con el estilo de Arduino | La forma más rápida de empezar; enorme cantidad de librerías y ejemplos |
| ESP-IDF | C | El framework oficial de Espressif: control total, para productos y proyectos exigentes |
| PlatformIO | C++ (Arduino o ESP-IDF) | Un entorno más profesional dentro de VS Code |
| MicroPython | Python | Si prefieres Python y el rendimiento no es crítico |
| ESPHome | Configuración YAML | Dispositivos para Home Assistant sin escribir código |
La serie de domótica de este blog está escrita con Arduino, porque el núcleo de Arduino para ESP32 está construido sobre ESP-IDF y da acceso a casi todo (ESP-NOW, Wi-Fi, NVS, tareas de FreeRTOS) con mucho menos código.
Primeros pasos con Arduino IDE
- Instala Arduino IDE.
- En Archivo → Preferencias → Gestor de URLs adicionales de tarjetas, agrega:
https://espressif.github.io/arduino-esp32/package_esp32_index.json - En Herramientas → Placa → Gestor de tarjetas, busca esp32 e instala el paquete de Espressif.
- Elige tu placa (por ejemplo, ESP32S3 Dev Module o ESP32C3 Dev Module) y el puerto.
- Si tu placa usa el USB nativo del chip (las S3 y C3 Super Mini, por ejemplo), activa Herramientas → USB CDC On Boot → Enabled para ver el Monitor Serie.
Un primer programa para comprobar que todo funciona:
#define LED_PIN 2 // cambia al pin del LED de tu placa
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
}
void loop() {
digitalWrite(LED_PIN, HIGH);
Serial.println("LED encendido");
delay(500);
digitalWrite(LED_PIN, LOW);
delay(500);
}
El pin del LED cambia según la placa, y en algunas el LED se enciende con LOW. En el ESP32-C3 Super Mini, por ejemplo, está en el GPIO 8 y funciona al revés.
Cómo se comunica
El ESP32 tiene varias formas de hablar con otros dispositivos, y elegir bien cambia la arquitectura del proyecto:
- Wi-Fi: para conectarse a internet o a tu red local (HTTP, MQTT, WebSocket).
- ESP-NOW: comunicación directa entre ESP32, sin router, con mensajes pequeños y muy baja latencia.
- Bluetooth LE: para hablar con el celular o con sensores cercanos.
- Thread y Zigbee (C6 y H2): redes de malla para domótica.
Es común combinar dos: un ESP32-S3 usa Wi-Fi para hablar con la nube, y varios ESP32-C3 usan ESP-NOW para hablar con él sin conectarse al router. Lo explico en la parte 4, sobre ESP-NOW, y en la guía de comunicación de este blog.
Errores comunes al empezar
- El computador no detecta la placa. Muchos cables USB solo cargan y no transmiten datos. Prueba otro cable antes de buscar drivers.
- El Monitor Serie no muestra nada. En placas con USB nativo, activa USB CDC On Boot. Y después de reiniciar, espera un par de segundos antes de imprimir.
- La placa no arranca con algo conectado. Algunos pines (los de arranque, o strapping pins) deciden cómo arranca el chip. Revisa el pinout de tu modelo antes de conectar botones o relés.
- Se reinicia sola al conectar el Wi-Fi. Suele ser alimentación insuficiente: el Wi-Fi tiene picos de consumo. Usa una fuente de calidad o un cable más corto.
- Se queda sin memoria con TLS. Mira
ESP.getFreeHeap()después de conectar. En chips con menos RAM, amplía la pila de la tarea principal o elige un modelo más grande. - La conexión a la nube se cierra sola. Antes de culpar al hardware, revisa los permisos. En AWS IoT, un
CLIENT_ERRORcasi siempre es la política. Lo cuento en la parte 5.
Preguntas frecuentes
¿El ESP32 reemplaza a Arduino?
Arduino es a la vez una marca de placas y un entorno de programación. El ESP32 se programa con el entorno de Arduino, así que puedes usar casi todo lo que ya sabes. Como placa, el ESP32 es mucho más potente que un Arduino Uno y además trae Wi-Fi y Bluetooth.
¿Cuánto consume?
Con Wi-Fi activo, del orden de cien miliamperios, con picos mayores al transmitir. En sueño profundo baja a microamperios. Para un dispositivo con batería, el diseño importa más que el chip: despertar, medir, enviar y volver a dormir.
¿Es seguro para un producto real?
Sí, si usas lo que ofrece: arranque seguro, cifrado de la flash, certificados por dispositivo y actualizaciones firmadas. Las bases están en la guía de seguridad IoT de este blog.
¿Qué placa compro para empezar?
Una placa de desarrollo con ESP32-S3 o ESP32 clásico, con USB. Son baratas, tienen margen para casi cualquier proyecto y la documentación es abundante.