ESP8266 (NodeMCU veya ESP-01), dahili Wi-Fi özelliği sayesinde IoT dünyasının vazgeçilmezi haline geldi. Ancak bu güçlü kablosuz bağlantının çok ciddi bir bedeli var: Yüksek Güç Tüketimi. Standart bir ESP8266, Wi-Fi üzerinden veri gönderirken anlık olarak 80 mA ile 170 mA arasında akım çeker. Bu da projenizi standart bir pille çalıştırdığınızda, pilin birkaç saat içinde tüp bebek gibi sönmesi anlamına gelir.
Peki, sadece 10 dakikada bir sıcaklık verisi gönderip geri kalan zamanda hiçbir şey yapmayan bir sensör istasyonunu pille aylarca nasıl çalıştırabiliriz? Çözüm: ESP8266 Deep Sleep (Derin Uyku) Modu.
Deep Sleep moduna geçtiğinde ESP8266; işlemci çekirdeğini, Wi-Fi modülünü, sistem saatini ve neredeyse tüm çevre birimlerini tamamen kapatır. Kart üzerinde sadece zamanı sayan dahili RTC (Real Time Clock - Gerçek Zaman Saati) açık kalır.
Bu modda ESP8266’nın akım tüketimi yaklaşık 20 µA (Mikroamper) seviyesine düşer. Yani cihaz açık kalma süresine kıyasla binlerce kat daha az enerji harcar.
⚠️ En Kritik Adım: Donanımsal Köprü (D0'dan RST'ye)
Arduino'dan farklı olarak, ESP8266 derin uykuya daldığında kendi kendini yazılımsal olarak uyandıramaz. Uyku süresi dolduğunda, dahili RTC zamanlayıcısı kartın üzerindeki GPIO16 pinine lojik LOW (0V) sinyali gönderir. Kartın uyanabilmesi için bu sinyalin fiziksel olarak RST (Reset) pinini tetiklemesi gerekir.
ÖNEMLİ UYARI: Kodu ESP8266'ya yüklemeden önce bu kabloyu bağlamayın. D0-RST köprüsü takılıyken bilgisayarınız karta yeni kod yükleyemez ve hata verir. Önce kodu yükleyin, ardından kabloyu takın!

Aşağıdaki kod, ESP8266'nın uyanıp Wi-Fi'a bağlanmasını, hayali bir işlem (veri gönderme) yapmasını ve ardından 30 saniyelik derin uykuya dalmasını simüle eder.
#include <ESP8266WiFi.h>
const char* ssid = "WIFI_ADINIZ";
const char* password = "WIFI_SIFRENIZ";
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println("Sistem UYANDI!");
// Wi-Fi Bağlantısını Başlat
WiFi.begin(ssid, password);
Serial.print("Wi-Fi baglantisi kuruluyor...");
int deneme = 0;
while (WiFi.status() != WL_CONNECTED && deneme < 20) {
delay(500);
Serial.print(".");
deneme++;
}
if(WiFi.status() == WL_CONNECTED) {
Serial.println("\nWi-Fi'a baglandi!");
Serial.print("IP Adresi: ");
Serial.println(WiFi.localIP());
// --- BURADA SENSÖR VERİSİNİ OKUYUP İNTERNETE GÖNDEREBİLİRSİNİZ ---
Serial.println("Veriler basariyla buluta gonderildi.");
// ---------------------------------------------------------------
} else {
Serial.println("\nWi-Fi baglantisi basarisiz oldu, uykuya geciliyor.");
}
// Uykudan önce Wi-Fi modülünü temiz bir şekilde kapatıyoruz
WiFi.disconnect(true);
delay(1);
// Derin Uyku Zamanı (Mikrosaniye cinsinden verilir)
// Örnek: 30 saniye uyku = 30 * 1000 * 1000
// Eğer sonsuz uyku isterseniz parantez içine sadece 0 yazabilirsiniz (Sadece butonla uyanır).
Serial.println("ESP8266 simdi 30 saniyelik derin uykuya daliyor...");
ESP.deepSleep(30e6);
}
void loop() {
// Deep sleep modunda loop fonksiyonu ASLA CALISMAZ.
// Cihaz her uyandığında setup() fonksiyonu en baştan tetiklenir.
}
Gerçek anlamda aylarca çalışacak bir proje yapmak istiyorsanız, geliştirme aşamasından sonra NodeMCU kartını bırakıp ESP-12E / 12F bare çipini (üzerinde USB dönüştürücü olmayan çıplak modül) doğrudan kullanmalısınız. Kaliteli bir LiFePO4 pil veya regülatörsüz direkt besleme ile projeniz tek bir şarjla 6 aydan fazla sorunsuz çalışacaktır.
ESP8266 ile taşınabilir bir tarımsal sensör, akıllı hava istasyonu veya pilli buton yapıyorsanız, Deep Sleep hayat kurtarır. Unutmayın: Önce kodu yükle, sonra D0-RST köprüsünü kur ve ESP.deepSleep() ile enerjiyi koru!
ESP8266 projelerinizde derin uyku modunu kullanırken karşılaştığınız donanımsal veya yazılımsal sorunları yorumlarda bizimle paylaşın, birlikte tartışalım!
Henüz yorum yapılmamış. İlk yorumu siz yapın!