ESP32 ve Arduino

MQTT Projeleri İçin ESP32 vs ESP8266: Bellek, TLS, Çevre Birimleri ve Maliyet

Bir MQTT cihazı için ESP32 ile ESP8266 arasında mı kaldınız? Bu karşılaştırma bellek, TLS yeteneği, çevre birimleri, güç, kütüphane desteği ve maliyeti ele alıyor ve proje türüne göre net öneriler sunuyor.

ESP32 vs ESP8266 MQTT karşılaştırması için yan yana duran ESP32 ve ESP8266 geliştirme 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 ESP8266, Wi-Fi tabanlı MQTT projelerinin çoğunda verilen ilk donanım kararıdır ve doğru cevap ham hızdan çok belleğe, TLS'e ve ihtiyaç duyduğunuz çevre birimlerine bağlıdır. Bu karşılaştırma, cihazınızın aylarca bir broker'a bağlı kalması gerektiğinde önem taşıyan farkları ele alır. Sonunda bir sonraki sensörünüz, aktüatörünüz veya gateway'iniz için hangi çipi almanız gerektiğini bileceksiniz.

Kısa Cevap

Şifreli bağlantı, birkaç sensörden fazlası, Bluetooth, bol yer kalan kablosuz (OTA) güncellemeler veya herhangi bir yerel işleme gerektiren yeni tasarımlar için ESP32'yi seçin. Tek bir röle veya sıcaklık sensörü gibi çok basit, maliyete duyarlı düğümler için, özellikle elinizde kartlar veya kanıtlanmış bir kod tabanı zaten varsa ESP8266'yı seçin.

Yazının geri kalanı bunun nedenini açıklıyor.

Teknik Özellik Karşılaştırması

Tablo, klasik ESP32'yi (ESP32-WROOM-32 sınıfı modüller) ESP8266 (ESP-12 sınıfı modüller) ile karşılaştırır. Daha yeni ESP32 varyantları aşağıda ele alınmıştır.

Özellik ESP8266 ESP32 (klasik)
CPU Tek çekirdekli Tensilica L106, 80/160 MHz Çift çekirdekli Xtensa LX6, 240 MHz'e kadar
Veri RAM'i Yaklaşık 80 KB kullanıcı veri RAM'i, sketch'iniz için boş kalan çok daha az 520 KB SRAM
Wi-Fi 802.11 b/g/n, 2,4 GHz 802.11 b/g/n, 2,4 GHz
Bluetooth Yok Klasik Bluetooth ve BLE
GPIO Yaklaşık 17, birkaçında açılış kısıtlamaları var Yaklaşık 34
ADC Tek 10 bit kanal 18 kanala kadar, 12 bit
Donanımsal kripto Yok AES, SHA, RSA hızlandırma
Diğer çevre birimleri UART, SPI, I2C (yazılımsal), PWM UART, SPI, I2C, I2S, CAN (TWAI), dokunmatik, DAC, çok sayıda PWM kanalı
Deep sleep akımı Düşük Düşük, ayrıca ULP yardımcı işlemci
Arduino core esp8266 by ESP8266 Community esp32 by Espressif Systems
FreeRTOS Yok (Arduino altında non-OS SDK) Var

Resmi veri sayfaları ve varyant tabloları için Espressif dokümantasyonuna bakın.

Bellek: En Önemli Fark

MQTT'nin kendisi hafiftir. Küçük bir buffer'a sahip bir PubSubClient bağlantısı her iki çipe de rahatça sığar. Gerçek ürünlerin ihtiyaç duyduğu şeyleri eklediğinizde bellek belirleyici faktör haline gelir.

ESP8266'da Wi-Fi, TCP/IP yığını ve Arduino core zaten RAM'in büyük bir kısmını kullanır ve uygulamanız için nispeten küçük bir heap bırakır. Bir TLS oturumu ise kayıt buffer'ları ve sertifika kontrolleri için büyük, bitişik bir blok gerektirir. Buna bir JSON kütüphanesi, bir web yapılandırma sayfası ve 2 KB'lık bir MQTT buffer'ı ekleyin; sınıra çok yaklaşırsınız. Cihaz masanızda çalışabilir ve heap parçalandığı için bir sonraki TLS el sıkışması yeterince büyük bir blok bulamadığında günler sonra başarısız olabilir.

ESP32'nin 520 KB SRAM'i bu durumu değiştirir. TLS'i, bir web sunucusunu, daha büyük bir MQTT buffer'ını ve bir JSON belgesini aynı anda bolca pay bırakarak çalıştırabilirsiniz; pek çok modül daha da fazlası için PSRAM ekler.

Pratik kural: ESP8266 projeniz TLS ve basit bir sensör döngüsünün ötesinde herhangi bir şey gerektiriyorsa bellek ayarı için zaman ayırın veya ESP32'ye geçin.

