NodeMCU ESP8266 Kullanımı ve Fonksiyonları : Bölüm 2

NodeMCU ESP8266 Kullanımı ve Fonksiyonları

Rehberimizin bir önceki bölümünde NodeMCU ESP8266 kartımıza nasıl kod yükleyeceğimizi, firmware flashlama adımlarını, yerel Wi-Fi sinyallerini tarama testlerini ve temel düzeyde yerel bir web sunucusu (web server) oluşturmayı incelemiştik. Eğitim serimizin bu ikinci bölümünde ise, uzaktan kontrol sağlayan interaktif ve duyarlı (responsive) bir web sayfası tasarlayacak ve NodeMCU kartımızı çift kanallı bir röle modülüne bağlayarak internet üzerinden lambaları veya ev aletlerini uzaktan kontrol edilebilir hale getireceğiz.

NodeMCU ESP8266 Kullanımı ve Fonksiyonları
NodeMCU ESP8266 Kullanımı ve Fonksiyonları

Bu Bölümün Amaç ve Hedefleri

İlk bölümde sırasıyla;

(+) ESP8266 Donanım Kurulumu
(+) İlk Çalışma ve RF Haberleşme Testi
(+) Firmware Flashlama ve İşletim Sistemi Güncelleme
(+) Basit HTTP Web Server Yayını

konularını detaylandırarak altyapımızı hazırlamıştık. Bu bölümde ise daha ileri seviye tekniklere odaklanacağız:

(+) ESP8266 ile Akıllı Ev / Oda Entegrasyonu (Röle Sürüşü)
(+) Sunucu Ağ Hızı ve Derin Uyku (Deep Sleep) Performans Testleri
(+) Taşınabilir Projeler İçin Batarya ve Güç Yönetimi Seçenekleri
(+) Hızlı Ağ Bağlantıları İçin Statik IP Konfigürasyonu
(+) Over-the-Air (OTA) Havadan Kablosuz Program Güncelleme ve Güvenlik

Arduino IDE Kart Yapılandırması

ESP8266 çekirdek kütüphanelerini derleyebilmek için Araçlar > Kart menüsünden NodeMCU 1.0 (ESP-12E Module) seçeneğinin aktif olduğundan emin olun. Gerekirse kart yöneticisine http://arduino.esp8266.com/stable/package_esp8266com_index.json bağlantısını eklemeyi unutmayın.

NodeMCU ESP8266 IDE Kart Ekleme
Arduino IDE Boards Manager Kurulumu
NodeMCU 1.0 Kart Seçimi

Fiziksel Devre Bağlantı Şeması

NodeMCU kartımızın GND ve VIN (5V) pinlerini çift kanallı optokuplör korumalı röle modülünün besleme girişlerine bağlıyoruz. Lojik kontrol için kullandığımız D1 ve D2 pinleri, ESP8266 yazılım çekirdeğinde sırasıyla GPIO 5 (D1) ve GPIO 4 (D2) çıkışlarına karşılık gelmektedir.

NodeMCU Çiftli Röle Bağlantı Şeması
NodeMCU ESP8266 ve röle modülü donanım bağlantısı
Ekmek Tahtası Üzerinde NodeMCU Röle Bağlantısı

Akıllı Ev Röle Kontrol Kod Bloğu

Aşağıdaki program kodu, istemcilerin tarayıcılarına dinamik, CSS ile zenginleştirilmiş mobil uyumlu (responsive) bir buton arayüzü sunar. Kod içerisindeki ssid ve password değişkenlerini kendi Wi-Fi ağınıza göre güncellemeyi unutmayın:

Seri Monitör Çıktısının İncelenmesi

Kod yüklendikten ve Wi-Fi bağlantısı kurulduktan sonra, Seri Monitör ekranından ESP8266’ya atanan IP adresini (örn: 192.168.1.184) görebilir ve tarayıcınızdan bu adrese giderek röle tetikleme isteklerinin HTTP durumlarını loglayabilirsiniz:

Seri Monitör HTTP Logları
İstemcilerin HTTP GET isteklerinin loglanması

Yazılımın Karta Yüklenmesi

Kablolu seri bağlantıyı micro USB kablosuyla bilgisayara yapın. Arduino IDE üzerinden doğru kart modelini ve Port numarasını seçtikten sonra “Yükle” butonuna tıklayın. Yükleme tamamlandığında kart otomatik olarak kendini yeniden başlatacaktır; eğer bağlantı gecikirse kart üzerindeki yerleşik RST butonuna bir kez basıp bırakabilirsiniz.

Uygulamanın Çalışma Videosu

Gelişmiş Performans ve Kararlılık Testleri

1. Web Sunucusu Ağ Hız Analizi

ESP8266’nın web sunucusu olarak veri taşıma kapasitesini ve yük altındaki tepki sürelerini ölçmek amacıyla laboratuvar ortamında bir hız testi gerçekleştirdik. Testler esnasında yönlendirici ile ESP8266 arasındaki fiziksel mesafe tam 1 metre olarak ayarlanmıştır.

Ağ eş zamanlılığı analizinde thread (kanal) kavramı kullanılmıştır. Tek kanallı (single thread) modda sunucudan tek bir veri paketi çekilirken, dört kanallı (four threads) modda paralel soket istekleri (multiple socket download) simüle edilmiştir. Laptop üzerinden ESP8266’ya gönderilen boş veri paketleriyle yapılan yükleme (upload) ve indirme (download) hız grafiğini aşağıda inceleyebilirsiniz. Test kodlarına ESP8266 resmi kütüphanesindeki örnek test araçlarından kolayca ulaşabilirsiniz:

ESP8266 Wi-Fi Ağ Hız Testi Grafik Çıktısı
Single vs Multiple Socket veri aktarım hızları (KB/s)

2. Derin Uyku (Deep Sleep) ve Başlangıç Süresi Optimizasyonu

Pilli veya düşük güçlü IoT projelerinde, enerji tasarrufu sağlamak için mikrokontrolcünün derin uyku (Deep Sleep) moduna girmesi establishes edilir. Standart şartlar altında ESP8266’nın uyandıktan sonra normal önyükleme (boot) süresi V1.6 ve V1.7 çekirdek sürümlerinde yaklaşık 155 milisaniyedir. Yapılan optimizasyon çalışmalarıyla, önyükleme bölümündeki (boot sector) gereksiz kontrol blokları ve uzun bekleme rutinleri kaldırıldığında bu süre 130 ila 140 milisaniye bandına kadar düşürülmüştür. Bu kısalma, kartın uyanık kaldığı süreyi kısaltarak pillerin ömrünü kayda değer oranda uzatır.

Önyükleme Bölümlü (Standard Boot) Sinyal Grafiği

Standart Boot Sinyali Analizi

Önyükleme Bölümsüz (Optimized Boot) Hızlı Sinyal Grafiği

Optimize Edilmiş Boot Sinyali Analizi

Uzun Ömürlü IoT Projeleri İçin Batarya Seçimi

Taşınabilir bir ESP8266 projesi tasarlamadan önce kartın elektriksel limitlerini doğru analiz etmeliyiz. ESP8266’nın lojik çalışma gerilim aralığı en düşük 2.5V, en yüksek 3.6V‘tur. Önerilen kararlı besleme gerilimi ise 3.3V‘tur. Kart, Wi-Fi üzerinden veri iletirken anlık olarak 170mA tepe akımı çekebilmektedir. Bu nedenle seçeceğimiz pil hücresinin anlık deşarj oranının (C değeri) en az 170mA akımı kesintisiz verebilecek güçte olması gerekir.

Seçenek A: Şarj Edilemeyen Piller

