Ana sayfa→Donanım & Bileşenler
Donanım & Bileşenler

ESP32’ler Yönlendirici Olmadan Birbirleriyle Konuşabilir ve Bu İnşa Edebileceklerinizi Değiştiriyor.

Yazılım dünyasına giren birinin donanıma yöneldiğinde her gün yeni bir şey ortaya çıkması, benim için de geçerli. Neredeyse bir decade (üniversite…

User Avatar
Alper DemirEditör
5 dk okuma

Yazılım dünyasına giren birinin donanıma yöneldiğinde her gün yeni bir şey ortaya çıkması, benim için de geçerli. Neredeyse bir decade (üniversite yıllarını da dahil ederek) süredir yazılım geliştirme alanında çalışıyorum. Son bir aydır ESP32’ler ve Raspberry Pi gibi donanımlarla küçük deneyler yapıyorum.

ESP32 ile yaptığım çoğu projede her zaman aynı başlangıç noktası vardı: Wi-Fi. Bu ucuz kartın Wi-Fisi olduğu için her şeyi yalnızca bunun etrafında kuruyorum ve bununla iletişim kurmanın başka bir yolu olabileceğini hiç düşünmemiştim. Her şey ESP-NOW ile karşılaştığımda değişti. Tek ihtiyacım olan başka bir karttı.

İkinci bir kart eklediğinde denklem tersine döner

Bir kart üzerindeki bir düğme, diğerinde bir halkayı yakıyor

Son üç küçük ESP32 projem bir ev sunucusu sağlık göstergesi, kart üzerinde gerçek bir web sitesi ve sunucum için bir gözetmen (watchdog) idi. Bunların tümü bir Wi-Fi ağına bağlanıp cihazları bağlamak için bir yönlendiriciye (router) güvenir. Ancak bu projelerin tümünde ortak tek bir şey vardı: yalnızca bir kart dahil.

SayarBilgi sitesini Google’da tercih edilen kaynak olarak seç

Denklem, senaryoya başka bir kart eklediğinde tersine döner. Espressif’in ESP-NOW özelliği tam olarak bunun için tasarlandı: birbirleriyle konuşan iki veya daha fazla kart. ESP-NOW, MAC tabanlı P2P kullanarak birden fazla kart arasında doğrudan iletişimi mümkün kılar. Mikrodenetleyiciler arasında hızlı, doğrudan veri aktarımı için geleneksel TCP/IP üst yükleme (overhead) yükünü atlar.

Two ESP32 boards on a desk with the LED ring dark
Sender and receiver serial monitors showing presses 1 to 7 sent and received

Net olmak gerekirse, bu özellik Wi-Fisi denlemden çıkarmaz; kartlar yine de Wi-Fi radyolarını kullanır, yalnızca yönlendirici veya ağ bağlantısı (association) olmadan. Bu benim için büyüleyiciydi, bu yüzden bir teoriyi pratik bir örnekle anlamaktan daha iyi ne olabilirdi? Hemen çekmeceleri açıp bir deney kurabilmem için elimden gelen her şeyi topladım.

Elimde bir sürü elektronik donanım vardı, ancak konsepti kanıtlamak için hepsine ihtiyacım yoktu. Bu yüzden iki ESP32 ve bir LED halka aldım. Teoriyi doğrulamak için iki ESP32’nin yeterli olmasına rağmen, LED ekleme konuyu fiziksel olarak kanıtlıyor.

Kurulum basitti: bir kart, bir tetikleyici olay oluşturmak için üzerindeki BOOT düğmesini kullanırken, alıcı olarak çalışan diğer kart paketi aldı ve LED’i yakarak teslimatı gösterdi. Kodda Wi-Fi ağına hiç bağlanmadım ve WiFi.disconnect() fonksiyonuyla bunu sağladım. Her iki kart da birbirleriyle MAC adresleri üzerinden iletişim kurdu.

50 düğme basışını gönderdim ve her basışı gözlemledim; alıcı bunların tamamını, yani 50 tanesini kaydetti. Bu, ilk kolay başarıydı ve iki ESP32’nin bir yönlendiriciye dayanmadan birbirleriyle iletişim kurabileceğini kanıtladı.

ESP32 sensörüm, yönlendirici olmadan iki duvarı geçti

Ekran masaüstümde kaldı, okumalar gelmeye devam etti

          İlk deney, konsepti kanıtlamaktı ve orada durmalıydım. Ama beni siz bilirsiniz, işi orada bırakmaya hazır değildim. Bu, sadece ESP-NOW özelliğinin genel bir gösterimiydi. Gerçek bir kullanım durumum olacak bir şeyi test etmek istedim. İşte o zaman, gelecek projelerimin bir bölümünü yeniden üretebilecek küçük bir proje kurmaya karar verdim.

          Biraz düşündükten sonra bir sensör ve bir ekran aldım, çünkü en faydalı sensör projeleri genellikle farklı bir iletişim türü içerir. Bir cihaz sürekli veri toplar, diğerleri ise bunu gösterir veya kullanır. Böylece, iki kart kullanarak sensör verilerini toplayıp ekranda gösterebilseydim, bu gelecek deneylerim için faydalı olabilirdi.

          İşin kurulumu, iki aynı kartla, bir AHT10 sensörüyle ve küçük bir 1,3 inç OLED ekrânla başladı. Sensörü “gönderici” adını verdiğim bir ESP32’ye, ekrânı ise “alıcı” dediğim başka bir karta bağladım. Fikir basitti: gönderici sensörden sıcaklık ve nem değerlerini okuyacak, alıcı ise bunları OLED ekrânda gösterecekti.

          Kurdum ve beklendiği gibi çalıştı. Yine, kartların hiçbir zaman bir Wi-Fi ağına bağlanmamasını ve yalnızca ESP-NOW üzerinden iletişim kurmasını sağladım. Bu kez elimde bir ekrân olduğundan, alınan ve kaybedilen paket sayısını ekrânın üzerinde saydım. Gönderici her pakete bir numara verdiğinden, alıcı eksik bir paket olduğunu anlayabiliyordu.

          Kurulumu üç farklı senaryoda test ettim: her iki kart da masamda, arasında bir duvar ve arasında iki duvar. İlginç olan şu ki, üç senaryonun hepsinde hiçbir paket kaybedilmedi. Her denemeyi zamanlamadığım için belirli bir güvenilirlik oranından söz edemem.

          Sonuçların içinden genel bir tabloya bakmak gerekirse, her iki denemede de kablosuz bağlantıda bir sorun çıkmadı. İlginçtir ki, ikinci deneyi kurarken bir sapma yaşadım, ancak bu radyolardan değil, donanımdan kaynaklandı. Sadece bir demo görselleştirmesi olduğu için iğneleri lehimlemeden sensör deliklerinden geçirdim. Bu ilk denemelerde kart AHT10’u hiç algılamadı; çalışır hale getirmek için onları lehimlemek zorunda kaldım.

          Birinin ihtiyaç duymadığı sürece yönlendirici olmadan çalışır

          Kanala eşitsizlik zorlamak neredeyse paketlerimin yarısını kaybettirdi

                  Sınamak istediğim şey, bir projenin veri dışarıdaki bir sunucuya göndermek için internet erişimine ya da en azından LAN erişimine ihtiyaç duyduğunda ne oluyordu. ESP-NOW bağlantısı yönlidarici olmadan sorunsuz çalışıyor, ancak kartlardan biri yönlidaricime katıldığında ne olurdu?

                  Bunu test etmek için başka bir deney daha kurdum. İlk adımda, alıcı kartın yönlendiriciye bağlanmasını sağladım. Yönlendiriciyle aynı kanalda, benim durumumda 1 numaralı kanalda Wi-Fi’ye bağlandı. Bağlantı iyiydi; tüm paketleri kayipsiz aldım. Bu da işe yarıyordu çünkü gönderici kartın varsayılan kanalı da tesadüfen 1 numaraydı.

                  İnci adımda ise gönderici kartı farklı bir kanala zorladım ve paketlerin yaklaşık yarısını kaybetmeye başladı. Ardından gönderici kartı yönlendiricinin kanalı geri aldım ve iletişim normale döndü.

                  Bu, net bir şeyi ortaya koyuyordu: Yönlendiricimdeki bir kart yönlendiricinin kanalında oturur ve diğer kartın aynı kanalda olması gerekir, aksi halde paketler kaybolur. Yoğun Wi-Fi trafiğini veya kanal değiştiren bir yönlendiriciyi test etmedim, ancak nokta ispatlamak için buna gerek yoktu. Hala test edilmemiş birkaç şey daha vardı; örneğin şifreleme ve sensörü dışarıda çalıştırma. İki kartlı kurulumum P2P iletişimi gösterdi, ancak bunun çoktan bire bir sensör ağı içinde nasıl davranacağını gösteremedi.

                  Şimdi, bu kurulumun nerede yetersiz kaldığına gelelim. Bir web arayüzü, bulut bağlantısı veya LAN’ımdaki Home Assistant hizmetlerine ihtiyacım varsa, normal Wi-Fi daha iyi bir seçenek olur. ESP-NOW, paket sınırı göz önüne alındığında küçük olayları veya okumaları alışveriş etmem gerektiğinde en faydalı olduğu yerdir. Standart sürüm Espressif’in dokümanlarına göre en fazla 250 baytlık bir veri yükünü, v2 ise en fazla 1.470 baytlık bir veri yükünü destekler.

                  Bu durum bir sonraki ESP32 projemi nereye götürüyor

                  Her iki kurulumdan sonra da bir şey net: İki kart, hiçbir kimlik bilgisi, hiçbir yönlendirici ve hiçbir aracı olmadan birbirleriyle konuşabilir. Evimdeki iki duvarın arasından bile çalıştı. Yani evet, ESP-NOW faydalı. Bir sensör artık yönlendiriciyle benim aramda oturmuyor ve iki kart doğrudan bir bağlantı alıyor. Ancak LAN veya internet erişimi gerekiyorsa, bu tamamen farklı bir hikaye. Örneğin, ikinci deneyimi Home Assistant’ıma genişletmek isteseydim, bu LAN erişimi gerektirirdi; alıcı kart o zaman yönlendiriciye bağlanması gerekir ve ikisinin de aynı Wi-Fi kanalında olması gerekir. Şimdilik, gerçek kullanım durumlarında test etmeyi ve nasıl davrandığını görmeyi bekliyorum.

                  Marka
                  Bağlantı Özellikleri

                  Wi-Fi, Bluetooth ve CP2102 USB çipi içeren, ayrıca ESP-NOW’ı kutudan çıkarır çıkarmaz destekleyen 30 pimli bir ESP32 geliştirme kartı.

                  İlginizi Çekebilir: Wi-Fi 8 Sonunda Gerçek Sorunları Çözüyor: Wi-Fi 7’yi Atlayışımın Sebebi Bu →
                  Kaynak: XDA Developers ↗Kaynak yazarı: Shekhar Vaidya
                  💻 SayarBilgi Topluluğu

                  Bu Gelişmeyi Toplulukta Değerlendirin

                  Haber hakkındaki düşüncelerinizi, donanım deneyimlerinizi ve teknik sorularınızı topluluk üyeleriyle anlık olarak tartışın.

                  💻 Donanım & Sistem Tavsiyesi Odası →
                  💬 Topluluk Masası & Tartışma

                  Bu gelişme hakkında düşüncelerinizi, donanım deneyimlerinizi veya sorularınızı Topluluk Forumumuzda paylaşın.

                  Foruma Katıl & Yanıtla ➔
                  Forumda sor / tartış
                  TOPLULUĞUN SESİ

                  Söz sizde.

                  1 yorum

                  Deneyiminizi, sorularınızı ve katkılarınızı paylaşın. E-posta adresiniz yayımlanmaz.

                  Sohbete katıl

                  E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

                  Yorumunuz yayımlanmadan önce onay bekleyebilir.

                  BİR SONRAKİ OKUMA

                  Merak etmeye devam

                  Tümünü gör ↗

                  Neyi merak ediyorsun?

                  En az 3 karakter yazın.

                  Keşfet