Raspberry Pi

Raspberry Pi vs ESP32 para proyectos IoT: cómo elegir la placa adecuada para MQTT

Una comparativa práctica Raspberry Pi vs ESP32 para quienes construyen IoT: en qué se diferencian un ordenador de placa única con Linux y un microcontrolador con Wi-Fi en consumo, coste, fiabilidad y herramientas MQTT, y cuándo usar ambos juntos.

Una Raspberry Pi y una placa de desarrollo ESP32 una junto a otra, ambas enviando mensajes MQTT a la nube, ilustrando Raspberry Pi vs ESP32
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

La pregunta Raspberry Pi vs ESP32 aparece en casi todos los proyectos IoT, y la respuesta honesta es que resuelven problemas distintos. Esta guía compara un ordenador de placa única con Linux y un microcontrolador con Wi-Fi en lo que de verdad decide un despliegue: consumo, coste, fiabilidad, esfuerzo de desarrollo y opciones de cliente MQTT. Al final sabrás qué placa poner en cada sitio y cómo hacer que ambas hablen con el mismo broker.

Dos clases de dispositivo diferentes

Una Raspberry Pi es un ordenador completo. Arranca Linux desde una tarjeta SD o un SSD y ejecuta un gestor de paquetes, varios procesos, Python, Node.js, Docker, un servidor web y una base de datos al mismo tiempo. Un ESP32 es un microcontrolador: un chip de doble núcleo con unos cientos de kilobytes de RAM, Wi-Fi y Bluetooth integrados, que ejecuta una única imagen de firmware que grabas por USB. No hay sistema operativo en el sentido de escritorio, solo FreeRTOS por debajo de tu código Arduino o ESP-IDF.

Esa diferencia de clase lo condiciona todo. La Pi te da flexibilidad y un enorme ecosistema de software; el ESP32 te da determinismo, bajo consumo y la posibilidad de meterlo en una caja y olvidarte. Ninguno es "mejor" en abstracto.

Raspberry Pi vs ESP32 de un vistazo

Criterio Raspberry Pi (4, 5, Zero 2 W) ESP32 (clásico, S3, C6)
Tipo Ordenador de placa única con Linux Microcontrolador con Wi-Fi/Bluetooth
Tiempo de arranque Decenas de segundos Muy por debajo de un segundo
Consumo típico en reposo Vatios Milivatios; microamperios en deep sleep
Funcionamiento con batería Poco práctico durante periodos largos Diseñado para ello con deep sleep
Almacenamiento Tarjeta SD o SSD con sistema de archivos Flash interna, no requiere sistema de archivos
Corte de luz repentino Puede corromper la tarjeta SD Por lo general inofensivo
Lenguajes Python, Node.js, Go, C#, Java, cualquier cosa en Linux C/C++ (Arduino, ESP-IDF), MicroPython
Clientes MQTT paho-mqtt, MQTT.js, herramientas de Mosquitto, Node-RED PubSubClient, AsyncMqttClient, ESP-MQTT, umqtt
TLS OpenSSL completo, trivial de activar Compatible, pero los certificados y la RAM requieren cuidado
Cámara, ML, dispositivos USB Fácil Limitado (ESP32-CAM, TinyML)
Actualizaciones remotas apt, git pull, contenedores Imágenes de firmware OTA
Coste unitario Más alto Más bajo

Consumo y duración de la batería

El consumo es donde la comparativa está más desequilibrada. Una Raspberry Pi nunca duerme de verdad; incluso la Zero 2 W consume una corriente constante siempre que está encendida, y una Pi 5 con periféricos necesita una fuente USB-C adecuada. Alimentar una Pi con un power bank sirve para una demo de fin de semana, no para un sensor en el campo.

Un ESP32 puede despertarse, leer un sensor, conectarse al Wi-Fi, publicar un mensaje MQTT y volver al deep sleep en pocos segundos. Entre despertares consume una fracción minúscula de su corriente activa, y así es como placas del tamaño de una moneda funcionan durante meses con una sola celda. Si tu dispositivo no tiene alimentación de red, la decisión está prácticamente tomada: usa el ESP32 y lee nuestra guía de ESP32 en deep sleep con MQTT para el patrón de publicar y dormir.

Fiabilidad en campo

Los microcontroladores son difíciles de romper. Si un ESP32 pierde la alimentación en mitad de una escritura, simplemente se reinicia con el mismo firmware. Un temporizador watchdog lo reinicia si tu bucle se cuelga, y no hay sistema de archivos que corromper.

Una Raspberry Pi es más frágil en instalaciones desatendidas. Los modos de fallo habituales son:

  1. Corrupción de la tarjeta SD tras cortes de luz bruscos repetidos o un registro de logs intensivo.
  2. Subtensión por una fuente débil, que provoca cuelgues aleatorios y caídas del Wi-Fi.
  3. Un script de Python que termina por una excepción y nadie lo reinicia.
  4. Disco lleno de logs al cabo de los meses.

