ESP32 y Arduino

ESP32 vs ESP8266 para proyectos MQTT: memoria, TLS, periféricos y coste

¿Dudas entre el ESP32 y el ESP8266 para un dispositivo MQTT? Esta comparativa analiza memoria, capacidad TLS, periféricos, consumo, soporte de librerías y coste, con recomendaciones claras por tipo de proyecto.

Placas de desarrollo ESP32 y ESP8266 una junto a otra para una comparativa ESP32 vs ESP8266 en MQTT
Pruébalo en tu propio broker MQTTConsigue un broker MQTT privado y gestionado con el plan Free y empieza con ejemplos de código listos para usar.
Pruébalo gratis Ejemplos de código Sin tarjeta

ESP32 vs ESP8266 es la primera decisión de hardware en la mayoría de los proyectos MQTT con Wi-Fi, y la respuesta correcta depende menos de la velocidad bruta que de la memoria, el TLS y los periféricos que necesites. Esta comparativa repasa las diferencias que importan cuando tu dispositivo debe permanecer conectado a un broker durante meses. Al terminar sabrás qué chip comprar para tu próximo sensor, actuador o gateway.

La respuesta corta

Elige el ESP32 para diseños nuevos que necesiten conexiones cifradas, más de un puñado de sensores, Bluetooth, actualizaciones OTA con espacio de sobra o cualquier tipo de procesamiento local. Elige el ESP8266 para nodos muy sencillos y sensibles al coste, como un único relé o un sensor de temperatura, sobre todo si ya tienes las placas o un código probado.

El resto del artículo explica por qué.

Comparativa de especificaciones

La tabla compara el ESP32 clásico (módulos de la clase ESP32-WROOM-32) con el ESP8266 (módulos de la clase ESP-12). Las variantes más recientes del ESP32 se tratan más abajo.

Característica ESP8266 ESP32 (clásico)
CPU Tensilica L106 de un núcleo, 80/160 MHz Xtensa LX6 de doble núcleo, hasta 240 MHz
RAM de datos Unos 80 KB de RAM de datos de usuario, mucha menos libre para tu sketch 520 KB de SRAM
Wi-Fi 802.11 b/g/n, 2,4 GHz 802.11 b/g/n, 2,4 GHz
Bluetooth No Bluetooth clásico y BLE
GPIO Unos 17, varios con restricciones de arranque Unos 34
ADC Un canal de 10 bits Hasta 18 canales de 12 bits
Criptografía por hardware No Aceleración AES, SHA y RSA
Otros periféricos UART, SPI, I2C (por software), PWM UART, SPI, I2C, I2S, CAN (TWAI), táctil, DAC, muchos canales PWM
Consumo en deep sleep Bajo Bajo, más coprocesador ULP
Núcleo de Arduino esp8266 by ESP8266 Community esp32 by Espressif Systems
FreeRTOS No (SDK non-OS bajo Arduino) Sí

Para las hojas de datos oficiales y las tablas de variantes, consulta la documentación de Espressif.

Memoria: la diferencia que más importa

MQTT en sí es ligero. Una conexión de PubSubClient con un buffer pequeño cabe sin problemas en cualquiera de los dos chips. La memoria se convierte en el factor decisivo cuando añades lo que necesitan los productos reales.

En el ESP8266, el Wi-Fi, la pila TCP/IP y el núcleo de Arduino ya consumen buena parte de la RAM, lo que deja un heap comparativamente pequeño para tu aplicación. Una sesión TLS necesita además un bloque contiguo considerable para sus buffers de registros y las comprobaciones de certificados. Añade una librería JSON, una página web de configuración y un buffer MQTT de 2 KB, y estarás al límite. El dispositivo puede funcionar en tu mesa y fallar días después porque el heap se ha fragmentado y el siguiente handshake TLS no encuentra un bloque lo bastante grande.

Los 520 KB de SRAM del ESP32 cambian esto. Puedes ejecutar TLS, un servidor web, un buffer MQTT mayor y un documento JSON a la vez con margen de sobra, y muchos módulos añaden PSRAM para tener aún más.

Regla práctica: si tu proyecto con ESP8266 necesita TLS y algo más que un simple bucle de sensor, reserva tiempo para ajustar la memoria o pasa al ESP32.

Capacidad TLS

