Bölüm 8: Pille Çalışan Projelerin Sırrı: "Deep Sleep" (Derin Uyku) Modu
ESP32'nin çok güç tükettiğini mi duydunuz? Haklı olabilirsiniz, sürekli Wi-Fi'a bağlı kalmak pili hızla bitirir. Peki ya cihazınızı bir pille aylarca çalıştırmak isterseniz? Bu final bölümünde, ESP32'nin hayat kurtaran "Deep Sleep" (Derin Uyku) modunu öğrenecek ve pille çalışan taşınabilir IoT projelerinin sırrını çözeceğiz.
Yazı dizimiz boyunca harika işler başardık. ESP32'yi internete bağladık, sensör verilerini okuduk ve bunları dünyanın öbür ucundaki ThingSpeak bulutuna gönderdik. Ancak masada USB kablosuyla bilgisayara bağlıyken her şey çok kolaydır.
Eğer projenizi bir tarlaya, ormana veya elektrik prizi olmayan bir balkona yerleştirmek isterseniz ona bir pil takmanız gerekir. İşte sorun burada başlar: ESP32'nin çift çekirdekli işlemcisi ve Wi-Fi anteni gerçek bir enerji canavarıdır. Standart bir taşınabilir şarj cihazı (powerbank) veya Lityum pil, sürekli çalışan bir ESP32'yi en fazla birkaç gün hayatta tutabilir.
Peki piyasadaki pilli akıllı sensörler nasıl aylarca çalışıyor? Cevap: Derin Uyku (Deep Sleep).
Derin Uyku (Deep Sleep) Nedir?
Derin uyku, ESP32'nin beyninin büyük bir kısmının, Wi-Fi'ın ve Bluetooth'un tamamen kapatıldığı bir güç tasarrufu modudur. Cihaz bu moda geçtiğinde elektrik tüketimi miliamperlerden (mA), mikroamper (µA) seviyelerine, yani neredeyse sıfıra düşer!
Sadece içerideki RTC (Gerçek Zamanlı Saat) adı verilen çok düşük güç tüketen minik bir bekçi uyanık kalır. Bu bekçi, belirlediğiniz süre dolduğunda veya dışarıdan bir sensör tetiklendiğinde ana beyne "Uyan, işimiz var!" der.
Örnek Senaryo: Bir sera sıcaklık sensörü yaptınız. Sıcaklığı saniyede bir ölçmenize gerek yoktur. ESP32 uyanır -> Wi-Fi'a bağlanır -> Sıcaklığı ölçer -> Buluta gönderir (Bu işlem 3-4 saniye sürer) -> ESP32 30 dakika boyunca Derin Uykuya dalar. Bu sayede pil ömrünüz birkaç günden, aylarca sürecek bir zamana uzar!
Uyandırma Yöntemleri
ESP32'yi uykudan uyandırmanın birkaç yolu vardır:
- Zamanlayıcı (Timer): "Şu kadar dakika uyu ve uyan." (En çok kullanılanı budur).
- Harici Tetikleyici (External): ESP32 uyurken bir butona basılması veya hareket sensörünün (PIR) birini algılaması ile cihazın uyanması.
Biz bu yazımızda en temel olan Zamanlayıcı (Timer Wake-up) kullanacağız.
Derin Uyku Kodu Nasıl Çalışır?
Burada dikkat etmeniz gereken çok önemli bir kural var: ESP32 derin uykudan uyandığında, kaldığı yerden devam etmez. Sanki "Reset" (Yeniden Başlatma) tuşuna basılmış gibi hafızasını temizler ve koda en baştan, yani setup() kısmından başlar. Bu yüzden derin uyku projelerinde loop() kısmı genellikle boş bırakılır.
Arduino IDE'yi açın ve ESP32'nize şu kodu yükleyin:
C++
// ESP32 derin uykudayken zamanı mikro saniye (µs) cinsinden sayar.
// İşlemi kolaylaştırmak için saniyeye çeviren bir çarpan tanımlıyoruz.
#define uS_TO_S_FACTOR 1000000
// ESP32'nin uyuyacağı süre (Saniye cinsinden)
#define TIME_TO_SLEEP 10
void setup(){
Serial.begin(115200);
delay(1000); // Seri portun kendine gelmesi için kısa bir bekleme
Serial.println("\n----------------------------------");
Serial.println("ESP32 UYANDI! Gunaydin!");
// 1. AŞAMA: İŞİNİ YAP
// (Gerçek bir projede burada Wi-Fi'a bağlanır, sensörü okur ve veriyi ThingSpeak'e gönderirdik)
Serial.println("Islemler yapiliyor... Sensör okundu.");
delay(2000); // İşlem yapılıyormuş gibi 2 saniye bekletiyoruz
Serial.println("Islem tamamlandi!");
// 2. AŞAMA: UYKU SÜRESİNİ AYARLA
// 10 saniye (10 * 1000000 mikro saniye) olarak ayarlıyoruz.
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
Serial.println("ESP32 simdi " + String(TIME_TO_SLEEP) + " saniye boyunca uyuyacak.");
// 3. AŞAMA: UYKUYA DAL
Serial.println("Iyi geceler!");
Serial.flush(); // Seri porttaki yazıların bitmesini garantiye alıyoruz
// Uyku modunu başlatan sihirli komut:
esp_deep_sleep_start();
// DİKKAT: Bu satırdan sonraki hiçbir kod ÇALIŞMAZ! Çünkü cihaz tamamen uykuya daldı.
Serial.println("Bunu asla ekranda goremeyeceksiniz.");
}
void loop(){
// Derin uykudan uyanan ESP32, loop() kısmına geçmez, cihazı baştan başlatır.
// Bu yüzden burası boş kalır.
}
Kodu Test Edelim
- Kodu yükleyin ve Seri Port Ekranı'nı açın (115200 baud).
- ESP32 uyanacak, "Günaydın" diyecek, 2 saniye iş yapacak ve "İyi geceler" diyerek uykuya dalacaktır.
- Tam 10 saniye boyunca ekranda hiçbir hareket olmayacak (işte bu sırada piliniz kurtuluyor!).
- 10 saniye dolduğunda cihaz otomatik uyanacak ve döngü baştan başlayacaktır.
Tebrikler! Artık pille yıllarca (doğru optimizasyonla) çalışabilecek profesyonel kalitede IoT cihazları tasarlamanın en büyük sırrını biliyorsunuz.
Serinin Sonu ve Yeni Başlangıçlar
Arduino'nun "kaslı abisi" ESP32 ile başladığımız bu yolculukta sıfırdan zirveye harika bir rota çizdik. Artık hayal gücünüzle sınırlı akıllı ev aletleri, tarım monitörleri, hava istasyonları ve çok daha fazlasını yapacak bilgi birikimine sahipsiniz. Sensörlerinizi alın, kodlarınızı yazın ve fiziksel dünyayı internetle buluşturmaya devam edin!
Eğer projelerinizde takıldığınız bir yer olursa yorumlarda buluşalım. Maker kalın!
Yazan
Ertan Dağdelen
Brain & Youth Information Worker, Author, .Net, Flutter, AJAX, Arduino & Esp32, Pcb, 3D, Galatasaray, Gemini
Diğer Yazılar
ESP32 vs Arduino: 2026’da Hangisini Seçmelisiniz?
ESP32 ve Arduino, hobiden profesyonel IoT projelerine kadar en popüler geliştirme kartlarıdır. Arduino basitliği ve eğitim odaklı yapısıyla yeni başlayanlar için idealken, ESP32 yerleşik Wi-Fi, Bluetooth, yüksek işlem gücü ve düşük maliyetiyle modern bağlı cihazlar için çok daha güçlü bir alternatiftir. Bu yazıda ikisini hız, bellek, bağlantı, güç tüketimi ve kullanım alanları açısından karşılaştırıyoruz. 2026 itibarıyla çoğu IoT ve akıllı ev projesi için ESP32 öne çıkıyor.
Bölüm 10: Kablolara Veda Edin: ESP32'yi Wi-Fi Üzerinden (OTA) Programlamak
Projenizi güzelce kutuladınız, lehimlediniz ve ulaşması zor bir yere monte ettiniz. Peki kodda ufak bir hata fark ederseniz veya yeni bir özellik eklemek isterseniz ne olacak? Cihazı yerinden sökmeye hiç gerek yok! Bu bölümde akıllı telefonların güncelleme almasına benzeyen OTA (Over-The-Air) teknolojisini öğrenecek ve ESP32'mize USB kablosu olmadan, havadan kod yükleyeceğiz.
Bölüm 9: ESP32 ile Mesajlaşın: Kendi Telegram Botunuzu Yapın!
ESP32'nizin cebinize doğrudan mesaj atmasını ister misiniz? Bu bölümde popüler mesajlaşma uygulaması Telegram'ı kullanarak kendi botumuzu oluşturacağız. Cihazımız bir hareket algıladığında, ortam fazla ısındığında veya sadece uyandığında cep telefonumuza anlık bildirim (mesaj) göndermeyi öğrenecek!