Raspberry Pi

Pico W vs Pico 2 W para MQTT: Desempenho, Memória e TLS do RP2040 vs RP2350

O Pico 2 W mantém o formato e o chip Wi-Fi do Pico W, mas troca o RP2040 pelo RP2350, mais rápido. Esta comparação mostra o que isso significa para dispositivos MQTT: CPU, memória, TLS, recursos de segurança, suporte de software e qual placa comprar para cada projeto.

Placas Pico W vs Pico 2 W lado a lado, ambas conectadas via Wi-Fi a um broker MQTT
Rode isso no seu próprio broker MQTTTenha um broker MQTT privado e gerenciado no plano Free e comece com exemplos de código prontos.
Teste grátis Exemplos de código Sem cartão de crédito

Pico W vs Pico 2 W é uma decisão rápida para a maioria dos projetos MQTT, mas vale entender os motivos antes de comprar uma gaveta cheia de placas. As duas têm o mesmo formato, a mesma pinagem e o mesmo chip Wi-Fi Infineon CYW43439; a diferença está no microcontrolador. Esta comparação explica o que a troca do RP2040 pelo RP2350 muda para dispositivos conectados, especialmente em memória e TLS, e traz um pequeno script para medir a diferença na sua própria rede.

A resposta curta

Para novos projetos MQTT, escolha o Pico 2 W. Ele tem cerca do dobro de RAM e flash, núcleos Cortex-M33 mais rápidos com unidade de ponto flutuante e recursos de segurança em hardware, rodando o mesmo código MicroPython do Pico W quase sem alterações. Continue usando o Pico W quando já tiver estoque, um projeto validado ou um sensor muito simples que publica via MQTT puro em uma rede confiável, onde a folga extra traz pouco benefício.

Especificações do Pico W vs Pico 2 W

Raspberry Pi Pico W Raspberry Pi Pico 2 W
Microcontrolador RP2040 RP2350 (variante A)
CPU Dual Arm Cortex-M0+, 133 MHz Dual Arm Cortex-M33 a 150 MHz, ou dois núcleos RISC-V Hazard3 (selecionável)
Ponto flutuante Apenas por software FPU de precisão simples e instruções DSP nos núcleos M33
SRAM 264 KB 520 KB
Flash na placa 2 MB 4 MB
Sem fio CYW43439: Wi-Fi 802.11n 2,4 GHz, Bluetooth 5.2 O mesmo CYW43439
PIO 2 blocos, 8 máquinas de estado 3 blocos, 12 máquinas de estado
Segurança Nada além da boot ROM básica Arm TrustZone, boot assinado, memória OTP, acelerador SHA-256, TRNG em hardware, detecção de glitch
Formato e pinagem Padrão Pico Igual ao Pico W
Build do MicroPython RPI_PICO_W RPI_PICO2_W

Os números principais vêm dos datasheets publicados pela Raspberry Pi; consulte a documentação oficial do Pico para os detalhes completos e as erratas atuais.

O que as diferenças significam para dispositivos MQTT

O Wi-Fi é o mesmo

Como as duas placas usam o CYW43439 pela mesma interface do tipo SPI, o alcance do Wi-Fi, as bandas suportadas (somente 2,4 GHz) e a vazão de rede são praticamente idênticos. Um Pico 2 W não vai conectar de mais longe nem a uma rede de 5 GHz. Se seus problemas com MQTT são de intensidade de sinal, uma placa nova não vai resolvê-los; a posição da antena e do access point, sim.

A folga de memória é o maior ganho prático

Em um Pico W rodando MicroPython, o heap disponível após o boot é confortável para MQTT puro, mas fica apertado quando você adiciona TLS, manipulação de JSON, alguns drivers de sensor e leituras em buffer. Só uma sessão TLS precisa de dezenas de kilobytes para seus buffers, e a fragmentação pode causar erros ENOMEM mesmo quando a memória livre total parece suficiente.

O Pico 2 W praticamente dobra a SRAM. Na prática, isso significa:

  • Conexões TLS que falham de forma intermitente com erros de memória em um Pico W geralmente simplesmente funcionam.
  • Você pode guardar mais leituras em buffer enquanto está offline e publicá-las quando o broker voltar a ficar acessível.
  • Payloads JSON maiores e mais topics por dispositivo deixam de ser uma preocupação.

