Raspberry Pi

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.

Placas Pico W y Pico 2 W una junto a otra, ambas conectadas por Wi-Fi a un broker 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

Elegir entre Pico W vs Pico 2 W es una decisión rápida en la mayoría de los proyectos MQTT, pero conviene entender los motivos antes de comprar un cajón lleno de placas. Ambas tienen el mismo formato, el mismo pinout y el mismo chip Wi-Fi Infineon CYW43439; la diferencia está en el microcontrolador. Esta comparativa explica qué cambia el paso del RP2040 al RP2350 para los dispositivos conectados, sobre todo en memoria y TLS, y te da un pequeño script para medir la diferencia en tu propia red.

La respuesta corta

Para nuevos diseños MQTT, elige la Pico 2 W. Tiene aproximadamente el doble de RAM y de flash, núcleos Cortex-M33 más rápidos con unidad de coma flotante y funciones de seguridad por hardware, y ejecuta el mismo código MicroPython que la Pico W casi sin cambios. Sigue usando la Pico W cuando ya tengas stock, un diseño validado o un sensor muy sencillo que publica por MQTT sin cifrar en una red de confianza, donde el margen adicional aporta poco.

Especificaciones de Pico W vs Pico 2 W

Raspberry Pi Pico W Raspberry Pi Pico 2 W
Microcontrolador RP2040 RP2350 (variante A)
CPU Doble Arm Cortex-M0+, 133 MHz Doble Arm Cortex-M33 a 150 MHz, o doble núcleo RISC-V Hazard3 (seleccionable)
Coma flotante Solo por software FPU de precisión simple e instrucciones DSP en los núcleos M33
SRAM 264 KB 520 KB
Flash integrada 2 MB 4 MB
Inalámbrico CYW43439: Wi-Fi 802.11n a 2,4 GHz, Bluetooth 5.2 El mismo CYW43439
PIO 2 bloques, 8 máquinas de estados 3 bloques, 12 máquinas de estados
Seguridad Nada más allá de la boot ROM básica Arm TrustZone, arranque firmado, memoria OTP, acelerador SHA-256, TRNG por hardware, detección de glitches
Formato y pinout Estándar Pico Igual que la Pico W
Compilación de MicroPython RPI_PICO_W RPI_PICO2_W

Las cifras principales proceden de las hojas de datos publicadas por Raspberry Pi; consulta la documentación oficial de Pico para ver todos los detalles y las erratas vigentes.

Qué significan las diferencias para los dispositivos MQTT

El Wi-Fi es el mismo

Como ambas placas usan el CYW43439 mediante la misma interfaz de tipo SPI, el alcance Wi-Fi, las bandas admitidas (solo 2,4 GHz) y el rendimiento de red son prácticamente idénticos. Una Pico 2 W no se conectará desde más lejos ni a una red de 5 GHz. Si tus problemas con MQTT tienen que ver con la intensidad de la señal, una placa nueva no los resolverá; la colocación de la antena y la posición del punto de acceso sí.

El margen de memoria es la mayor ventaja práctica

En una Pico W con MicroPython, el heap disponible tras el arranque es cómodo para MQTT sin cifrar, pero se queda justo en cuanto añades TLS, manejo de JSON, unos cuantos drivers de sensores y lecturas en búfer. Una sesión TLS por sí sola necesita decenas de kilobytes para sus búferes, y la fragmentación puede provocar errores ENOMEM incluso cuando la memoria libre total parece suficiente.

La Pico 2 W prácticamente duplica la SRAM. En la práctica, eso significa:

  • Las conexiones TLS que fallan de forma intermitente por errores de memoria en una Pico W normalmente simplemente funcionan.
  • Puedes almacenar más lecturas mientras estás sin conexión y publicarlas cuando el broker vuelva a estar accesible.
  • Los payloads JSON más grandes y tener más topics por dispositivo preocupan menos.

La flash también se duplica, de 2 MB a 4 MB, lo que deja más espacio para librerías de MicroPython, archivos de certificados, registros y esquemas de actualización inalámbrica.

Tiempo de handshake TLS

En el RP2040, cada handshake TLS se ejecuta por completo por software en núcleos Cortex-M0+, que carecen de las instrucciones que aceleran la aritmética de números grandes. El handshake se nota claramente y, en un dispositivo a batería que reconecta cada vez que despierta, supone un coste real de tiempo y energía.

