Cuando la gente dice «ESP32», casi siempre se refiere a este: el de 2016, dos núcleos y 38 pines. Sigue siendo el que más tutoriales tiene, el más barato con Bluetooth clásico y, aunque ya hay opciones más modernas, sigue teniendo mucho sentido en 2026.
Pero tiene una serie de rincones —pines que no se pueden usar, un ADC que no es tan bonito como promete el marketing— que conviene conocer antes de soldar nada. He perdido más de una tarde por no saberlos, así que vamos a ahorrártelas.
El chip: no todos los «ESP32» son el mismo
Dentro del módulo hay un chip concreto, y no todos son iguales:
| Chip | Qué tiene de especial |
|---|---|
| ESP32-D0WDQ6 | El original, 2 núcleos, QFN 6×6 mm |
| ESP32-D0WD | Igual pero en encapsulado 5×5 mm |
| ESP32-D0WD-V3 | La revisión actual, la que montan los módulos nuevos |
| ESP32-D0WDR2 | Con 2 MB de PSRAM dentro del propio chip |
| ESP32-S0WD | Un solo núcleo (rara de ver) |
Para lo que nos importa aquí: 2 núcleos Xtensa LX6 a 240 MHz, 520 KB de SRAM y 448 KB de ROM. Ese es el «ESP32 clásico».
Los módulos: WROOM, WROVER y compañía
El chip desnudo no se suelda a mano. Va dentro de un módulo con la flash, el cristal y la antena. Los que vas a encontrar:
- ESP32-WROOM-32E — el estándar. 4 MB de flash, antena en la propia PCB. Deja libres GPIO16 y GPIO17.
- ESP32-WROVER-E — igual, pero con 8 MB de PSRAM extra. Ojo: la PSRAM se come GPIO16 y GPIO17, así que si usas esos pines, no puedes usar WROVER.
- ESP32-WROOM-32UE / WROVER-IE — sin antena de PCB, con conector U.FL para poner una antena externa. La solución cuando el ESP32 va dentro de una caja metálica.
Dato de 2026: para diseños nuevos, Espressif recomienda la serie E (ESP32-WROOM-32E / WROVER-E). Los módulos antiguos sin la «E» están marcados como not recommended for new designs.
Y en la cara de atrás se ve dónde está cada cosa:
La placa que vas a comprar
El módulo se monta en una placa de desarrollo (devkit) que le añade USB,
regulador y dos botones: EN (reset) y BOOT (para flashear). La de siempre es
la ESP32-DevKitC.
Un aviso que vale dinero: estas placas no llevan USB nativo. El puerto es un chip puente (CP2102 o CH340) que habla con el ESP32 por UART. Si tienes problemas para flashear, casi siempre es el driver de ese chip, no el ESP32.
Especificaciones, sin adornos
| Cosa | Valor |
|---|---|
| Núcleos | 2 × Xtensa LX6 @ hasta 240 MHz |
| SRAM | 520 KB |
| Wi-Fi | 802.11 b/g/n (2,4 GHz) |
| Bluetooth | 4.2 clásico (BR/EDR) + BLE |
| GPIOs | 34 en total, ~25 usables |
| ADC | 18 canales de 12 bits (ADC1 + ADC2) |
| DAC | 2 canales de 8 bits |
| Touch | 10 pines capacitivos |
| Periféricos | 3×UART, 2×I2C, SPI, 2×I2S, CAN (TWAI), SD/MMC, PWM, RMT |
Lo de Bluetooth clásico es exclusivo del clásico: ni el S2, ni el C3, ni el S3 lo tienen. Si tu proyecto habla con un altavoz o un mando antiguo por Bluetooth «de toda la vida», este es tu chip.
El pinout de 38 pines
Si vienes de Arduino, aquí hay un cambio de mentalidad: no todos los pines sirven para todo. Hay pines de solo entrada, pines que definen cómo arranca el chip y pines que están literalmente ocupados por dentro. Vamos por partes.
Los pines que sí molan
El DAC (GPIO25 y GPIO26)
El clásico lleva dos salidas analógicas de verdad (8 bits). El C3, por ejemplo, no tiene ninguna. Puedes sacar una tensión real, generar una onda o hacer un sintetizador mediocre pero divertido.
Touch: 10 pines que detectan tu dedo
Sin sensor extra, el chip mide la capacidad de GPIO0, 2, 4, 12, 13, 14, 15, 27, 32 y 33. Perfecto para botones sin partes móviles. (Este periférico desapareció en el S2 y el S3, así que si lo necesitas, tienes que volver al clásico.)
ADC1: el que funciona con Wi-Fi
GPIO32 a GPIO39 son el ADC1. Son los únicos que puedes usar mientras el Wi-Fi está encendido. Grábate esto, porque es la causa número uno de «mi sensor da valores aleatorios».
Y algunos extras poco conocidos
- Sensor Hall interno, sin usar ningún pin.
- Sensor de temperatura interno (poco preciso, pero existe).
- CAN (TWAI) por hardware, sin módulo externo.
Los pines que te van a arruinar el día
GPIO6 a GPIO11: la flash
Están conectados a la memoria flash. No los uses, nunca. Si los tocas, el ESP32 deja de arrancar y parece muerto. No está muerto: vuelve a flashear y respira.
Los pines de arranque (strapping)
Al encenderse, el chip mira estos pines para decidir cómo arrancar:
| Pin | Qué hace si está mal |
|---|---|
| GPIO0 | A LOW entra en modo flash; como salida puede impedir el arranque |
| GPIO2 | Debe estar LOW o flotante al arrancar |
| GPIO12 | Si está HIGH al arrancar, adiós (tiene que ver con la tensión de flash) |
| GPIO15 | Debe estar HIGH; si no, se silencia el log de arranque |
Regla práctica: no pongas nada crítico en esos pines y, si lo haces, revisa el estado al arrancar.
GPIO34 a GPIO39: solo entrada
No tienen pull-up ni pull-down internos y no se pueden usar como salida. Son perfectos para un sensor que solo hay que leer, pero si intentas encender un LED con ellos, no funciona y te pasarás un rato pensando que el LED está roto.
El ADC miente (y cómo domarlo)
Este es el detalle que más frustra a la gente. El ADC del ESP32 tiene 12 bits, pero:
- No es lineal. Cerca de 0 V y cerca de los 3,3 V se desvía bastante.
- Tiene offset. Con la atenuación de 11 dB, arriba del rango se satura antes de lo que dice el datasheet.
- Necesita calibración. ESP-IDF incluye una API de calibración por eFuse. Úsala.
- ADC2 no funciona con Wi-Fi activo. Repetimos: usa ADC1.
Si necesitas medidas decentes y estables, un ADS1115 externo por I2C te ahorrará muchos quebraderos de cabeza.
PSRAM: cuándo la necesitas
La PSRAM es memoria extra (típicamente 8 MB en el WROVER). La necesitas si vas a guardar buffers grandes: imágenes, audio, JSONs enormes o buffers de red.
Si tu proyecto son sensores y un par de LEDs, no la necesitas y el WROOM es más barato. Y recuerda el peaje: la PSRAM ocupa GPIO16 y GPIO17.
¿Cuándo elegir el clásico (y cuándo no)?
Sí, elige el clásico si…
- Necesitas Bluetooth clásico (no solo BLE).
- Quieres DAC, touch o CAN sin añadir nada.
- Necesitas muchos GPIOs y que GPIO16/17 estén libres.
- Sigues un tutorial que asume el clásico y no quieres pelearte con pines distintos.
Mejor otra cosa si…
- Quieres lo más barato y moderno: un C3 hace casi lo mismo por menos.
- Necesitas USB nativo (HID, JTAG): S2, S3, C3 o C6.
- Necesitas cámara, audio o IA: ESP32-S3.
- Quieres Matter/Thread/Zigbee: C6 o H2.
Herramientas actuales (2026)
Si vas a programarlo, estas son las versiones vivas a día de hoy:
| Herramienta | Versión actual |
|---|---|
| ESP-IDF | 6.1 |
| Arduino core | 3.3.11 (sobre ESP-IDF 5.5.5) |
PlatformIO (platform-espressif32) | 7.1.3 |
| MicroPython | 1.29 |
esp-hal (Rust) | 1.2.0 |
Errores típicos con el clásico
- Intentar usar GPIO6–11 «porque están libres en el dibujo».
- Poner un LED en GPIO34–39 y no entender por qué no enciende.
- Leer un potenciómetro por ADC2 y flipar con los valores al encender el Wi-Fi.
- Usar GPIO12 como salida y que la placa arranque cuando le da la gana.
- Comprar un WROVER para usar GPIO16/17 y descubrir que están ocupados.
- Culpar al código cuando el problema es el driver CH340.
Resumen
- El ESP32 clásico son 2 núcleos LX6, 520 KB de SRAM, Wi-Fi 4 y Bluetooth clásico + BLE.
- Los módulos que verás: WROOM-32E (sin PSRAM) y WROVER-E (con PSRAM, pero se come GPIO16/17).
- Tiene cosas únicas: DAC, touch, CAN y Bluetooth clásico.
- Cuidado con GPIO6–11, los pines de strapping (0, 2, 12, 15) y los GPIO34–39 (solo entrada).
- El ADC2 no funciona con Wi-Fi; usa ADC1 y, si necesitas precisión, un ADS1115.
Siguiente paso: si quieres algo más pequeño, barato y con USB nativo, en la Parte 3 le toca el turno al ESP32-S2. Y si todavía no tienes placa, empieza por la Parte 1: qué es el ESP32 y su familia.
Créditos de las imágenes
Fotografías de Wikimedia Commons:
- Módulo ESP32-WROOM-32 (frontal y trasera) y ESP32-DevKitC — Ubahnverleih (CC0)
- Pinout del ESP32 DevKitC — Vishnu Maiea (CC BY-SA 4.0)