Los cuatro tienen solución: usa una fuente de calidad, registra en RAM o reduce los logs, arranca desde un SSD en una Pi 4 o Pi 5 y ejecuta tu script MQTT como servicio systemd con Restart=always. Nuestra guía para ejecutar un script MQTT de Python al arrancar explica el archivo de servicio paso a paso. Una vez blindada, una Pi funciona durante largos periodos sin atención, pero necesita ese paso de blindaje que un ESP32 no requiere.

Velocidad de desarrollo y depuración

En una Pi entras por SSH, editas un archivo de Python, lo ejecutas, lees el traceback e iteras en segundos. Puedes instalar mosquitto-clients y observar el tráfico en el mismo dispositivo, usar htop para revisar la memoria y mantener un checkout completo de git en la placa. Para procesamiento de datos, manejo de imágenes o cualquier cosa que implique una base de datos, esto es mucho más rápido que el desarrollo embebido.

En un ESP32 cada cambio implica compilar y grabar, y la depuración se basa sobre todo en mensajes por el puerto serie. A cambio, el firmware terminado es pequeño, arranca al instante y se comporta igual cada vez. Muchos equipos prototipan la lógica en una Pi con Python y después portan la parte estable al ESP32.

Comparativa de opciones de cliente MQTT

Ambas plataformas son clientes MQTT de primera, pero la experiencia es distinta.

En la Raspberry Pi tienes las mismas librerías que en un servidor. paho-mqtt 2.x de Python admite MQTT 3.1.1 y 5.0, TLS, websockets y reconexiones automáticas. MQTT.js cubre Node.js, Node-RED funciona de forma nativa y las herramientas de línea de comandos de Mosquitto están a un apt install de distancia. Una Pi también puede actuar como gateway: leer dispositivos Modbus, BLE o serie y reenviarlos por MQTT.

En el ESP32, PubSubClient es la opción más sencilla para MQTT 3.1.1 con publicación en QoS 0; AsyncMqttClient y el componente esp-mqtt de ESP-IDF añaden QoS 1 y 2 y funcionamiento no bloqueante. MicroPython ofrece umqtt.simple. El soporte de MQTT 5 es más escaso en los microcontroladores, y TLS consume una parte considerable de la RAM, así que debes planificar los tamaños de buffer. Un tutorial de MQTT con ESP32 usando PubSubClient y WiFiClientSecure muestra un sketch completo preparado para TLS.

Una forma rápida de comprobar que ambas placas se comportan igual en la red es apuntarlas al mismo broker y observar desde tu portátil:

# Observa todo lo que publican tus dispositivos bajo tu propio prefijo
mosquitto_sub -h broker.connectmq.com -p 1883 -i watcher-7f3a91 \
  -t 'connectmq/demo/7f3a91/#' -v

En la Pi, una publicación de una línea confirma la ruta de red:

mosquitto_pub -h broker.connectmq.com -p 1883 -i rpi-7f3a91 \
  -t 'connectmq/demo/7f3a91/rpi/status' -m 'online'

El servidor MQTT público gratuito broker.connectmq.com es anónimo y legible por cualquiera, así que usa un prefijo aleatorio y nunca envíes datos sensibles.

Coste más allá del precio de la placa

El ESP32 es más barato por unidad, pero el coste total incluye más que el chip. Una Pi necesita una fuente de alimentación, una tarjeta SD o un SSD y a menudo una caja. Un ESP32 necesita un regulador, posiblemente una batería y un circuito de carga, y una caja. Por otro lado, el tiempo de ingeniería suele ser el mayor coste en despliegues pequeños, y Python en una Pi puede ahorrar días de trabajo de firmware en instalaciones únicas. Para decenas o cientos de nodos sensores idénticos, el menor coste unitario y el menor consumo del ESP32 ganan con claridad.

Cuándo elegir cada placa

Elige una Raspberry Pi cuando el dispositivo deba:

  • Ejecutar varios servicios, como Node-RED, una base de datos local y un dashboard.
  • Procesar imágenes de cámara, audio o modelos de machine learning.
  • Actuar como gateway para dispositivos USB, serie, Modbus o Bluetooth.
  • Desarrollarse y modificarse rápidamente en Python o Node.js.

Elige un ESP32 cuando el dispositivo deba:

  • Funcionar con baterías o con energía captada del entorno.
  • Arrancar al instante y sobrevivir a cortes de luz sin cuidados.
  • Ser lo bastante barato para desplegarse en grandes cantidades.
  • Hacer un solo trabajo: leer sensores, conmutar salidas, publicar y suscribirse.

Usar ambos juntos

Las arquitecturas más robustas los combinan. Los nodos ESP32 se sitúan junto a los sensores y actuadores y publican pequeños payloads JSON. Una o varias Raspberry Pi se suscriben a esos topics para ejecutar lógica local, flujos de Node-RED, una pila de Grafana o una cámara. Ningún dispositivo habla directamente con el otro; ambos hablan con un broker MQTT, lo que los desacopla por completo. Puedes sustituir un ESP32 por una Pi, o al revés, sin tocar el resto del sistema mientras se mantenga el mismo contrato de topics y payloads.

