Raspberry Pi

MQTT için Pico W ve Pico 2 W: RP2040 ile RP2350 Performans, Bellek ve TLS Karşılaştırması

Pico 2 W, Pico W'nin boyutunu ve Wi-Fi çipini korurken RP2040'ın yerine daha hızlı RP2350'yi koyuyor. Bu karşılaştırma bunun MQTT cihazları için ne anlama geldiğini inceliyor: işlemci, bellek, TLS, güvenlik özellikleri, yazılım desteği ve hangi proje için hangi kartı almanız gerektiği.

Her ikisi de Wi-Fi üzerinden bir MQTT broker'a bağlı, yan yana duran Pico W ve Pico 2 W kartları
Bunu kendi MQTT broker’ınızda çalıştırınFree planla özel, yönetilen bir MQTT broker alın ve hazır kod örnekleriyle başlayın.
Ücretsiz deneyin Kod örnekleri Kart gerekmez

Pico W vs Pico 2 W, çoğu MQTT projesi için kısa sürede verilen bir karardır; ancak bir çekmece dolusu kart satın almadan önce arkasındaki nedenleri anlamaya değer. İkisi de aynı boyuta, aynı pin dizilimine ve aynı Infineon CYW43439 Wi-Fi çipine sahiptir; fark mikrodenetleyicidedir. Bu karşılaştırma, RP2040'tan RP2350'ye geçişin bağlantılı cihazlar için, özellikle bellek ve TLS açısından neyi değiştirdiğini açıklıyor ve farkı kendi ağınızda ölçmeniz için küçük bir betik sunuyor.

Kısa Cevap

Yeni MQTT tasarımları için Pico 2 W'yi seçin. Yaklaşık iki kat RAM ve flash belleğe, kayan nokta birimine sahip daha hızlı Cortex-M33 çekirdeklerine ve donanımsal güvenlik özelliklerine sahiptir; üstelik Pico W ile aynı MicroPython kodunu neredeyse hiç değişiklik yapmadan çalıştırır. Elinizde stok, doğrulanmış bir tasarım veya güvenilir bir ağda düz MQTT ile yayın yapan çok basit bir sensör varsa Pico W kullanmaya devam edin; bu durumlarda ek kapasite pek fayda sağlamaz.

Pico W ve Pico 2 W Teknik Özellikleri

Raspberry Pi Pico W Raspberry Pi Pico 2 W
Mikrodenetleyici RP2040 RP2350 (A varyantı)
İşlemci Çift Arm Cortex-M0+, 133 MHz 150 MHz'de çift Arm Cortex-M33 veya çift Hazard3 RISC-V çekirdek (seçilebilir)
Kayan nokta Yalnızca yazılımla M33 çekirdeklerinde tek duyarlıklı FPU ve DSP komutları
SRAM 264 KB 520 KB
Dahili flash 2 MB 4 MB
Kablosuz CYW43439: 2,4 GHz 802.11n Wi-Fi, Bluetooth 5.2 Aynı CYW43439
PIO 2 blok, 8 durum makinesi 3 blok, 12 durum makinesi
Güvenlik Temel boot ROM dışında yok Arm TrustZone, imzalı önyükleme, OTP bellek, SHA-256 hızlandırıcı, donanımsal TRNG, glitch algılama
Form faktörü ve pin dizilimi Pico standardı Pico W ile aynı
MicroPython derlemesi RPI_PICO_W RPI_PICO2_W

Öne çıkan rakamlar Raspberry Pi'nin yayımladığı veri sayfalarından alınmıştır; tüm ayrıntılar ve güncel errata için resmi Pico dokümantasyonunu kontrol edin.

Farklar MQTT Cihazları İçin Ne Anlama Geliyor?

Wi-Fi aynı

Her iki kart da CYW43439'u aynı SPI benzeri arabirim üzerinden kullandığı için ham Wi-Fi menzili, desteklenen bantlar (yalnızca 2,4 GHz) ve ağ verimi temelde aynıdır. Bir Pico 2 W daha uzaktan bağlanmaz ya da 5 GHz bir ağa bağlanamaz. MQTT sorunlarınız sinyal gücüyle ilgiliyse yeni bir kart bunları çözmez; anten yerleşimi ve erişim noktasının konumu çözer.

En büyük pratik kazanç bellek payı

MicroPython çalıştıran bir Pico W'de açılıştan sonra kullanılabilir heap düz MQTT için rahattır, ancak TLS, JSON işleme, birkaç sensör sürücüsü ve tamponlanmış ölçümler eklendiğinde daralır. Tek bir TLS oturumu bile tamponları için onlarca kilobayt gerektirir ve parçalanma, toplam boş bellek yeterli görünse bile ENOMEM hatalarına yol açabilir.

Pico 2 W, SRAM'i yaklaşık iki katına çıkarır. Pratikte bunun anlamı:

  • Pico W'de bellek hatalarıyla ara sıra başarısız olan TLS bağlantıları genellikle sorunsuz çalışır.
  • Çevrimdışıyken daha fazla ölçümü tamponlayabilir ve broker yeniden erişilebilir olduğunda yayınlayabilirsiniz.
  • Daha büyük JSON payload'ları ve cihaz başına daha fazla topic daha az sorun yaratır.