A flash também dobra, de 2 MB para 4 MB, o que deixa mais espaço para bibliotecas MicroPython, arquivos de certificado, logs e esquemas de atualização over-the-air.

Tempo de handshake TLS

No RP2040, todo handshake TLS roda inteiramente em software nos núcleos Cortex-M0+, que não têm as instruções que tornam rápida a aritmética de números grandes. O handshake é claramente perceptível e, em um dispositivo a bateria que reconecta a cada despertar, é um custo real de tempo e energia.

Os núcleos Cortex-M33 do RP2350 rodam em clock mais alto, executam com mais eficiência por ciclo e incluem instruções DSP, então as operações de chave pública do handshake terminam mais rápido. O RP2350 também tem um acelerador SHA-256 e um gerador de números aleatórios verdadeiro. Se o seu firmware usa o hardware SHA-256 depende de como a biblioteca TLS foi compilada, mas a melhoria da CPU por si só já encurta os handshakes. Em vez de confiar nos números de outra pessoa, meça na sua própria rede com o script abaixo.

Recursos de segurança

O Pico W não tem secure boot nem armazenamento protegido de chaves, então qualquer pessoa com acesso físico pode ler a flash, incluindo senhas de Wi-Fi e credenciais MQTT. O Pico 2 W adiciona boot assinado e memória programável uma única vez (OTP) capaz de guardar chaves, além do Arm TrustZone para separar código confiável. Esses recursos exigem configuração deliberada pelo SDK em C e não são ativados por padrão pelo MicroPython, mas fazem diferença real em produtos implantados onde os dispositivos podem ser roubados ou adulterados.

Compatibilidade de software

Seu código MicroPython do Pico W quase sempre roda sem mudanças no Pico 2 W depois de gravar o firmware RPI_PICO2_W. As APIs network, machine.Pin("LED"), umqtt.simple e ssl são as mesmas. Para o sensor de temperatura interno, use machine.ADC(machine.ADC.CORE_TEMP) em vez de um número de canal fixo, para manter a portabilidade. O SDK C/C++ 2.x e o core Arduino-Pico suportam os dois chips.

Uma observação de hardware: o silício inicial do RP2350 tinha uma errata documentada (E9) que afeta entradas GPIO dependentes de resistores pull-down internos. Revisões posteriores do chip resolvem isso. Se o seu projeto depende de pull-downs internos, leia as erratas atuais do datasheet do RP2350 e use resistores externos quando recomendado.

Faça o benchmark das duas placas você mesmo

Este script MicroPython roda em qualquer uma das placas. Ele informa a frequência da CPU, a memória livre e o tempo de uma conexão MQTT pura e de uma conexão MQTT com TLS ao broker.connectmq.com. Copie antes o isrgrootx1.der para a placa, como descrito no nosso guia de Pico W MQTT TLS.

# bench.py - compara tempos de conexão MQTT no Pico W e no 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])

Rode nas duas placas, na mesma rede e no mesmo local, e compare as medianas. Os números de TCP puro mostram a linha de base da sua rede; a diferença entre TCP e TLS mostra o custo criptográfico em cada chip. O script também publica cada resultado no servidor MQTT público, para você acompanhar as duas placas lado a lado:

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

Mantenha o número de execuções moderado. O servidor público permite 10 mensagens por segundo por cliente, e reconexões rápidas repetidas não são uma carga de trabalho realista de qualquer forma.

Qual placa para cada projeto MQTT

Projeto Placa recomendada Motivo
Aprender MQTT, kits para sala de aula Qualquer uma Mesmo código, mesmos tutoriais; use o que tiver
Sensor ligado à rede elétrica, TLS, uma conexão de longa duração Pico 2 W Mais folga de RAM para TLS e buffer
Dispositivo a bateria que reconecta a cada despertar Pico 2 W Handshake mais curto a cada ciclo
Dispositivo com muitos sensores, JSON e buffer offline Pico 2 W O dobro de SRAM e flash
Produto exposto a adulteração física Pico 2 W Boot assinado e armazenamento de chaves em OTP
Frota existente de Pico W com firmware validado Pico W Sem motivo para requalificar, a menos que atinja os limites
TLS pesado, BLE mais Wi-Fi, foco em deep sleep Considere um ESP32 Aceleração criptográfica e modos de baixo consumo maduros

