Hardware
ESP32
WiFi + BT/BLE SoC dual-core a precio de €
ESP32
SoC Xtensa LX6 dual-core 240 MHz · WiFi+BT/BLE · 520 KB RAM · 4 MB flash típico · ~€3-€5
Resumen ejecutivo
- ESP32 es la familia de SoCs (System-on-Chip) de Espressif Systems que combina microcontrolador, Wi-Fi, Bluetooth Classic/BLE y opcionalmente Zigbee/Thread/Matter en un solo chip — desde ~3 USD. Es el hardware de entrada por excelencia para quien explora qué es IoT y quiere pasar de la teoría a los primeros prototipos.
- Sucesor del ESP8266 (solo Wi-Fi). Familias actuales: ESP32 clásico (Xtensa LX6 dual-core), ESP32-S3 (Xtensa LX7 + IA acelerada), ESP32-C3/C6 (RISC-V single-core), ESP32-H2 (RISC-V + 802.15.4 para Matter/Thread).
- Líder en proyectos IoTITérminoIoT (Internet de las cosas)El IoT (Internet of Things) es la red de objetos físicos con sensores, software y conectividad que recogen e intercambian datos y actúan de forma autónoma.Ver perfil consumer, maker y muchos productos comerciales (Sonoff, Shelly, Tasmota).
- Frameworks: Arduino, ESP-IDF (oficial), PlatformIO, MicroPython, CircuitPython, Espruino.
- Cuándo NO usar: aplicaciones con requisitos de certificación industrial estrictos (mejor STM32 con cert), proyectos ultra-low-power (BLEBTérminoBluetooth Low Energy (BLE)Bluetooth Low Energy (BLE) es la variante de bajo consumo de Bluetooth, para enviar pocos datos de forma intermitente con mínima batería. Domina wearables y proximidad. Lo mantiene el Bluetooth SIG.Ver perfil-only mejor con nRF52), proyectos solo LoRa (mejor STM32WLSTérminoSTM32WLEl STM32WL es un microcontrolador de STMicroelectronics con radio LoRa sub-GHz integrada en el mismo chip, pensado para nodos LoRaWAN.Ver perfil).
Familias y diferencias
| Variante | CPU | Wi-Fi | BT/BLE | Otros radios | Casos uso típicos |
|---|---|---|---|---|---|
| **ESP32** (clásico) | Xtensa LX6 dual-core @240 MHz | 2.4 GHz b/g/n | BT Classic + BLE 4.2 | — | Genérico, ya 7 años vigente |
| **ESP32-S2** | Xtensa LX7 single @240 MHz | 2.4 GHz | ❌ | USB OTG | USB-host dispositivos |
| **ESP32-S3** | Xtensa LX7 dual @240 MHz | 2.4 GHz | BLE 5.0 | USB OTG, IA accel | IA en edge, audio |
| **ESP32-C3** | RISC-V single @160 MHz | 2.4 GHz | BLE 5.0 | — | Reemplazo low-cost ESP8266 |
| **ESP32-C6** | RISC-V single @160 MHz | 2.4 GHz + 6 (Wi-Fi 6) | BLE 5.0 | 802.15.4 (Thread/Zigbee) | Matter, Thread |
| **ESP32-H2** | RISC-V single @96 MHz | ❌ (solo radio 2.4 GHz) | BLE 5.0 | 802.15.4 | Matter/Thread sin Wi-Fi |
Resumen rápido: para Matter elige ESP32-C6 o H2. Para genérico moderno C3 o S3. ESP32 clásico sigue vigente pero ya 7 años en el mercado.
La lógica de esta fragmentación es deliberada. Espressif migró de la arquitectura Xtensa (propietaria, licenciada a Cadence) a RISC-V (abierta) en las familias C y H para reducir el coste de licencia del núcleo y ganar control sobre su propio silicio. Para quien diseña un producto, la consecuencia práctica es directa: un ESP32-C3 ofrece prestaciones equivalentes al viejo ESP8266 por un precio similar pero con BLE incluido, mientras que las familias C6 y H2 abren la puerta a Matter y Thread sin cambiar de proveedor ni de toolchain. Elegir variante, por tanto, no es una cuestión de potencia bruta, sino de qué radios exige el proyecto y de cuántos años de soporte de SDK necesitarás mantener.
Especificaciones técnicas (ESP32 clásico — referencia)
| Aspecto | Valor |
|---|---|
| CPU | Xtensa LX6 32-bit dual-core hasta 240 MHz |
| RAM | 520 KB SRAM (de las cuales ~320 KB disponibles app) |
| Flash | Externa, típicamente 4-16 MB |
| Wi-Fi | 802.11 b/g/n 2.4 GHz, modo STA/AP/mixed |
| Bluetooth | Classic + BLE 4.2 |
| GPIOs | 34 (de los cuales 6 input-only) |
| ADC | 18 canales 12-bit |
| DAC | 2 canales 8-bit |
| PWM | LEDC (16 canales hardware) |
| SPI / I2C / I2S / UART | múltiples buses |
| Sleep current | ~10 μA deep sleep, ~2.5 mA modem sleep |
| Active current | ~80 mA Wi-Fi TX, ~200 mA peak |
| Temperatura | -40 a +85 °C industrial |
| Precio | ~3 USD chip, ~5 USD módulo, ~10 USD dev board |
Estas cifras esconden las decisiones de diseño que más afectan a un producto real. Los ~320 KB de RAM disponibles para la aplicación parecen holgados frente a un MCU de 8 bits, pero se agotan rápido si conviven TLS, un buffer de pantalla y un stack MQTTProtocoloMQTTEl protocolo pub/sub estándar del IoTVer perfil a la vez: dimensionar la memoria es el primer cuello de botella en proyectos serios. El consumo de ~80 mA en transmisión Wi-Fi condena cualquier diseño a batería que no gestione bien el deep sleep, y la no-linealidad conocida del ADC obliga a calibrar siempre que se midan señales analógicas con precisión. Leer la tabla no basta; hay que traducir cada fila a una restricción concreta de diseño antes de comprometerse con el chip.
Casos de uso reales
| Sector | Producto / proyecto |
|---|---|
| **Smart home consumer** | Sonoff, Shelly (1, 2.5, Plus, Pro), Tasmota, Athom |
| **Domótica DIY** | Home Assistant + ESP32 con ESPHome o Tasmota |
| **Wearables** | M5Stack, T-Watch, varios prototipos |
| **Robótica educativa** | BalaC, ESP-Now mesh entre robots |
| **[Industria 4.0](/casos-uso/industria-4-0) low-cost** | Adquisición de datos en máquinas, retrofit IoT con [sensores IoT](/hardware/sensores-iot) de bajo coste |
| **Audio** | Bluetooth speakers, internet radio, mp3 players |
| **Cámaras IoT** | ESP32-CAM, ESP-EYE |
| **POS / kioskos** | Hardware con pantalla TFT + táctil |
Frameworks y entornos de desarrollo
Arduino IDE (fácil entrada)
El ejemplo siguiente conecta el ESP32 a un broker MQTT usando PubSubClient:
#include <WiFi.h>
#include <PubSubClient.h>
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
Serial.begin(115200);
WiFi.begin("ssid", "pass");
while (WiFi.status() != WL_CONNECTED) delay(500);
client.setServer("broker.local", 1883);
client.connect("esp32-01");
client.publish("hogar/salon/temp", "22.5");
}
void loop() {
client.loop();
}ESP-IDF (oficial Espressif, producción)
C / C++ con FreeRTOS, máximo control. CMake build system. Curva más empinada pero acceso a todas las features.
#include "esp_wifi.h"
#include "mqtt_client.h"
void app_main() {
esp_wifi_init(...);
esp_mqtt_client_handle_t client = esp_mqtt_client_init(...);
esp_mqtt_client_publish(client, "hogar/salon/temp", "22.5", 0, 1, 0);
}PlatformIO (alternativa Arduino IDE)
CLI moderno, gestión de dependencias, perfiles multi-board. Recomendado para proyectos serios sin pasar a ESP-IDF puro.
MicroPython / CircuitPython
Para prototipado rápido sin compilar:
import network, time
from umqtt.simple import MQTTClient
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("ssid", "pass")
client = MQTTClient("esp32-01", "broker.local")
client.connect()
client.publish(b"hogar/salon/temp", b"22.5")Conectividad: cómo conecta a internet
ESP32 maneja TCP/IP stack interno (LwIP). Una de sus combinaciones más habituales en producción es conectarse a plataformas IoT cloud como AWS IoT Core vía MQTT. Soporta de forma nativa:
- Wi-Fi STA + AP simultáneo (modo "AP+STA")
- HTTP/HTTPS server y client (esp_http_server, esp_http_client)
- MQTT 3.1.1/5 (esp_mqtt_client)
- WebSocket
- mDNS (descubrimiento local)
- ESP-NOW (protocolo propietario peer-to-peer 2.4 GHz, sin Wi-Fi)
- OTA updates (over-the-air firmware)
ESP32 vs alternativas
| MCU | Ventaja vs ESP32 | Desventaja vs ESP32 |
|---|---|---|
| **ESP8266** | Más barato | Sin BLE, solo single-core, menos RAM |
| **[nRF52840](/hardware/nrf52840)** (Nordic) | Mejor BLE/Thread/Matter, ultra-low-power | Sin Wi-Fi, ecosistema menor |
| **[STM32WL](/hardware/stm32wl)** | LoRa integrado, certificación industrial | Sin Wi-Fi/BT, más caro |
| **[Raspberry Pi Pico W](/hardware/raspberry-pi-iot)** | Programable en Python/C, comunidad raspi | Wi-Fi only (no BT en Pico W estándar), menos features radio |
| **NXP / Microchip / TI MCUs** | Certificación industrial, soporte enterprise | Mucho más caro, ecosystem menos maker |
La conclusión de esta comparativa no es que el ESP32 gane siempre, sino que gana en el eje precio-versatilidad-comunidad. Cuando el factor decisivo es la autonomía extrema, el nRF52840 lo supera con claridad; cuando lo es el alcance kilométrico, el STM32WL con LoRa integrado no tiene rival en su gama; y cuando hace falta certificación industrial estricta, los MCU de NXP o ST con soporte enterprise justifican su sobrecoste. El ESP32 es la opción por defecto razonable para la mayoría de proyectos de prototipado y de producción de consumo precisamente porque no es el mejor en ningún extremo, pero es muy competente en todos a la vez.
Ventajas y desventajas
Ventajas
- Precio imbatible: 3 USD un chip ESP32-C3, ~10 USD un dev board completo
- Ecosistema enorme: librerías Arduino
EmpresaArduinoPlataforma de hardware y software open source para makersVer perfil, frameworks, comunidad española activa - Multi-radio: Wi-Fi + BT/BLE + (C6/H2) Thread/Zigbee
ProtocoloZigbeeMesh 2.4 GHz veterana — base de muchos hubs smart homeVer perfil en un solo chip
- Documentación buena: ESP-IDF docs son sólidas
- Espressif activo: nuevos chips cada año, soporte ESP32 clásico aún vigente
- OTA updates out-of-the-box
- Matter ready: ESP32-C6/H2 oficiales con ESP-Matter SDK
Desventajas
- Consumo: ESP32 clásico no es low-power leader (vs nRF52, mejor BLE only)
- Calidad módulo variable: módulos chinos baratos pueden tener componentes inconsistentes
- Certificación: para CE/FCC necesitas módulo pre-certificado (no usar chip pelado)
- GPIO ADC ruido: el ADC del ESP32 clásico tiene non-linearity conocida — calibrar siempre
- Sin spec industrial: no es chip para entornos -40+125 °C automotive
- Seguridad: el ESP32 tiene secure boot y flash encryption, pero hay que activarlos explícitamente. Revisa la guía de seguridad en IoT para las mejores prácticas antes de llevar cualquier proyecto a producción.
Cómo empezar: tu primer proyecto
Hardware
- Dev board recomendada: ESP32-DevKit-C-32 o LilyGO TTGO T-Display (con pantalla)
- Programación: cable USB-C
- Power: USB del PC durante desarrollo
Software
- Instalar Arduino IDE 2.x o VSCode + PlatformIO
- Añadir board manager:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json - Seleccionar board "ESP32 Dev Module"
- Cargar ejemplo
WiFi > WiFiScan
Hello World: Wi-Fi + LED
#include <WiFi.h>
const int LED = 2; // LED on-board
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(115200);
WiFi.begin("ssid", "pass");
while (WiFi.status() != WL_CONNECTED) {
digitalWrite(LED, !digitalRead(LED));
delay(500);
}
digitalWrite(LED, HIGH);
Serial.println(WiFi.localIP());
}
void loop() {}Recursos primarios
- Espressif ESP32 product page (acceso: 2026-05)
- ESP-IDF docs (acceso: 2026-05)
- Arduino-ESP32 GitHub
- ESPHome — para Home AssistantHTérminoHome AssistantHome Assistant es una plataforma de domótica open source centrada en el control local y la privacidad, con amplio soporte de integraciones.Ver perfil
- PlatformIO
- Random Nerd Tutorials (referencia EN comunidad maker)
Preguntas frecuentes
¿ESP32 vs ESP8266?+
ESP32 tiene BLE, doble core, más RAM (520 KB vs 80 KB), más GPIOs, más periféricos. ESP8266 sigue vigente para proyectos super-low-cost solo-Wi-Fi (existe ESP8266EX a ~1 USD). Para proyectos nuevos: ESP32 (clásico) o ESP32-C3 reemplazan a ESP8266.
¿Cuál ESP32 elijo en 2026?+
Genérico + smart home consumer: ESP32 clásico o ESP32-S3 (mejor IA on-device) Cost-optimized Wi-Fi+BLE: ESP32-C3 (RISC-V, ~2 USD) Matter / Thread / Zigbee: ESP32-C6 (más nuevo) o ESP32-H2 (solo radio, sin Wi-Fi) Wi-Fi 6 nativo: ESP32-C6
¿ESP32 sirve para producción comercial?+
Sí. Miles de productos lo usan (Sonoff, Shelly, Tasmota, Athom). Para producción usa módulos pre-certificados FCC/CE de Espressif (ESP32-WROOM-32, ESP32-WROVER) o de fabricantes certificados, no chips pelados.
¿Qué framework: Arduino, ESP-IDF, MicroPython?+
Arduino: prototipo rápido, ecosistema librerías masivo, suficiente para mucho ESP-IDF: producción seria, control total, performance, certificación MicroPython: educación, scripting rápido, no producción seria
¿ESP32 vale para low-power IoT (batería años)?+
Con cuidado: sí pero no es el rey. Deep sleep ESP32 ~10 μA, modem sleep 2.5 mA. Para batería de años con TX cada hora, ESP32 funciona. Para batería de 5+ años con TX más frecuente, nRF52840 (BLE only) o STM32WL (LoRa) son superiores.
¿Programación: C/C++ o Python?+
C/C++ con ESP-IDF o Arduino para cualquier cosa que vaya a producción o necesite performance. MicroPython solo para prototipo rápido, scripts educativos o herramientas internas. CircuitPython similar.