Los núcleos Cortex-M33 del RP2350 funcionan a mayor frecuencia, ejecutan de forma más eficiente por ciclo e incluyen instrucciones DSP, así que las operaciones de clave pública del handshake terminan antes. El RP2350 también tiene un acelerador SHA-256 y un generador de números aleatorios verdadero. Que tu firmware use el hardware SHA-256 depende de cómo esté compilada la librería TLS, pero la mejora de la CPU por sí sola acorta los handshakes. En lugar de fiarte de las cifras de otros, mide en tu propia red con el script de más abajo.

Funciones de seguridad

La Pico W no tiene arranque seguro ni almacenamiento protegido de claves, así que cualquiera con acceso físico puede leer la flash, incluidas las contraseñas Wi-Fi y las credenciales MQTT. La Pico 2 W añade arranque firmado y memoria programable una sola vez que puede guardar claves, además de Arm TrustZone para separar el código de confianza. Estas funciones requieren una configuración deliberada mediante el C SDK y MicroPython no las activa por defecto, pero marcan una diferencia real en productos desplegados donde los dispositivos pueden ser robados o manipulados.

Compatibilidad de software

Tu código MicroPython de la Pico W casi siempre funciona sin cambios en la Pico 2 W tras grabar el firmware RPI_PICO2_W. Las APIs network, machine.Pin("LED"), umqtt.simple y ssl son las mismas. Para el sensor de temperatura interno, usa machine.ADC(machine.ADC.CORE_TEMP) en lugar de un número de canal fijo para mantener la portabilidad. El C/C++ SDK 2.x y el core Arduino-Pico admiten ambos chips.

Una nota de hardware: los primeros chips RP2350 tenían una errata documentada (E9) que afectaba a las entradas GPIO que dependen de las resistencias pull-down internas. Las revisiones posteriores del chip la corrigen. Si tu diseño depende de pull-downs internos, lee las erratas vigentes de la hoja de datos del RP2350 y usa resistencias externas donde se recomiende.

Mide tú mismo ambas placas

Este script de MicroPython funciona en cualquiera de las dos placas. Informa de la frecuencia de la CPU, la memoria libre y el tiempo de una conexión MQTT sin cifrar y de una conexión MQTT con TLS a broker.connectmq.com. Copia antes isrgrootx1.der a la placa, como se describe en nuestra guía de Pico W MQTT TLS.

# bench.py - compare MQTT connect times on Pico W and Pico 2 W
import time, gc, ssl, network, machine, os, ubinascii
from umqtt.simple import MQTTClient

WIFI_SSID = "YOUR_WIFI_SSID"
WIFI_PASSWORD = "YOUR_WIFI_PASSWORD"
BROKER = "broker.connectmq.com"
CID = "bench-" + ubinascii.hexlify(machine.unique_id()).decode()
RUNS = 5

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(WIFI_SSID, WIFI_PASSWORD)
while not wlan.isconnected():
    time.sleep(0.2)

