ESP32 ve Arduino

IoT İçin ESP32 vs Raspberry Pi Pico W: Wi-Fi, MicroPython, Arduino ve TLS Karşılaştırması

ESP32 ve Raspberry Pi Pico W'nin bağlantılı projeler için pratik bir karşılaştırması: donanım, Wi-Fi ve Bluetooth, programlama seçenekleri, TLS performansı, düşük güç modları ve her iki kartta MQTT kodu.

Yan yana duran ve ikisi de sensör verisini bir MQTT broker'ına yayınlayan ESP32 vs Raspberry Pi Pico 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

ESP32 vs Raspberry Pi Pico W, bir Wi-Fi IoT projesine başlarken en sık sorulan sorulardan biridir ve her iki kart da birkaç satır kodla sensör verisini bir MQTT broker'ına yayınlayabilir. Bu karşılaştırma, bağlantılı cihazlar için gerçekten önemli olan konulara odaklanıyor: kablosuz yığın, programlama ortamları, TLS performansı, güç tasarrufu ve ekosistem. Sonunda da her proje türü için net bir öneri sunuyor.

Kısa Cevap

Cihaz öncelikle bir ağ cihazıysa ESP32'yi seçin: TLS, Bluetooth, deep sleep ile pil çalışması veya olgun Arduino ve ESP-IDF kütüphaneleri gerekiyorsa. Raspberry Pi'nin mükemmel dokümantasyonuna, RP2040'ın programlanabilir I/O'suna (PIO) veya yumuşak bir MicroPython öğrenme yoluna değer veriyorsanız ve cihaz çoğunlukla şebeke elektriğiyle çalışıyorsa Pico W'yi seçin. Her ikisi de son derece yetenekli MQTT client'larıdır.

Bir Bakışta Donanım

ESP32 (klasik, örn. ESP32-WROOM-32) Raspberry Pi Pico W
CPU Çift çekirdekli Xtensa LX6, 240 MHz'e kadar Çift çekirdekli Arm Cortex-M0+ (RP2040), 133 MHz
SRAM 520 KB 264 KB
Flash Modüllerde genellikle 4 MB 2 MB
Wi-Fi 802.11 b/g/n, 2,4 GHz, entegre 802.11n, 2,4 GHz, SPI üzerinden Infineon CYW43439
Bluetooth Classic ve BLE CYW43439 üzerinden: MicroPython'da BLE, C SDK'da BLE ve Classic (piyasaya çıktıktan sonra eklendi)
Kripto hızlandırma AES, SHA, RSA/büyük sayı donanımı Yok
Özel I/O Dokunmatik algılama, klasik ESP32'de DAC, çok sayıda çevre birimi Özel protokoller için PIO durum makineleri
Düşük güç RTC belleği, zamanlayıcı ve GPIO ile uyanmalı deep sleep Dormant ve sleep modları, Wi-Fi cihazları için daha az hazır çözüm
Kart çeşitliliği Pek çok üreticiden yüzlerce kart Resmi kart ve uyumlu üçüncü taraf kartlar

ESP32 ailesinin pek çok üyesi var: S3 yapay zeka vektör komutları ve USB ekler, C3 ve C6 düşük maliyetli RISC-V parçalardır, C6 ise Wi-Fi 6 ve Thread ekler. Raspberry Pi de daha hızlı Cortex-M33 çekirdekleri, daha fazla SRAM ve güvenlik özellikleriyle RP2350 tabanlı Pico 2 W'yi çıkardı. Bugün karar veriyorsanız yeni parçaları da karşılaştırın; aşağıdaki ödünleşimlerin çoğu yine geçerlidir.

Wi-Fi Yığını ve Ağ

ESP32'de Wi-Fi çipin bir parçasıdır ve ağ yığını (lwIP ile Espressif sürücüleri) piyasaya çıkmış çok sayıda üründe kullanılmıştır. Yeniden bağlanma, çoklu soket, TLS ve Wi-Fi provizyonlama gibi özellikler iyice denenmiştir. Espressif'in kendi ESP-MQTT bileşeni, ESP-IDF kullandığınızda MQTT 3.1.1 ve MQTT 5'i kutudan çıktığı gibi destekler.

Pico W, CYW43439 radyosunu SPI benzeri bir veri yolu üzerinden bağlar ve lwIP'yi RP2040 üzerinde çalıştırır. Tipik sensör ve kontrol projelerinde güvenilir şekilde çalışır; Raspberry Pi SDK'sı ve MicroPython portu iyi bakılmaktadır. Radyo sürücüsü RP2040'ın kaynaklarının bir kısmını tüketir ve C dilinde ESP32'ye göre daha az olgun ağ kütüphanesi seçeneğiniz vardır.

Her iki kart da yalnızca 2,4 GHz destekler; yani hiçbiri yalnızca 5 GHz olan bir ağa katılamaz.

Programlama Seçenekleri