Flash da 2 MB'tan 4 MB'a iki katına çıkar; bu da MicroPython kütüphaneleri, sertifika dosyaları, günlükler ve kablosuz (OTA) güncelleme düzenleri için daha fazla yer bırakır.

TLS el sıkışma süresi

RP2040'ta her TLS el sıkışması tamamen yazılımla, büyük sayı aritmetiğini hızlandıran komutlardan yoksun Cortex-M0+ çekirdeklerinde çalışır. El sıkışma belirgin biçimde hissedilir ve her uyandığında yeniden bağlanan pilli bir cihazda zaman ve enerji açısından gerçek bir maliyettir.

RP2350'nin Cortex-M33 çekirdekleri daha yüksek saat hızında çalışır, döngü başına daha verimlidir ve DSP komutları içerir; bu nedenle el sıkışmadaki açık anahtar işlemleri daha hızlı tamamlanır. RP2350'de ayrıca bir SHA-256 hızlandırıcı ve gerçek rastgele sayı üreteci bulunur. Firmware'inizin SHA-256 donanımını kullanıp kullanmadığı TLS kütüphanesinin nasıl derlendiğine bağlıdır, ancak yalnızca işlemci iyileştirmesi bile el sıkışmaları kısaltır. Başkasının rakamlarına güvenmek yerine aşağıdaki betikle kendi ağınızda ölçün.

Güvenlik özellikleri

Pico W'de güvenli önyükleme veya korumalı anahtar depolama yoktur; bu nedenle fiziksel erişimi olan herkes Wi-Fi parolaları ve MQTT kimlik bilgileri dahil flash belleği okuyabilir. Pico 2 W, imzalı önyükleme ve anahtar tutabilen tek seferlik programlanabilir (OTP) bellek ile güvenilir kodu ayırmak için Arm TrustZone ekler. Bu özellikler C SDK üzerinden bilinçli bir kurulum gerektirir ve MicroPython tarafından varsayılan olarak etkinleştirilmez; ancak cihazların çalınabileceği veya kurcalanabileceği yerlere kurulan ürünlerde gerçek bir fark yaratır.

Yazılım uyumluluğu

Pico W MicroPython kodunuz, RPI_PICO2_W firmware'ini yükledikten sonra Pico 2 W'de neredeyse her zaman değiştirilmeden çalışır. network, machine.Pin("LED"), umqtt.simple ve ssl API'leri aynıdır. Dahili sıcaklık sensörü için taşınabilir kalmak adına sabit kodlu bir kanal numarası yerine machine.ADC(machine.ADC.CORE_TEMP) kullanın. C/C++ SDK 2.x ve Arduino-Pico çekirdeği her iki çipi de destekler.

Bir donanım notu: erken RP2350 silikonunda, dahili pull-down dirençlerine dayanan GPIO girişlerini etkileyen belgelenmiş bir erratum (E9) vardı. Sonraki çip revizyonları bu sorunu gideriyor. Tasarımınız dahili pull-down'lara dayanıyorsa güncel RP2350 veri sayfası errata'sını okuyun ve önerilen yerlerde harici dirençler kullanın.

İki Kartı Kendiniz Test Edin

Bu MicroPython betiği her iki kartta da çalışır. İşlemci frekansını, boş belleği ve broker.connectmq.com'a düz MQTT bağlantısı ile TLS MQTT bağlantısının sürelerini raporlar. Önce Pico W MQTT TLS rehberimizde anlatıldığı gibi isrgrootx1.der dosyasını karta kopyalayın.

# 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])

Betiği her iki kartta, aynı ağda ve aynı noktada çalıştırıp medyan değerleri karşılaştırın. Düz TCP sayıları ağınızın temel değerini gösterir; TCP ile TLS arasındaki fark ise her çipteki kriptografik maliyeti gösterir. Betik her sonucu ayrıca genel MQTT test broker'ına yayınlar; böylece iki kartın raporlarını yan yana izleyebilirsiniz:

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

Çalıştırma sayısını makul tutun. Genel broker istemci başına saniyede 10 mesaja izin verir ve art arda hızlı yeniden bağlanmalar zaten gerçekçi bir iş yükü değildir.

Hangi MQTT Projesi İçin Hangi Kart?

Proje Önerilen kart Neden
MQTT öğrenme, sınıf setleri İkisi de Aynı kod, aynı eğitimler; elinizdekini kullanın
Şebekeden beslenen sensör, TLS, tek uzun ömürlü bağlantı Pico 2 W TLS ve tamponlama için daha fazla RAM payı
Her uyanışta yeniden bağlanan pilli cihaz Pico 2 W Uyanma döngüsü başına daha kısa el sıkışma
Çok sayıda sensör, JSON ve çevrimdışı tamponlama içeren cihaz Pico 2 W İki kat SRAM ve flash
Fiziksel kurcalamaya açık ürün Pico 2 W İmzalı önyükleme ve OTP anahtar depolama
Doğrulanmış firmware'e sahip mevcut Pico W filosu Pico W Sınırlara takılmadıkça yeniden doğrulamaya gerek yok
Yoğun TLS, BLE ile Wi-Fi, derin uyku odaklı ESP32'yi değerlendirin Kriptografi hızlandırma ve olgun düşük güç modları