1. Karbon-Çinko Piller: Günlük hayatta kumandalarda sıkça karşılaştığımız, 1.5V gerilime sahip pillerdir. AA ve AAA tiplerinde iki pil seri bağlanarak 3.0V elde edilebilir. Ancak iç dirençleri yüksek olduğu için 170mA’lik akım talebinde voltajları hızla çökebilir; uzun ömürlü IoT projeleri için kesinlikle tavsiye edilmezler.
2. Lityum Piller (Düğme Tipi): CR2032 gibi 3V çıkış veren lityum piller düşük güç tüketimli projeler için uygundur fakat akım taşıma kapasiteleri çok düşüktür.
3. Alkalin Piller: 1.5V hücre gerilimine sahip olan bu piller, yüksek enerji yoğunluğu sunar. İki adet seri alkalin pil (3.0V) ile ESP8266, pil voltajları 1.25V seviyesine düşene kadar kararlı çalışabilir. Ancak bu durum pil kapasitesinin sadece %25’inin kullanılabileceği, kalan %75 enerjinin ziyan olacağı anlamına gelir.

Seçenek B: Şarj Edilebilir Piller (Önerilen)

1. Lityum İyon (Li-Ion) / Lityum Polimer (Li-Po) Piller: 3.7V nominal gerilime sahip olan bu hücreler (özellikle 18650 veya ince Li-Po paketleri), IoT projeleri için en verimli çözümdür. 3.7V gerilimi, kart üzerinde yer alan 3.3V LDO regülatörü (örn: AMS1117-3.3) üzerinden düşürülerek kullanıldığında pilin toplam kapasitesinin %70’inden fazlasından tam verimle faydalanılır.
2. Ni-MH / Ni-Cd Piller: 1.2V nominal gerilimli bu şarjlı pillerden 3 adet seri bağlanarak 3.6V elde edilebilir. Ağır yük altında kararlıdırlar ancak Li-Ion hücrelere göre daha ağırdırlar.

Batarya Deşarj ve Verimlilik Kıyaslama Grafiği
Farklı pil kimyalarının deşarj kararlılığı

Hızlı Ağ Bağlantıları ve Enerji Tasarrufu İçin Statik IP

ESP8266, derin uyku (Deep Sleep) modundan her uyandığında, yerel ağa bağlanmak ve modemden dinamik bir IP adresi alabilmek (DHCP el sıkışması) için yaklaşık 5 ila 6 saniye harcar. Bu bekleme süresince kablosuz ağ kartı sürekli tam güçte çalışarak pilleri hızla tüketir. Ancak yazılımsal olarak Statik IP (Sabit IP) yapılandırması kullandığımızda, DHCP aşaması tamamen atlanır ve bağlantı süresi 2 saniyenin altına düşer. Bu optimizasyon, pilli IoT düğümlerinde %70’e varan olağanüstü bir enerji tasarrufu sağlar. Statik IP için aşağıdaki optimize edilmiş kod şablonunu kullanabilirsiniz:

Over-the-Air (OTA) ile Havadan Kablosuz Programlama

Geliştirdiğiniz IoT cihazını evinizin tavanına, duvar içine veya dış mekan kutularına fiziksel olarak yerleştirdikten sonra, koda yeni bir özellik eklemek için her defasında kartı söküp bilgisayara bağlamak çok zahmetlidir. OTA (Over-the-Air) teknolojisi, ESP8266’ya yerel Wi-Fi ağı üzerinden kablosuz olarak yeni yazılımlar yüklemenizi sağlar.

Çok Kritik Siber Güvenlik Uyarısı: OTA özelliği aktif edildiğinde, yerel kablosuz ağınıza sızan herhangi bir saldırgan, kartınıza kötü amaçlı yazılımlar yükleyerek tüm akıllı ev sisteminizi sabote edebilir. Bu nedenle, OTA entegrasyonu yaparken mutlaka şifreli kimlik doğrulama portu (password authentication) kullanmalı, portları dış dünyaya kapatmalı ve kablosuz ağ güvenliğinizi en üst düzeyde tutmalısınız.

Kablosuz OTA Yazılım Güncellemesi Arayüzü

Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.