ESP32 tabanlı akıllı sensörlerinde deep sleep ve 18650 pil kombinasyonunda beklediğinden hızlı pil bitimi yaşıyorsan, odaklanman gereken birkaç kritik yazılımsal ve özellikle donanımsal "sır" var. Sorunun özü, sadece deep sleep'e geçmekle bitmiyor, o kısa uyanma anındaki enerji tüketimi ve donanımın kendisi tüm pil ömrünü belirliyor.
1. Uyanma Döngüsünün Maliyeti: Wi-Fi ve İşlem
ESP32'nin en büyük güç tüketicisi Wi-Fi modülüdür. Her deep sleep'ten uyandığında, Wi-Fi'ı başlatma, ağa bağlanma, MQTT broker'ına bağlanma, veriyi gönderme ve bağlantıyı kesme süreci enerji yoğun bir döngüdür.
Kısa ve Öz Wi-Fi Kullanımı:
WiFi.begin() sonrası mümkün olan en kısa sürede bağlan. Statik IP kullanmak DHCP sorgusu süresini ortadan kaldırarak bir miktar kazanç sağlayabilir.
MQTT broker'ına bağlan, verini gönder ve hemen client.disconnect() ile bağlantıyı kes. Bağlantıyı açık tutmaya çalışma.
* Deep sleep'e geçmeden hemen önce WiFi.disconnect(true, true); ve WiFi.mode(WIFI_OFF); komutlarını kullanarak Wi-Fi modülünü tamamen kapatmak faydalı olabilir, ancak ESP-IDF'in kendi deep sleep fonksiyonları bunu zaten halletmeli. Daha önemlisi, WiFi.setSleep(WIFI_PS_MAX_MODEM); Deep Sleep öncesinde Wi-Fi çipinin güç modunu ayarlamak, uyanma anındaki başlangıç güç tüketimini bir nebze optimize edebilir.
MQTT Optimizasyonları:
QoS 0 Kullan: Sensör verileri için kesinlikle QoS 0 kullanmalısın. QoS 1 veya 2, mesaj teslimatı için ekstra el sıkışma (acknowledgement) gerektirir, bu da işlemciyi ve Wi-Fi'ı daha uzun süre aktif tutar.
Minimal Veri Yükü (Payload): Sadece gerçekten gerekli olan veriyi gönder. "sıcaklık: 24.5, nem: 60" yerine "24.5,60" gibi daha kısa formatlar kullan. Her byte önemlidir.
* Keep-Alive Yok: MQTT bağlantısını hemen kapatacağın için keepAlive değerini düşük tutmaya veya hiç kullanmamaya özen göster.
2. Donanımsal "Pil Canavarları" ve Çözümleri
Buradaki optimizasyonlar genellikle yazılımsaldan daha büyük fark yaratır ve genelde gözden kaçar:
Gerilim Regülatörü (LDO): EN BÜYÜK SORUN!
Çoğu hazır ESP32 geliştirme kartında (NodeMCU, ESP32 DevKit vb.) genellikle AMS1117 gibi lineer regülatörler bulunur. Bunlar, yüksek quiescent akımları (boşta akım çekimi) nedeniyle deep sleep modunda bile pilini sömürür. AMS1117'nin kendisi deep sleep'te bile 5-10mA çekebilir.
Çözüm: Kendi projen için düşük quiescent akımlı LDO'lar (örn. MCP1700, LP2985-3.3, AP2112K) veya verimli bir buck dönüştürücü (DC-DC step-down) kullanmalısın. Kendi deneyimlerimden söyleyeyim; AMS1117'den MCP1700'e geçtiğimde pil ömrüm 3-4 kat arttı. Bu, pil optimizasyonunun en kritik adımıdır.
USB-to-Serial Çip:
Geliştirme kartlarındaki CP2104, CH340 gibi USB-Serial dönüştürücü çipler deep sleep'te bile bir miktar akım çeker.
Çözüm: Ürünü nihai hale getirirken bu çipi karttan fiziksel olarak ayırabilir veya kesebilirsin. Kendi PCB tasarımını yapıyorsan hiç ekleme, gerekirse harici bir dönüştürücüyle programla. Bu da 1-5mA arası bir kazanç sağlayabilir.
Güç LED'leri ve Diğer Gösterge LED'leri:
Hazır kartlardaki güç LED'leri veya durum LED'leri deep sleep'te bile yanmaya devam ediyorsa, bunlar da gereksiz enerji tüketir.
Çözüm: Bu LED'leri kesin. Genellikle kartın arkasındaki dirençleri sökerek veya doğrudan LED'i sökerek yapabilirsin.
Harici Sensörler ve Çevre Birimleri:
DHT, BME280 gibi sensörlerin kendilerinin de quiescent akımları vardır. Sürekli açık kalmaları gereksizdir.
Çözüm: Sensörlerini ESP32'nin bir GPIO pini üzerinden kontrol edilen bir MOSFET aracılığıyla yalnızca ölçüm anında güç vererek çalıştır. Ölçüm bittiğinde MOSFET'i kapatıp sensörün güç almasını kes. Bu, özellikle pil ömrü kritik olan projelerde standart bir uygulamadır.
3. Yazılım İnce Ayarları ve RTC Hafızası
- RTC Hafızasını Kullan: Uyanma sonrası bazı değişkenlerin değerini kaybetmemek ve yeniden başlatma maliyetini azaltmak için
RTC_DATA_ATTR anahtar kelimesini kullanarak değişkenleri RTC belleğinde saklayabilirsin. Bu, ESP32'nin uyanma süresini ve dolayısıyla enerji tüketimini biraz daha azaltabilir.
- Optimum Uyku Süresi: Veri gönderme sıklığını (deep sleep süresi) projenin gereksinimlerine göre en uzun tutmaya çalış. Çok sık uyanmak (örneğin her 30 saniyede bir), 5 dakikada bir uyanmaktan daha fazla enerji harcar çünkü her uyanış ve Wi-Fi döngüsü sabit bir maliyete sahiptir.
Bu maddelerdeki donanımsal ve yazılımsal optimizasyonları uyguladığında, 18650 pillerinin beklediğinden çok daha uzun süre dayanacağını göreceksin. Özellikle regülatör ve USB çipi konuları en büyük pil yiyicileridir.