print("Board:", os.uname().machine)
print("CPU freq:", machine.freq() // 1_000_000, "MHz")
gc.collect()
print("Free heap:", gc.mem_free(), "bytes")
print("RSSI:", wlan.status("rssi"), "dBm")

ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
ctx.verify_mode = ssl.CERT_REQUIRED
with open("isrgrootx1.der", "rb") as f:
    ctx.load_verify_locations(cadata=f.read())


def timed_connect(port, use_tls):
    gc.collect()
    c = MQTTClient(CID, BROKER, port=port, keepalive=30, ssl=ctx if use_tls else None)
    t0 = time.ticks_ms()
    c.connect()
    dt = time.ticks_diff(time.ticks_ms(), t0)
    c.publish("connectmq/demo/bn4q7d/bench", "%s %d" % ("tls" if use_tls else "tcp", dt))
    c.disconnect()
    return dt


for label, port, tls in (("Plain TCP 1883", 1883, False), ("TLS 8883", 8883, True)):
    times = []
    for _ in range(RUNS):
        times.append(timed_connect(port, tls))
        time.sleep(1)
    times.sort()
    print(label, "connect ms - min:", times[0], "median:", times[len(times) // 2], "max:", times[-1])

Ejecútalo en ambas placas en la misma red y en el mismo lugar, y compara las medianas. Las cifras de TCP sin cifrar muestran la referencia de tu red; la diferencia entre TCP y TLS muestra el coste criptográfico en cada chip. El script también publica cada resultado en el servidor MQTT público gratuito, así que puedes ver cómo informan ambas placas una junto a otra:

mosquitto_sub -h broker.connectmq.com -p 1883 -i watch-bn4q7d -v -t "connectmq/demo/bn4q7d/#"

Mantén moderado el número de ejecuciones. El servidor público permite 10 mensajes por segundo por cliente, y las reconexiones rápidas repetidas no son, de todos modos, una carga de trabajo realista.

Qué placa para cada proyecto MQTT

Proyecto Placa recomendada Motivo
Aprender MQTT, kits para el aula Cualquiera Mismo código, mismos tutoriales; usa la que tengas
Sensor alimentado por red, TLS, una conexión de larga duración Pico 2 W Más margen de RAM para TLS y búferes
Dispositivo a batería que reconecta en cada despertar Pico 2 W Handshake más corto en cada ciclo
Dispositivo con muchos sensores, JSON y búfer sin conexión Pico 2 W Doble de SRAM y de flash
Producto expuesto a manipulación física Pico 2 W Arranque firmado y almacenamiento de claves en OTP
Flota de Pico W existente con firmware validado Pico W No hay motivo para recualificar salvo que alcances los límites
TLS intensivo, BLE más Wi-Fi, prioridad al deep sleep Considera un ESP32 Aceleración criptográfica y modos de bajo consumo maduros

La última fila recuerda que la familia Pico no es la única opción. Nuestra comparativa ESP32 vs Raspberry Pi Pico W explica cuándo encaja mejor un ESP32, y la guía de Pico W a batería con MQTT profundiza en los presupuestos energéticos.

Conectar cualquiera de las dos placas a un broker de producción

Elijas la placa que elijas, el lado del broker es el mismo. Para pruebas, usa broker.connectmq.com de forma anónima con un client ID único, sin datos de producción. Para despliegues reales, crea un broker privado en ConnectMQ y usa el usuario, la contraseña y el client ID generados mediante TLS en el puerto 8883. Gracias al certificado de Let's Encrypt, el mismo archivo de certificado raíz sirve en ambas placas. El código paso a paso para una primera conexión está en nuestro tutorial de Raspberry Pi Pico W y MQTT, y el tutorial general de Raspberry Pi y MQTT cubre las placas de tamaño completo que a menudo actúan como gateways junto a los dispositivos Pico.

Un broker MQTT gestionado se ocupa de la disponibilidad, los certificados y los límites de conexión, para que tu esfuerzo se centre en el firmware del dispositivo. Con el plan gratuito Serverless de ConnectMQ obtienes hasta 25 conexiones, QoS hasta 1 y mensajes de hasta 256 KB, más que suficiente para una flota de placas Pico en desarrollo.

Conecta tus placas Pico a ConnectMQ

Regístrate en app.connectmq.com en el plan gratuito Serverless, sin tarjeta de crédito. Crea un broker, graba en cualquiera de las dos placas la compilación de MicroPython correspondiente y usa el explorador de topics en vivo del portal para ver cómo informan tu Pico W y tu Pico 2 W en tiempo real.

Preguntas frecuentes

¿Es la Pico 2 W compatible con el código de la Pico W?

En su mayor parte, sí. Tras grabar la compilación RPI_PICO2_W de MicroPython, el código de Wi-Fi, GPIO, umqtt.simple y TLS funciona sin cambios. Usa machine.ADC(machine.ADC.CORE_TEMP) para el sensor de temperatura interno y así mantener la portabilidad.

¿Tiene la Pico 2 W mejor Wi-Fi que la Pico W?

No. Ambas usan el mismo chip CYW43439 con Wi-Fi a 2,4 GHz y Bluetooth 5.2, así que el alcance y el rendimiento son prácticamente iguales. Las mejoras están en el microcontrolador.

¿Es TLS más rápido en la Pico 2 W?

Sí, los núcleos Cortex-M33 del RP2350 completan el handshake más rápido que los Cortex-M0+ del RP2040. Ejecuta el script de este artículo en ambas placas para ver la diferencia en tu red.

¿Debo actualizar un proyecto existente con Pico W?

Solo si estás alcanzando los límites de memoria, necesitas reconexiones más rápidas con TLS o necesitas arranque seguro. Un diseño con Pico W que funciona en una red de confianza tiene poco que ganar con el cambio.

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

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

Instalar Mosquitto en Raspberry Pi como broker MQTT local y seguro

Instala Mosquitto en una Raspberry Pi, protégelo con contraseñas y una configuración de listeners sensata, pruébalo con mosquitto_pub y mosquitto_sub, y aprende cuándo un broker local debe hacer de puente con un broker en la nube.

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.