TLS Yeteneği

Production MQTT, kimlik bilgileriyle birlikte 8883 portunda TLS kullanmalıdır. Her iki çip de bunu yapabilir, ancak deneyim farklıdır:

  1. Sertifika doğrulama. ESP32 WiFiClientSecure mbedTLS kullanır ve setCACert() ile bir PEM kök sertifikası kabul eder. ESP8266, sertifika tarihlerini de doğrulayan BearSSL'i kullanır; bu yüzden bağlanmadan önce saati NTP ile senkronize etmeniz gerekir.
  2. El sıkışma hızı. ESP32'nin donanımsal hızlandırması ve daha hızlı çekirdekleri el sıkışmalarını çabucak tamamlar. ESP8266 özellikle 80 MHz'te belirgin şekilde daha yavaştır; bu da her uyanışta yeniden bağlanan pilli cihazlar için önemlidir.
  3. Eş zamanlı oturumlar. Bir ESP32, örneğin MQTT ile birlikte bir HTTPS OTA indirmesi gibi birden fazla TLS bağlantısını rahatça tutabilir. ESP8266'da bu risklidir.
  4. Buffer ayarı. ESP8266, TLS buffer'larını maximum fragment length müzakeresiyle yalnızca sunucu bunu destekliyorsa küçültebilir; bu yüzden buna güvenemezsiniz.

ESP8266 MQTT eğitimimiz tam BearSSL kurulumunu, ESP32 MQTT eğitimimiz ise ESP32'deki karşılığını gösterir.

Çevre Birimleri ve Sensörler

ESP8266'nın tek 10 bit ADC'si en yaygın kısıtlamasıdır. Birden fazla analog girişe ihtiyacınız varsa I2C üzerinden ADS1115 gibi harici bir ADC eklersiniz. GPIO'larının birkaçının açılış sırasında özel işlevleri de vardır, bu yüzden kullanılabilir pin sayısı göründüğünden azdır.

ESP32 çok sayıda ADC kanalı, kapasitif dokunmatik girişler, mikrofonlar ve ses için I2S, araç ve endüstriyel veri yolları için bir CAN denetleyicisi (TWAI) ve Bluetooth Low Energy sunar. BLE özellikle MQTT gateway'leri için kullanışlıdır: ESP32, BLE sensörlerinden okumaları toplayıp Wi-Fi üzerinden bir broker'a yayınlayabilir.

Yazılım ve Kütüphane Desteği

Her iki çip de Arduino ekosisteminde iyi desteklenir, ancak aktif geliştirme ESP32 tarafında yaşanır.

Kütüphane ESP8266 ESP32
PubSubClient Evet Evet
ArduinoMqttClient Evet Evet
AsyncMqttClient Evet, ESPAsyncTCP ile Evet, AsyncTCP ile
ESP-IDF yerel MQTT client'ı (esp-mqtt) Hayır Evet, MQTT 5 desteğiyle
FreeRTOS görevleri Hayır Evet

ESP32'deki FreeRTOS temeli MQTT firmware'i için önemlidir. Ağ client'ını bir görevde, sensör örneklemeyi başka bir görevde çalıştırabilirsiniz; böylece yavaş bir broker yeniden bağlanması kontrol döngünüzü durdurmaz. ESP8266'da her şey tek bir döngüyü paylaşır ve uzun engelleyici çağrılar watchdog'u tetikler. Engellemeyen tasarımlar hakkında daha fazlası için ESP32'de async MQTT client yazısını okuyun.

Güç Tüketimi

Her iki çip de enerjilerinin çoğunu telsizde harcar. Uyanan, yayınlayan ve uyuyan pilli sensörlerde baskın faktörler, CPU'nun boşta akımı değil, ne kadar hızlı bağlanabildiğiniz ve telsizin ne kadar süre açık kaldığıdır. ESP32'nin daha hızlı TLS el sıkışması, daha yüksek aktif akımını dengeleyebilir; ultra düşük güçlü yardımcı işlemcisi ise ana çekirdekler uyurken bir sensörü izleyebilir. ESP8266, güvenilir bir ağ içinde düz MQTT kullanan basit uyan-yayınla-uyu düğümleri için makul bir seçim olmaya devam eder.

Maliyet ve Bulunabilirlik

ESP8266 genellikle daha ucuz modüldür ve her iki çip için geliştirme kartları ucuz ve yaygın olarak bulunur. Çoğu projede fiyat farkı; sensör, kutu, güç kaynağı ve geliştirme zamanınızla karşılaştırıldığında küçüktür. Bir ESP32'ye biraz daha fazla harcamak çoğu zaman saatlerce bellek ayarından kurtarır. Fiyatlar sık değişir, bu yüzden eski forum rakamlarına güvenmek yerine güvenilir tedarikçilerin güncel tekliflerini karşılaştırın.