Ortam ESP32 Pico W
Arduino Resmi Espressif çekirdeği, çok geniş kütüphane ekosistemi (PubSubClient, AsyncMqttClient, ArduinoJson) Earle Philhower'ın topluluk arduino-pico çekirdeği; PubSubClient çalışır
MicroPython Desteklenir, umqtt.simple mevcut Desteklenir ve Raspberry Pi tarafından resmi olarak belgelenir
CircuitPython Birçok kartta desteklenir Desteklenir
Yerel SDK FreeRTOS'lu ESP-IDF, dahili MQTT client lwIP'li Pico SDK, lwIP apps'ten MQTT client

MicroPython'a yeni başlayanlar için Pico W'nin dokümantasyonu gerçek bir avantajdır: Raspberry Pi rehberleri flash'lama, Wi-Fi ve ilk programlar konusunda çok az sürprizle yol gösterir. Arduino kullanıcıları içinse ESP32 daha derin bir kütüphane ekosistemine sahiptir. ESP32'de MicroPython'a yöneliyorsanız ESP32 için MicroPython umqtt rehberi eşdeğer kurulumu gösteriyor.

Pico W'de MicroPython ile MQTT

Bu betik bir Pico W'yi broker.connectmq.com'un genel test alanına bağlar ve çip üzerindeki sıcaklık sensörünü her on saniyede bir yayınlar. Sıcaklık sensörü satırlarını kaldırırsanız aynı kod MicroPython altında bir ESP32'de de çalışır.

import time
import network
import machine
from umqtt.simple import MQTTClient   # kurulum: import mip; mip.install("umqtt.simple")

SSID = "YOUR_WIFI"
PASSWORD = "YOUR_WIFI_PASSWORD"
BROKER = "broker.connectmq.com"
CLIENT_ID = b"picow-5b2e"                      # boş olmamalı ve benzersiz olmalı
TOPIC = b"connectmq/demo/picow-5b2e/telemetry"

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
for _ in range(30):
    if wlan.isconnected():
        break
    time.sleep(1)
if not wlan.isconnected():
    machine.reset()
print("Wi-Fi OK:", wlan.ifconfig()[0])

sensor = machine.ADC(4)                        # RP2040 dahili sıcaklık sensörü


def read_temp_c():
    volts = sensor.read_u16() * 3.3 / 65535
    return 27 - (volts - 0.706) / 0.001721


client = MQTTClient(CLIENT_ID, BROKER, port=1883, keepalive=60)
client.set_last_will(b"connectmq/demo/picow-5b2e/status", b"offline", retain=True, qos=1)
client.connect()
client.publish(b"connectmq/demo/picow-5b2e/status", b"online", retain=True, qos=1)

while True:
    try:
        payload = '{"temp_c":%.2f,"rssi":%d}' % (read_temp_c(), wlan.status("rssi"))
        client.publish(TOPIC, payload.encode())
        print("sent", payload)
    except OSError as e:
        print("MQTT error, reconnecting:", e)
        time.sleep(5)
        client.connect()
    time.sleep(10)

Herhangi bir bilgisayardan doğrulayın:

mosquitto_sub -h broker.connectmq.com -p 1883 -i picow-5b2e-viewer -t "connectmq/demo/picow-5b2e/#" -v

ESP32 için PubSubClient ile Arduino eşdeğeri ESP32 IoT eğitiminde adım adım anlatılıyor.

TLS Performansı: Kartların En Çok Ayrıştığı Nokta

Üretimdeki MQTT, 8883 portunda TLS üzerinden çalışmalıdır ve donanım farkı burada ortaya çıkar. Bir TLS el sıkışması, bir mikrodenetleyici için hesaplama açısından ağır olan açık anahtar işlemlerini (RSA veya eliptik eğri) ve sertifika doğrulamasını içerir.

  • ESP32, AES, SHA ve büyük sayı aritmetiği için donanım hızlandırmalı mbedTLS çalıştırır. El sıkışmaları o kadar hızlı tamamlanır ki bir Wi-Fi kopmasından sonra yeniden bağlanmak neredeyse fark edilmez ve uygulamanızın yanında TLS tamponları için yeterli RAM vardır.
  • Pico W aynı işlemleri, bu aritmetiği hızlandıran bazı komutlardan yoksun 133 MHz Cortex-M0+ çekirdeklerinde yazılımla yapar. TLS çalışır, ancak el sıkışmaları belirgin şekilde daha uzun sürer ve paylaşılacak 264 KB ile RAM daha kısıtlıdır.

Pratikte bu en çok uyanan, bağlanan, yayın yapan ve uyuyan pilli cihazlar için önemlidir: her uyanışta tam bir el sıkışmasının bedeli ödenir, dolayısıyla daha yavaş bir el sıkışması doğrudan pil ömrüne mal olur. Sürekli açık cihazlarda daha yavaş bir ilk bağlantı nadiren sorun olur.

İki ipucu her iki kart için de geçerlidir: sertifika doğrulaması güncel tarihi gerektirdiği için bağlanmadan önce sistem saatini (NTP) ayarlayın ve bellekten tasarruf etmek için yalnızca ihtiyacınız olan kök CA'yı (Let's Encrypt tabanlı broker'lar için ISRG Root X1) yükleyin. ESP32 MQTT SSL rehberi ESP32 tarafını ayrıntılı olarak gösteriyor.