El MQTT de producción debería usar TLS en el puerto 8883 con credenciales. Ambos chips pueden hacerlo, pero la experiencia es distinta:

  1. Validación de certificados. El WiFiClientSecure del ESP32 usa mbedTLS y acepta un certificado raíz PEM con setCACert(). El ESP8266 usa BearSSL, que también valida las fechas del certificado, así que debes sincronizar la hora por NTP antes de conectar.
  2. Velocidad del handshake. La aceleración por hardware y los núcleos más rápidos del ESP32 completan los handshakes con rapidez. El ESP8266 es notablemente más lento, sobre todo a 80 MHz, algo que importa en dispositivos con batería que se reconectan en cada despertar.
  3. Sesiones simultáneas. Un ESP32 puede mantener cómodamente más de una conexión TLS, por ejemplo MQTT más una descarga OTA por HTTPS. En un ESP8266 eso es arriesgado.
  4. Ajuste de buffers. El ESP8266 solo puede reducir los buffers TLS mediante la negociación de maximum fragment length cuando el servidor la admite, así que no puedes contar con ello.

Nuestro tutorial de ESP8266 MQTT muestra la configuración exacta de BearSSL, y el tutorial de ESP32 MQTT muestra el equivalente para ESP32.

Periféricos y sensores

El único ADC de 10 bits del ESP8266 es su limitación más habitual. Si necesitas más de una entrada analógica, tienes que añadir un ADC externo, como un ADS1115 por I2C. Varios de sus GPIO tienen además funciones en el arranque, así que el número de pines utilizables es menor de lo que parece.

El ESP32 ofrece muchos canales ADC, entradas táctiles capacitivas, I2S para micrófonos y audio, un controlador CAN (TWAI) para buses de vehículos e industriales y Bluetooth Low Energy. BLE es especialmente útil para gateways MQTT: el ESP32 puede recoger lecturas de sensores BLE y publicarlas en un broker por Wi-Fi.

Software y soporte de librerías

Ambos chips están bien soportados por el ecosistema Arduino, pero el desarrollo activo se concentra en el ESP32.

Librería ESP8266 ESP32
PubSubClient Sí Sí
ArduinoMqttClient Sí Sí
AsyncMqttClient Sí, con ESPAsyncTCP Sí, con AsyncTCP
Cliente MQTT nativo de ESP-IDF (esp-mqtt) No Sí, con soporte de MQTT 5
Tareas de FreeRTOS No Sí

La base FreeRTOS del ESP32 importa en el firmware MQTT. Puedes ejecutar el cliente de red en una tarea y el muestreo de sensores en otra, de modo que una reconexión lenta al broker no detenga tu bucle de control. En el ESP8266 todo comparte un único bucle, y las llamadas bloqueantes largas disparan el watchdog. Lee más sobre diseños sin bloqueos en async MQTT client en ESP32.

Consumo de energía

Ambos chips gastan la mayor parte de su energía en la radio. En sensores con batería que despiertan, publican y duermen, los factores dominantes son la rapidez con la que puedes conectar y el tiempo que la radio permanece encendida, no el consumo en reposo de la CPU. El handshake TLS más rápido del ESP32 puede compensar su mayor consumo activo, y su coprocesador de ultra bajo consumo puede vigilar un sensor mientras los núcleos principales duermen. El ESP8266 sigue siendo una opción razonable para nodos sencillos de despertar, publicar y dormir con MQTT sin cifrar dentro de una red de confianza.

Coste y disponibilidad

El ESP8266 suele ser el módulo más barato, y las placas de desarrollo de ambos chips son económicas y fáciles de encontrar. En la mayoría de los proyectos, la diferencia de precio es pequeña comparada con el sensor, la caja, la fuente de alimentación y tu tiempo de desarrollo. Gastar un poco más en un ESP32 a menudo ahorra horas de ajuste de memoria. Los precios cambian a menudo, así que compara las ofertas actuales de proveedores fiables en lugar de fiarte de cifras antiguas de foros.

¿Y las variantes más recientes del ESP32?

La familia de Espressif ha crecido mucho más allá del ESP32 clásico:

  • ESP32-C3: RISC-V de un núcleo, Wi-Fi y BLE, bajo coste. Es el sustituto moderno natural de muchos diseños con ESP8266 y mantiene el TLS holgado.
  • ESP32-S3: doble núcleo con instrucciones vectoriales, USB OTG y a menudo PSRAM; bueno para cargas de trabajo de cámara, audio y procesamiento en el borde.
  • ESP32-C6: añade Wi-Fi 6 y una radio 802.15.4 para Thread y Zigbee, útil para gateways.