Dónde se ejecuta ese broker importa en cuanto el proyecto sale de tu mesa. Ejecutar Mosquitto en la propia Pi está bien para un laboratorio, pero convierte la Pi en un punto único de fallo y te deja a cargo de TLS, la autenticación y el acceso remoto. Un broker MQTT gestionado como ConnectMQ da a ambas placas un endpoint TLS estable en el puerto 8883, credenciales generadas por dispositivo y un explorador de topics en vivo para depurar el tráfico, sin redirección de puertos en el router de tu casa o tu fábrica.

Para profundizar en el lado de la Pi, empieza por el tutorial de MQTT con Raspberry Pi y después prueba un montaje práctico como controlar una placa de relés por MQTT. Si también estás valorando microcontroladores más pequeños, la comparativa ESP32 frente a Raspberry Pi Pico W cubre esa elección.

Lista de decisión

Repasa estas preguntas antes de pedir el hardware:

  1. ¿Hay alimentación de red en el lugar de instalación? Si no, elige ESP32.
  2. ¿Necesita el dispositivo una cámara, almacenamiento local o varios servicios? Si sí, elige una Pi.
  3. ¿Vas a desplegar más de un puñado de nodos idénticos? Inclínate por el ESP32.
  4. ¿Importa más la velocidad de desarrollo que el coste unitario? Inclínate por la Pi.
  5. ¿Debe el dispositivo sobrevivir a cortes de luz frecuentes sin mantenimiento? Inclínate por el ESP32, o blinda la Pi.
  6. ¿Necesitas funciones de MQTT 5, como la caducidad de mensajes o los response topics, en el propio dispositivo? Es más fácil en una Pi.

Empieza con ConnectMQ

Elijas la placa que elijas, necesita un broker al que pueda llegar desde cualquier lugar. ConnectMQ ofrece un broker MQTT en la nube con MQTT 3.1.1 y 5.0, TLS en el 8883 y WebSocket seguro en el 8084 para dashboards. Crea un broker Serverless gratuito sin tarjeta de crédito, copia el nombre de usuario, la contraseña y el client ID generados en tu script de la Pi o tu sketch del ESP32 y observa cómo aparecen ambos dispositivos en el explorador de topics del portal. Cuando necesites más conexiones o QoS 2, puedes pasar a un plan Serverless de pago o Dedicated sin cambiar tu código, y la guía del broker MQTT en la nube explica las ventajas y desventajas.

Preguntas frecuentes

¿Es un ESP32 más fiable que una Raspberry Pi?

Para tareas de sensores sencillas y desatendidas, normalmente sí, porque no tiene sistema de archivos que corromper y se reinicia en menos de un segundo. Una Pi bien blindada, con una buena fuente de alimentación y un servicio systemd, también es fiable, pero requiere más cuidado.

¿Pueden una Raspberry Pi y un ESP32 usar el mismo broker MQTT?

Sí. MQTT es independiente de la plataforma, así que ambos se conectan al mismo broker, publican en topics acordados y nunca necesitan saber el uno del otro.

¿Cuál es mejor para sensores alimentados por batería?

El ESP32, con mucha diferencia. Su modo deep sleep le permite publicar una lectura y apagarse entre mediciones, algo que una Raspberry Pi no puede hacer.

¿Debo ejecutar el broker MQTT en mi Raspberry Pi?

Sirve para aprender, pero ata todos los dispositivos a una sola tarjeta SD y a una sola red doméstica. Un broker alojado elimina ese punto único de fallo y te da TLS y acceso remoto sin cambios en el router.

Artículos relacionados

Fiabilidad de la Raspberry Pi: cómo usar una Pi 24/7 como gateway IoT

Una guía práctica para mantener un gateway MQTT con Raspberry Pi funcionando durante meses: desgaste del almacenamiento, sistemas de archivos de solo lectura, alimentación, refrigeración, watchdogs de hardware y software y monitorización remota de la salud.

9 min de lectura

Pico W vs Pico 2 W para MQTT: rendimiento, memoria y TLS de RP2040 frente a RP2350

La Pico 2 W mantiene el formato y el chip Wi-Fi de la Pico W, pero sustituye el RP2040 por el RP2350, más rápido. Esta comparativa analiza qué significa para los dispositivos MQTT: CPU, memoria, TLS, funciones de seguridad, soporte de software y qué placa comprar para cada proyecto.

9 min de lectura

Registro de accesos Raspberry Pi RFID MQTT con el lector RC522

Conecta un lector RFID RC522 a una Raspberry Pi, lee etiquetas en Python, compáralas con una lista blanca local y publica cada intento de acceso como un evento MQTT que pueden consumir registradores, dashboards y herramientas de alertas.

8 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.