Son satır, Pico ailesinin tek seçenek olmadığını hatırlatıyor. ESP32 ve Raspberry Pi Pico W karşılaştırmamız, ESP32'nin ne zaman daha uygun olduğunu ele alıyor; Pico W pilli MQTT rehberi ise güç bütçelerine daha derinlemesine giriyor.

Her İki Kartı da Üretim Broker'ına Bağlamak

Hangi kartı seçerseniz seçin broker tarafı aynıdır. Test için broker.connectmq.com'u benzersiz bir client ID ile anonim olarak kullanın. Gerçek kurulumlar için ConnectMQ üzerinde özel bir broker oluşturun ve oluşturulan kullanıcı adı, parola ve client ID'yi 8883 portunda TLS üzerinden kullanın. Let's Encrypt sertifikası sayesinde aynı kök sertifika dosyası her iki kartta da çalışır. İlk bağlantı için adım adım kod Raspberry Pi Pico W MQTT eğitimimizde yer alıyor; daha kapsamlı Raspberry Pi MQTT eğitimi ise Pico cihazlarının yanında sıklıkla ağ geçidi görevi gören tam boyutlu kartları ele alıyor.

Yönetilen bir MQTT broker çalışma süresi, sertifikalar ve bağlantı limitleriyle ilgilenir; böylece emeğinizi cihaz firmware'ine harcarsınız. Ücretsiz ConnectMQ Serverless planında 25'e kadar bağlantı, 1'e kadar QoS ve 256 KB'a kadar mesaj elde edersiniz; bu, geliştirme aşamasındaki bir Pico kart filosu için fazlasıyla yeterlidir.

Pico Kartlarınızı ConnectMQ'ya Bağlayın

app.connectmq.com adresinden kredi kartı gerekmeden ücretsiz Serverless plana kaydolun. Bir broker oluşturun, kartlardan birine uygun MicroPython derlemesini yükleyin ve Pico W ile Pico 2 W'nizin gerçek zamanlı raporlarını izlemek için portalın canlı topic gezginini kullanın.

Sık Sorulan Sorular

Pico 2 W, Pico W koduyla uyumlu mu?

Büyük ölçüde evet. RPI_PICO2_W MicroPython derlemesini yükledikten sonra Wi-Fi, GPIO, umqtt.simple ve TLS kodu değiştirilmeden çalışır. Taşınabilir kalmak için dahili sıcaklık sensöründe machine.ADC(machine.ADC.CORE_TEMP) kullanın.

Pico 2 W'nin Wi-Fi'si Pico W'den daha mı iyi?

Hayır. İkisi de 2,4 GHz Wi-Fi ve Bluetooth 5.2 sunan aynı CYW43439 çipini kullanır; dolayısıyla menzil ve verim temelde aynıdır. İyileştirmeler mikrodenetleyicidedir.

Pico 2 W'de TLS daha mı hızlı?

Evet, RP2350'nin Cortex-M33 çekirdekleri el sıkışmayı RP2040'ın Cortex-M0+ çekirdeklerinden daha hızlı tamamlar. Farkı kendi ağınızda görmek için bu yazıdaki test betiğini her iki kartta çalıştırın.

Mevcut bir Pico W projesini yükseltmeli miyim?

Yalnızca bellek sınırlarına takılıyorsanız, TLS ile daha hızlı yeniden bağlanmaya ihtiyacınız varsa veya güvenli önyükleme gerekiyorsa. Güvenilir bir ağda çalışan bir Pico W tasarımının geçişten kazanacağı pek bir şey yoktur.

İlgili yazılar

RC522 Okuyucu ile Raspberry Pi RFID MQTT Erişim Kaydı

Bir RC522 RFID okuyucuyu Raspberry Pi'ye bağlayın, etiketleri Python ile okuyun, yerel bir izin listesiyle karşılaştırın ve her erişim denemesini kayıt araçlarının, panellerin ve uyarı araçlarının tüketebileceği bir MQTT olayı olarak yayınlayın.

6 dk okuma

Python ve Bleak ile Raspberry Pi BLE'den MQTT'ye Köprü

Raspberry Pi'nin dahili Bluetooth'unu, bleak kütüphanesini ve paho-mqtt'yi kullanarak BLE sensör yayın paketlerini tarayın, sıcaklık ve nemi çözün ve hız sınırlı ölçümleri MQTT'ye yayınlayın.

6 dk okuma

Tüm yazılar →

Özel MQTT broker’ınız birkaç tık uzağınızda

Hesabınızı oluşturun, broker kimlik bilgilerinizi alın ve ilk cihazınızı bağlayın — kurulacak, yamalanacak ya da ölçeklendirilecek sunucu yok.