Daha Yeni ESP32 Varyantları Ne Olacak?

Espressif'in ailesi klasik ESP32'nin çok ötesine geçti:

  • ESP32-C3: tek çekirdekli RISC-V, Wi-Fi ve BLE, düşük maliyet. Pek çok ESP8266 tasarımının doğal modern halefidir ve TLS'i rahat tutar.
  • ESP32-S3: vektör komutlu çift çekirdek, USB OTG ve çoğu zaman PSRAM; kamera, ses ve uç işleme (edge processing) iş yükleri için iyidir.
  • ESP32-C6: Wi-Fi 6 ile Thread ve Zigbee için bir 802.15.4 telsizi ekler; gateway'ler için kullanışlıdır.

ESP8266'ya yalnızca maliyet nedeniyle ilgi duyuyorsanız önce ESP32-C3'e bakın.

Karar Kontrol Listesi

Bu soruları sırayla yanıtlayın. İlk "evet" kararı verir:

  1. Bluetooth, CAN, I2S, dokunmatik veya birden fazla analog girişe ihtiyacınız var mı? ESP32'yi seçin.
  2. Cihaz TLS kullanacak ve bir web sunucusu, OTA veya büyük JSON payload'ları çalıştıracak mı? ESP32'yi seçin.
  3. Cihazda yerel işleme, birden fazla görev veya MQTT 5'e ihtiyacınız var mı? ESP32'yi (ESP-IDF) seçin.
  4. Mevcut ESP8266 kartlarıyla, güvenilir bir ağda düz MQTT kullanan tek bir sensör veya röle mi? ESP8266 yeterlidir.
  5. Hâlâ kararsız mısınız? Düşük maliyetli, modern ve TLS dostu bir seçenek için ESP32-C3'ü seçin.

Broker Tarafı Aynıdır

Hangi çipi seçerseniz seçin broker umursamaz. Her ikisi de aynı topic'lere aynı MQTT 3.1.1 paketleriyle bağlanır. Teste, ConnectMQ'nun ücretsiz herkese açık MQTT broker'ı olan broker.connectmq.com üzerinde benzersiz bir client ID ve topic önekiyle başlayın:

mosquitto_sub -h broker.connectmq.com -p 1883 -i compare-91c4 -t "connectmq/demo/compare-91c4/#" -v

Ardından aynı topic düzenini bir ESP32'ye ve bir ESP8266'ya yükleyin ve kendi ortamınızda yeniden bağlanma sürelerini ve boş heap'i karşılaştırın. Bu küçük deney size herhangi bir veri sayfasından daha fazlasını söyler. Seçiminizi yaptıktan sonra ESP32 IoT eğitimi iyi bir sonraki adımdır; her iki kartta da başlangıç için kütüphane PubSubClient'tır.

Her İki Çipi de ConnectMQ'ya Bağlayın

Cihazınız tezgâhtan ayrıldığında ona tam yönetilen bir MQTT servisinde özel kimlik bilgileri verin. ConnectMQ; TCP 1883, TLS 8883 ve WebSocket üzerinde MQTT 3.1.1 ve 5.0 çalıştırır ve filonuz ister ESP32, ister ESP8266, ister her ikisi olsun canlı topic'leri, bağlı cihazları ve eşik uyarılarını gösteren bir portal sunar. Altyapı seçimi hakkında arka plan bilgisi için bulut MQTT broker seçenekleri rehberimize bakın. app.connectmq.com adresinde ücretsiz bir Serverless broker oluşturun, kredi kartı gerekmez.

Sık Sorulan Sorular

ESP8266 artık eskidi mi?

Eskimedi, ancak artık yeni tasarımların çoğu için en iyi seçim değil. Basit düğümler için hâlâ uygundur; ESP32-C3 ise aynı düşük maliyetli nişi daha fazla bellek ve daha iyi TLS ile karşılar.

ESP8266, TLS üzerinden MQTT'yi kaldırabilir mi?

Evet, BearSSL ve dikkatli bellek yönetimiyle. Saati senkronize edin, MQTT buffer'ını küçük tutun ve heap parçalanmasından kaçının; basit sensörler için güvenilir şekilde çalışır.

ESP32 MQTT 5'i destekler mi?

ESP-IDF MQTT client'ı MQTT 5'i destekler. Popüler Arduino kütüphaneleri PubSubClient ve ArduinoMqttClient ise tüm büyük broker'ların hâlâ desteklediği MQTT 3.1.1'i kullanır.

ESP32 ve ESP8266 cihazları aynı broker'ı paylaşabilir mi?

Evet. MQTT donanımdan bağımsızdır; bu yüzden her cihaz benzersiz bir client ID kullandığı sürece iki çip de aynı broker'daki aynı topic'lere 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.