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.



