ESP32 (original, clase ESP32-WROOM-32)
⚡ Lo esencial en 60 segundos
- cpu — dual-core Tensilica Xtensa LX6 @ up to 240 MHz (80/160/240 MHz selectable), plus a ULP协processor on the RTC domain; 520 KB SRAM + 16 KB RTC SRAM, 448 KB ROM (
- gpu — none.
- storage — external SPI flash, typically 4 MB (WROOM-32), up to 16 MB; WROVER adds 4–8 MB PSRAM (
- connectivity — Wi-Fi 802.11 b/g/n 2.4 GHz (150 Mbps HT40) + Bluetooth Classic + BLE 4.2; Ethernet (external PHY), CAN 2.0, SDIO, 10/100 MAC ( ESP-IDF docs
- gpio — 34 usable GPIOs (GPIO34–39 input-only, no pull-ups; GPIO6–11 strapping/flash on older modules — treat as unavailable). Peripherals: 3× SPI, 3× UART, 2× I2C, 1× I2S, SDMMC, 16× LEDC PWM channels (8-bit duty, up to 40 MHz), RMT (8 TX/8 RX), 2× 8-bit DAC (GPIO25/26), touch sensing (10 pads), hall sensor, 12-bit ADC (18 external channels across ADC1/ADC2; ADC2 is unusable while Wi-Fi runs) (ESP32 datasheet ESP-IDF API docs
- logic_level — 3.3 v
- En esta placa : 9 tutoriales · 10 código
Lanzada al mercado el 6 de septiembre de 2016, la familia de microcontroladores ESP32, desarrollada por Espressif Systems y fabricada mediante un proceso de 40 nanómetros, representa un hito fundamental en la historia del hardware de código abierto. Su relevancia no radica únicamente en su rendimiento, sino en su capacidad para ofrecer conectividad inalámbrica completa a un costo extremadamente bajo, lo que democratizó el desarrollo de proyectos de Internet de las Cosas. Aunque existen diversas variantes de chips y módulos, como los populares ESP32-WROOM-32 o los más recientes ESP32-S3, la arquitectura central se mantiene consistente: un sistema en chip que integra todo lo necesario para crear dispositivos inteligentes conectados sin necesidad de componentes externos complejos. Es importante notar que, aunque el precio de lanzamiento se estimó entre 2.5 y 5 dólares por unidad en volumen, el costo real puede variar según el distribuidor y la cantidad, siendo los módulos comerciales actuales accesibles para cualquier entusiasta o profesional.
El corazón de esta plataforma es un procesador de doble núcleo basado en la arquitectura Tensilica Xtensa LX6. Para entender la importancia de tener dos núcleos, imaginemos una cocina con dos cocineros; mientras uno se encarga de gestionar la comunicación con el mundo exterior, como el Wi-Fi o el Bluetooth, el otro puede dedicarse exclusivamente a las tareas principales de la aplicación, como leer sensores o controlar motores. Esto evita que el sistema se vuelva lento o responda con retraso cuando la red está ocupada. La frecuencia de reloj es configurable, permitiendo elegir entre 80, 160 o hasta 240 megahercios, lo que ofrece flexibilidad para equilibrar el rendimiento con el consumo de energía. Además, cuenta con 520 kilobytes de memoria RAM estática, una cantidad significativa para un microcontrolador, que permite ejecutar sistemas operativos en tiempo real como FreeRTOS, el cual es la base del entorno de desarrollo oficial ESP-IDF.
En cuanto a la conectividad, el ESP32 fue uno de los primeros microcontroladores de bajo costo en integrar tanto Wi-Fi de la norma 802.11 b/g/n en la banda de 2.4 GHz como Bluetooth Clásico y Bluetooth de Baja Energía (BLE 4.2). Esta combinación permite proyectos muy variados, desde servidores web simples hasta dispositivos que interactúan con teléfonos móviles mediante protocolos de audio o teclado virtual. También incluye soporte para Ethernet mediante un controlador MAC integrado, aunque requiere un chip físico externo, y protocolos industriales como CAN 2.0. La seguridad es otro pilar, con aceleradores de hardware para cifrado AES y SHA, además de funciones de arranque seguro que protegen el firmware contra modificaciones no autorizadas, una característica crucial para productos comerciales.
La interfaz con el mundo físico se realiza a través de 34 pines de entrada/salida de propósito general, conocidos como GPIO. Sin embargo, es vital comprender sus limitaciones para evitar errores comunes. Por ejemplo, los pines GPIO34 a 39 son exclusivamente de entrada y carecen de resistencias internas de pull-up o pull-down, lo que significa que no pueden enviar señales ni funcionar correctamente con botones simples sin componentes externos. Asimismo, los pines GPIO6 a 11 están reservados para la memoria flash interna en muchos módulos, por lo que deben tratarse como no disponibles para el usuario. El nivel lógico de operación es de 3.3 voltios, y no es tolerante a 5 voltios, por lo que conectarlo directamente a dispositivos de mayor voltaje puede dañar el chip. Entre sus periféricos destacados se encuentran tres interfaces SPI, tres UART, dos I2C, canales de modulación por ancho de pulso (PWM) de alta resolución y sensores táctiles capacitivos que permiten crear interfaces de usuario sin botones mecánicos.
El consumo de energía es un aspecto crítico en dispositivos portátiles. El ESP32 ofrece múltiples modos de bajo consumo, desde el sueño ligero hasta el sueño profundo, donde el consumo puede bajar a unos 10 microamperios, permitiendo que una batería pequeña dure meses o años si el dispositivo solo se despierta periódicamente. No obstante, durante la transmisión de Wi-Fi, el consumo puede superar los 500 miliamperios en picos breves, lo que exige una fuente de alimentación robusta con condensadores de reserva para evitar reinicios inesperados conocidos como "brownout". También es importante mencionar que el sensor de temperatura integrado no está calibrado y presenta grandes desviaciones, por lo que no debe utilizarse para mediciones precisas.
El ecosistema de software es uno de sus mayores activos. Los desarrolladores pueden elegir entre el entorno oficial ESP-IDF basado en C/C++, que ofrece el máximo control y acceso a todas las funciones del hardware, o el núcleo para Arduino, que simplifica enormemente la programación para principiantes. También hay soporte oficial para MicroPython y CircuitPython, permitiendo programar en lenguaje Python, así como para sistemas operativos en tiempo real como Zephyr y lenguajes modernos como Rust. La comunidad es extremadamente activa, proporcionando librerías para casi cualquier sensor o protocolo imaginable, desde control de luces LED direccionables hasta integración con plataformas de domótica como Home Assistant mediante Tasmota o ESPHome.
A pesar de sus virtudes, existen trampas conocidas que los nuevos usuarios deben conocer. El conversor analógico-digital (ADC) presenta no linealidades en los extremos de su rango y, crucialmente, el segundo conversor (ADC2) no funciona cuando el Wi-Fi está activo debido a conflictos de hardware. Por ello, se recomienda usar siempre los pines del ADC1 (como GPIO32 a 39) para lecturas analógicas en proyectos conectados. Otro punto sensible son los pines de arranque (GPIO0, GPIO2, GPIO12); una conexión incorrecta en el GPIO12 puede impedir que el chip inicie correctamente, un error frecuente en prototipos. Finalmente, la coexistencia de Wi-Fi y Bluetooth puede reducir el rendimiento de ambos, ya que comparten la misma antena, por lo que en aplicaciones críticas de rendimiento se debe evaluar si es necesario usar ambos simultáneamente. En resumen, el ESP32 sigue siendo una plataforma versátil, potente y económica, ideal para aprender y prototipar, siempre que se respeten sus particularidades técnicas y se aproveche su rico ecosistema de software.



Esquema de pines (pinout)

| Attr | Especificaciones | verificado |
|---|---|---|
cpu | dual-core Tensilica Xtensa LX6 @ up to 240 MHz (80/160/240 MHz selectable), plus a ULP协processor on the RTC domain; 520 KB SRAM + 16 KB RTC SRAM, 448 KB ROM ( | ✔ |
gpu | none. | ? sin verificar |
storage | external SPI flash, typically 4 MB (WROOM-32), up to 16 MB; WROVER adds 4–8 MB PSRAM ( | ✔ |
connectivity | Wi-Fi 802.11 b/g/n 2.4 GHz (150 Mbps HT40) + Bluetooth Classic + BLE 4.2; Ethernet (external PHY), CAN 2.0, SDIO, 10/100 MAC ( ESP-IDF docs | ✔ |
gpio | 34 usable GPIOs (GPIO34–39 input-only, no pull-ups; GPIO6–11 strapping/flash on older modules — treat as unavailable). Peripherals: 3× SPI, 3× UART, 2× I2C, 1× I2S, SDMMC, 16× LEDC PWM channels (8-bit duty, up to 40 MHz), RMT (8 TX/8 RX), 2× 8-bit DAC (GPIO25/26), touch sensing (10 pads), hall sensor, 12-bit ADC (18 external channels across ADC1/ADC2; ADC2 is unusable while Wi-Fi runs) (ESP32 datasheet ESP-IDF API docs | ✔ |
logic_level | 3.3 v | ? sin verificar |
power | ultra-low-power modes (modem-sleep, light-sleep, deep-sleep ~10 µA class with RTC timer wake, ULP-sleep) per Espressif's power-management docs ( Wi-Fi TX draws ~ hundreds of mA peaks — design the 3.3 V rail for ≥ 500 mA. | ✔ |
temperature | –40 °C to +125 °C (industrial grade, per Espressif product page: | ✔ |
- Fabricante: Espressif Systems (Shanghái); fabricado por TSMC en proceso de 40 nm (
- Lanzamiento: 6 de septiembre de 2016 (
- Estado: Activo. Sigue vendiéndose y con soporte (target esp32 de ESP-IDF), con la revisión de silicio ESP32 ECO V3 (2020) que corrige errores de los wafers anteriores, ESP32-D0WD, ESP32-S0WD (un núcleo), ESP32-U4WDH, ESP32-PICO-D4/V3/V3-02 (SiP, 34/31/29 GPIO) (
- Variantes de módulo: ESP32-WROOM-32/-32D/-32E/-32U, ESP32-WROVER/-B/-E (con 4/8 MB de PSRAM), ESP32-SOLO-1 (
- Placas comunes: ESP32-DevKitC, clones ESP32-WROOM-32 "de 30 pines", ESP32-CAM (AI-Thinker), NodeMCU-32S, DOIT DevKit V1.
+ Puntos fuertes
- Primer MCU dual-core de bajo coste con Wi-Fi y Bluetooth Classic + BLE — habilita proyectos de audio clase SPP/BLE HID/OTA (
- Periféricos "exóticos" y ricos para su clase: hall sensor, 10 pads táctiles capacitivos, RMT (bit-banging de clase WS2812 en hardware), PWM para control de motores, CAN, Ethernet MAC, SDIO, coprocesador ULP tipo RISC-V para lógica de wake de µA (URL del datasheet ESP32 más arriba).
- Aceleradores criptográficos de hardware (AES/SHA/RSA), secure boot, cifrado de flash, almacenamiento de claves en eFuse (
- Doble núcleo → la división de tareas FreeRTOS (Wi-Fi/BT en CPU0, app en CPU1) es la arquitectura canónica (
- Protocolo peer-to-peer ESP-NOW sin conexión TCP/IP (
− Puntos débiles
- Lista oficial de erratas mantenida por Espressif (bugs de ADC, SDIO, BT-sleep, RTC por revisión; ECO V3 corrige varios):
- ADC2 inutilizable con Wi-Fi: los pines de ADC2 entran en conflicto con el driver de Wi-Fi — la trampa clásica de "ADC2 reads return 0 when Wi-Fi on" (
- No linealidad del ADC: las lecturas crudas del ADC son notablemente no lineales en los extremos; usa la API de calibración/ajuste de curva del ADC de ESP-IDF (doc de erratas más arriba + página del ADC).
- Pines de strapping: GPIO0, GPIO2, GPIO12 (tensión de VDD de la flash — llevarlo a LOW en módulos de flash de 3,3 V bloquea el arranque) deciden el modo de arranque; la trampa de GPIO12 es notoria (datasheet ESP32 §strapping;
- Pines solo de entrada: GPIO34–39 no tienen salida ni pull-up/down — los botones conectados ahí fallan silenciosamente (URL del datasheet ESP32 más arriba).
- Confusión de pines en/de: las placas serigrafián D23/D22 frente a los números de GPIO; los GPIO 20/24/28–31/37–38 no existen en el ESP32 clásico (
- Resets por brownout detector (BOD) con alimentaciones USB/LDO débiles durante ráfagas de TX de Wi-Fi/BT; habilita y sube el umbral BOD en menuconfig y añade capacitancia de almacenamiento (
- Coexistencia Bluetooth + Wi-Fi comparte una sola antena: el rendimiento cae y algunas combinaciones de BT+sleep están rotas en silicio previo a V3 (doc de erratas más arriba).
- Sensor de temperatura integrado prácticamente inútil (gran offset, documentado como no calibrado) — no lo uses para medición (
- Retour d'expérience expert expert — expert-microcontroleur
- Je fais le point sur les pièges classiques de l'ESP32. Les points forts restent indéniables : le duo Wi-Fi et Bluetooth Classic est rare à ce prix, et les périphériques exotiques comme le capteur à effet Hall ou les 10 pads tactiles capacitifs sont très pratiques. attention cependant aux GPIO34 à 3… — expert-microcontroleur
- Merci pour ce rappel sur les GPIO d'entrée. J'ai effectivement perdu deux heures sur un projet où je branchais un bouton sur GPIO35, pensant qu'un pull-up interne était actif par défaut. C'est frustrant car la datasheet le mentionne, mais la confusion vient souvent des schémas de cartes tierces qui… — maker-2024
- Pour la calibration ADC, l'API ESP-IDF fait le boulot correctement mais il faut bien respecter les phases de démarrage. Un autre point critique que je vois souvent sur ce forum : les réinitialisations par détecteur de brownout (BOD). Si ton alimentation est faible, lors des pics de transmission Wi-… — codeur-embarque
Opiniones y proyectos de la comunidad
- ESP32 Data Logger Occasionally Misses SD Card Writes After Several Hours forum.arduino.cc
- ESP32 to Nextion HMI Lessons Learned forum.dronebotworkshop.com
- Solar Powered WiFi Weather Station V4.0 hackaday.io
- ESP32 how to preserve RTC time during brownout arduino.stackexchange.com
- esp32_datasheet_en.pdf datasheet
- Lista oficial de erratas mantenida por Espressif (bugs de ADC, SDIO, BT-sleep, RTC por revisión; ECO V3 corrige varios):
- ADC2 inutilizable con Wi-Fi: los pines de ADC2 entran en conflicto con el driver de Wi-Fi — la trampa clásica de "ADC2 reads return 0 when Wi-Fi on" (
- No linealidad del ADC: las lecturas crudas del ADC son notablemente no lineales en los extremos; usa la API de calibración/ajuste de curva del ADC de ESP-IDF (doc de erratas más arriba + página del ADC).
- Pines de strapping: GPIO0, GPIO2, GPIO12 (tensión de VDD de la flash — llevarlo a LOW en módulos de flash de 3,3 V bloquea el arranque) deciden el modo de arranque; la trampa de GPIO12 es notoria (datasheet ESP32 §strapping;
- Pines solo de entrada: GPIO34–39 no tienen salida ni pull-up/down — los botones conectados ahí fallan silenciosamente (URL del datasheet ESP32 más arriba).
- Confusión de pines en/de: las placas serigrafián D23/D22 frente a los números de GPIO; los GPIO 20/24/28–31/37–38 no existen en el ESP32 clásico (
- Resets por brownout detector (BOD) con alimentaciones USB/LDO débiles durante ráfagas de TX de Wi-Fi/BT; habilita y sube el umbral BOD en menuconfig y añade capacitancia de almacenamiento (
- Coexistencia Bluetooth + Wi-Fi comparte una sola antena: el rendimiento cae y algunas combinaciones de BT+sleep están rotas en silicio previo a V3 (doc de erratas más arriba).
- Sensor de temperatura integrado prácticamente inútil (gran offset, documentado como no calibrado) — no lo uses para medición (
- Scan des réseaux Wi-Fi debutant Schéma : IMG-esp32-debutant-1-wifi-scan-reseaux.svg — Carte ESP32 à côté d'un routeur Wi-Fi avec liste des réseaux détectés et barres de signal
- Fondu de LED avec le PWM LEDC debutant Schéma : IMG-esp32-debutant-2-ledc-pwm-fade.svg — ESP32, broche GPIO25 reliée par une résistance à une LED, courbe d'intensité en dents de scie
- Première entrée analogique sur ADC1 debutant Schéma : IMG-esp32-debutant-3-entree-analogique-adc1.svg — Potentiomètre relié à GPIO34 (ADC1) sur ESP32, tension convertie en valeur 0-4095 affichée en console
- Deux tâches FreeRTOS sur les deux cœurs intermediaire Schéma : IMG-esp32-intermediaire-1-taches-freertos-2-coeurs.svg — Puce ESP32 double cœur avec deux tâches épinglées sur cœur 0 et cœur 1 échangeant via une file d'attente
- Moniteur de batterie BLE intermediaire Schéma : IMG-esp32-intermediaire-2-ble-batterie-monitor.svg — ESP32 émettant un service BLE Battery 0x180F vers un smartphone affichant le pourcentage
- Journaliser un capteur dans LittleFS intermediaire Schéma : IMG-esp32-intermediaire-3-littlefs-logs-capteur.svg — Puce flash 4 Mo de l'ESP32 découpée en partitions, un fichier CSV de logs s'ajoutant dans la partition LittleFS
- Station météo autonome en deep sleep avance Schéma : IMG-esp32-avance-1-deep-sleep-station-meteo.svg — Station météo ESP32 sur batterie avec capteur SHT31, courbe de consommation alternant pics de mesure et sommeil à 150 µA
- Coexistence Wi-Fi + Bluetooth sur antenne partagée avance Schéma : IMG-esp32-avance-2-coexistence-wifi-bt-antenne.svg — Puce ESP32 avec un seul radio 2,4 GHz et une antenne partagée, découpage du temps entre Wi-Fi et BLE
- ADC2, le piège quand le Wi-Fi est actif avance Schéma : IMG-esp32-avance-3-adc2-piege-wifi-calibration.svg — Deux traces d'oscilloscope : l'ADC1 suit le potentiomètre, l'ADC2 reste à plat dès que le Wi-Fi démarre
Biblioteca de código — ejemplos escritos para esta placa
clignotante.inoArduinobouton-led.inoArduinorespiration.inoArduinodht22.inoArduinooled-i2c.inoArduinoserveur-web.inoArduinoble-compteur.inoArduinoservo.inoArduinosommeil-profond.inoArduinomesures.pyMicroPython
Ejemplos y repositorios encontrados en línea
- espressif/arduino-esp32 github.com
- espressif/esp-idf github.com
- esphome/esphome github.com
- arendst/Tasmota github.com