Güç Tüketimi ve Pil Ömrü

ESP32'nin deep sleep modu tam olarak "uyan, ölç, yayınla, uyu" deseni için tasarlanmıştır: ana çekirdekler kapanır, RTC alanı bir zamanlayıcıyı ve birkaç baytlık belleği korur ve çip bir zamanlayıcı veya GPIO ile uyanır. Tek bir pille aylarca çalışan sensörler yaygındır. Eksiksiz bir örnek için MQTT ile ESP32 deep sleep yazısına bakın.

Pico W sleep ve dormant modlarına girebilir, ancak Wi-Fi çipinin ayrıca yönetilmesi gerekir ve araçlar daha az hazırdır. Pille çalışan pek çok Pico W projesi bunun yerine harici bir zamanlayıcı çipiyle gücü tamamen keser. Cihazınız şebeke veya USB gücüyle çalışıyorsa fark büyük ölçüde ortadan kalkar.

Karar Kontrol Listesi

  1. Pille çalışıyor ve TLS üzerinden yayın yapıyor mu? ESP32.
  2. Bluetooth Classic veya olgun bir BLE yığını gerekiyor mu? ESP32'nin geçmişi daha uzundur.
  3. Resmi eğitimlerle sıfırdan MicroPython mı öğreniyorsunuz? Pico W çok dostane bir seçimdir.
  4. Zamanlaması kritik özel protokoller mi (LED şeritler, alışılmadık seri formatlar)? Pico W'nin PIO'su mükemmeldir.
  5. Geniş Arduino kütüphanesi ihtiyacı mı var? ESP32.
  6. En yeni silikonu mu istiyorsunuz? Karar vermeden önce ESP32-S3/C6 ile Pico 2 W'yi karşılaştırın.

ESP8266'dan mı geliyorsunuz? ESP32 vs ESP8266 karşılaştırması bu yükseltme yolunu ele alıyor.

Broker Tarafı Her İkisi İçin Aynı

Hangi kartı seçerseniz seçin, cihaz yalnızca bir MQTT client'ıdır. Kimlik doğrulama, panellere ve backend'lere dağıtım ve retained durum broker tarafından yönetilir. Bu da ESP32 ve Pico W cihazlarını başka hiçbir yerde değişiklik yapmadan aynı topic'lerde karıştırabileceğiniz anlamına gelir. Testlere genel MQTT test broker'ında başlayın; proje canlıya geçtiğinde cihazlarınızın kendi kimlik bilgilerini alması için özel, TLS korumalı bir bulut MQTT broker'ına geçin. ConnectMQ hem MQTT 3.1.1'i (umqtt.simple ve PubSubClient tarafından kullanılan) hem de MQTT 5'i destekler.

ConnectMQ ile Başlayın

Her iki kart da ConnectMQ ile kutudan çıktığı gibi çalışır: 1883'te TCP, Let's Encrypt sertifikasıyla 8883'te TLS ve mesajlarınızı test etmek için tarayıcı içi bir MQTT client. app.connectmq.com adresinde kredi kartı olmadan ücretsiz bir Serverless broker oluşturun ve ESP32'nizi veya Pico W'nizi dakikalar içinde bağlayın.

Sık Sorulan Sorular

Yeni başlayanlar için ESP32 mi yoksa Pico W mi daha iyi?

İkisi de yeni başlayanlar için uygundur. Pico W'nin olağanüstü resmi MicroPython dokümantasyonu vardır; ESP32 ise daha geniş bir Arduino eğitimi ve kütüphane havuzuna sahiptir.

Raspberry Pi Pico W, TLS üzerinden MQTT kullanabilir mi?

Evet; MicroPython'un ssl modülü veya arduino-pico çekirdeğinin güvenli client'ı ile. Kripto hızlandırma olmadığı için ESP32'ye göre daha yavaş el sıkışmaları bekleyin.

Hangi kart daha az güç tüketir?

Ölçümler arasında uyuyan pilli cihazlar için ESP32'nin deep sleep modu daha kolay kullanılır ve çok verimlidir. Sürekli açık cihazlarda fark, sensör seçimi ve yayın aralığının etkisinden daha küçüktür.

Tek bir MQTT sisteminde ESP32 ve Pico W cihazlarını karıştırabilir miyim?

Evet. MQTT donanımdan bağımsızdır; bu yüzden ikisi de aynı broker ve topic'ler üzerinde yayın yapabilir ve abone olabilir.

İlgili yazılar

ESP32 NTP MQTT Zaman Damgası: Her Mesaja Doğru Zaman Ekleyin

ESP32 saatini NTP ile eşitleyin, ISO 8601 ve epoch milisaniye zaman damgalarını biçimlendirin ve bunları MQTT payload'larına ekleyin; böylece ölçümler geç yayınlansa bile gerçek alınma zamanlarını korur.

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.