Si el ESP8266 te tienta solo por el coste, mira primero el ESP32-C3.

Lista de decisión

Responde a estas preguntas en orden. El primer "sí" decide:

  1. ¿Necesitas Bluetooth, CAN, I2S, entradas táctiles o más de una entrada analógica? Elige ESP32.
  2. ¿Usará el dispositivo TLS y ejecutará un servidor web, OTA o payloads JSON grandes? Elige ESP32.
  3. ¿Necesitas procesamiento local, varias tareas o MQTT 5 en el dispositivo? Elige ESP32 (ESP-IDF).
  4. ¿Es un único sensor o relé con MQTT sin cifrar en una red de confianza, con placas ESP8266 que ya tienes? El ESP8266 sirve.
  5. ¿Sigues sin decidirte? Elige un ESP32-C3 como opción moderna, económica y cómoda para TLS.

El lado del broker es el mismo

Elijas el chip que elijas, al broker le da igual. Ambos se conectan con los mismos paquetes MQTT 3.1.1 a los mismos topics. Empieza a probar en broker.connectmq.com, el servidor MQTT público gratuito de ConnectMQ (pensado para pruebas y prototipos, no para datos de producción), con un client ID y un prefijo de topic únicos:

mosquitto_sub -h broker.connectmq.com -p 1883 -i compare-91c4 -t "connectmq/demo/compare-91c4/#" -v

Después graba la misma estructura de topics en un ESP32 y en un ESP8266 y compara los tiempos de reconexión y el heap libre en tu propio entorno. Ese pequeño experimento te dirá más que cualquier hoja de datos. El tutorial de IoT con ESP32 es un buen siguiente paso una vez que hayas elegido, y PubSubClient es la librería con la que empezar en ambas placas.

Conecta cualquiera de los dos chips a ConnectMQ

Cuando tu dispositivo salga del banco de pruebas, dale credenciales privadas en un broker MQTT gestionado. ConnectMQ ofrece MQTT 3.1.1 y 5.0 sobre TCP 1883, TLS 8883 y WebSockets, con un portal que muestra topics en vivo, dispositivos conectados y alertas por umbral, tanto si tu flota es de ESP32, de ESP8266 o de ambos. Para conocer el contexto de la elección de infraestructura, consulta nuestra guía sobre las opciones de broker MQTT en la nube. Crea un broker Serverless gratuito en app.connectmq.com, sin tarjeta de crédito.

Preguntas frecuentes

¿Está obsoleto el ESP8266?

No está obsoleto, pero ya no es la mejor opción para la mayoría de los diseños nuevos. Sigue siendo válido para nodos sencillos, mientras que el ESP32-C3 cubre el mismo nicho de bajo coste con más memoria y mejor TLS.

¿Puede el ESP8266 gestionar MQTT sobre TLS?

Sí, con BearSSL y una gestión cuidadosa de la memoria. Sincroniza el reloj, mantén pequeño el buffer MQTT y evita la fragmentación del heap, y funcionará de forma fiable en sensores sencillos.

¿Admite el ESP32 MQTT 5?

El cliente MQTT de ESP-IDF admite MQTT 5. Las librerías de Arduino más populares, PubSubClient y ArduinoMqttClient, usan MQTT 3.1.1, que todos los brokers importantes siguen admitiendo.

¿Pueden compartir el mismo broker dispositivos ESP32 y ESP8266?

Sí. MQTT es independiente del hardware, así que ambos chips pueden publicar y suscribirse a los mismos topics en el mismo broker, siempre que cada dispositivo use un client ID único.

Artículos relacionados

Ejemplo de ESP-IDF MQTT: crea un cliente esp-mqtt desde cero

Construye un proyecto ESP-IDF desde una carpeta vacía con el componente esp-mqtt: configuración de Wi-Fi en modo estación, el manejador de eventos MQTT, publicación y suscripción, propiedades de MQTT 5 y TLS con el bundle de certificados.

9 min de lectura

Todos los artículos →

Tu broker MQTT privado, a unos pocos clics

Crea una cuenta, obtén las credenciales de tu broker y conecta tu primer dispositivo, sin servidores que instalar, parchear ni escalar.