A última linha lembra que a família Pico não é a única opção. Nossa comparação ESP32 vs Raspberry Pi Pico W mostra quando um ESP32 se encaixa melhor, e o guia de Pico W a bateria com MQTT aprofunda o orçamento de energia.

Conectando qualquer uma das placas a um broker de produção

Seja qual for a placa escolhida, o lado do broker é o mesmo. Para testes, use o broker.connectmq.com de forma anônima com um client ID único. Para implantações reais, crie um broker privado no ConnectMQ e use usuário, senha e client ID gerados via TLS na porta 8883. Como o certificado é da Let's Encrypt, o mesmo arquivo de certificado raiz funciona nas duas placas. O código passo a passo de uma primeira conexão está no nosso tutorial de MQTT com Raspberry Pi Pico W, e o tutorial de MQTT com Raspberry Pi, mais amplo, cobre as placas de tamanho completo que muitas vezes atuam como gateways ao lado dos dispositivos Pico.

Um broker MQTT gerenciado cuida de disponibilidade, certificados e limites de conexão, para que seu esforço vá para o firmware do dispositivo. No plano Serverless gratuito do ConnectMQ você tem até 25 conexões, QoS até 1 e mensagens de até 256 KB, o que é mais que suficiente para uma frota de placas Pico em desenvolvimento.

Conecte suas placas Pico ao ConnectMQ

Cadastre-se em app.connectmq.com no plano Serverless gratuito, sem cartão de crédito. Crie um broker, grave em qualquer uma das placas o build MicroPython correspondente e use o explorador de topics ao vivo do portal para acompanhar seu Pico W e seu Pico 2 W reportando em tempo real.

Perguntas frequentes

O Pico 2 W é compatível com o código do Pico W?

Na maior parte, sim. Depois de gravar o build MicroPython RPI_PICO2_W, o código de Wi-Fi, GPIO, umqtt.simple e TLS roda sem mudanças. Use machine.ADC(machine.ADC.CORE_TEMP) para o sensor de temperatura interno e mantenha a portabilidade.

O Pico 2 W tem Wi-Fi melhor que o Pico W?

Não. Os dois usam o mesmo chip CYW43439 com Wi-Fi 2,4 GHz e Bluetooth 5.2, então alcance e vazão são praticamente iguais. As melhorias estão no microcontrolador.

O TLS é mais rápido no Pico 2 W?

Sim, os núcleos Cortex-M33 do RP2350 completam o handshake mais rápido que os núcleos Cortex-M0+ do RP2040. Rode o script de benchmark deste artigo nas duas placas para ver a diferença na sua rede.

Devo atualizar um projeto existente com Pico W?

Só se você estiver atingindo limites de memória, precisar de reconexões mais rápidas com TLS ou precisar de secure boot. Um projeto Pico W funcionando em uma rede confiável tem pouco a ganhar com a troca.

Artigos relacionados

Registro de Acessos Raspberry Pi RFID MQTT com o Leitor RC522

Ligue um leitor RFID RC522 a um Raspberry Pi, leia tags em Python, confira-as em uma lista de permissões local e publique cada tentativa de acesso como um evento MQTT que loggers, dashboards e ferramentas de alerta podem consumir.

8 min de leitura

Confiabilidade do Raspberry Pi: Rodando um Pi 24/7 como Gateway IoT

Um guia prático para manter um gateway MQTT com Raspberry Pi rodando por meses: desgaste do armazenamento, sistemas de arquivos somente leitura, alimentação, refrigeração, watchdogs de hardware e software e monitoramento remoto de saúde.

9 min de leitura

Ponte BLE para MQTT com Raspberry Pi usando Python e Bleak

Use o Bluetooth integrado do Raspberry Pi, a biblioteca bleak e o paho-mqtt para escanear advertisements de sensores BLE, decodificar temperatura e umidade e publicar leituras limitadas em MQTT.

8 min de leitura

Todos os artigos →

Seu broker MQTT privado está a poucos cliques de distância

Crie uma conta, receba as credenciais do seu broker e conecte seu primeiro dispositivo — sem servidores para instalar, atualizar ou escalar.