Kendi akıllı ev sisteminizi kurdunuz, ESP32 geliştirme kartınızı bağladınız ve sensörlerinizi tanımladınız. Çalışma masanızda USB kablosu takılıyken test ettiğinizde her şey kusursuz çalışıyor; veriler saniyesi saniyesine akıyor. Cihazı kutulayıp duvardaki priz arkasına veya tavan montajına yerleştirdiniz ve Home Assistant üzerinden keyfini çıkarmaya başladınız. Ta ki o gece şebekede beklenmedik bir elektrik kesintisi yaşanana kadar…
Sabah uyandığınızda akıllı ev kontrol panelinize bakıyorsunuz ve ESP32 cihazınızın çevrimdışı (unavailable / offline) kaldığını görüyorsunuz. İlginç olan şu ki, cihazın adaptörünü prizden çekip 2 saniye sonra tekrar taktığınızda anında yerel Wi-Fi ağına bağlanıyor ve sorunsuz çalışmaya devam ediyor. Peki, elektrik kesilip geri geldiğinde aynı cihaz neden kendi kendine toparlanamıyor ve fişi çekilene kadar adeta donup kalıyor?
Bu can sıkıcı durum ne şanssız bir tesadüf ne de ev otomasyonunuzun geçici bir kararsızlığıdır. Sorunun ardında, gömülü sistemlerin açılış dinamikleri ile modemlerin başlatma süreleri arasındaki asimetrik yarış ve mikrodenetleyicinin iç mimarisindeki yazılım-donanım kilitlenmeleri yatar.
Sorunun Kaynağı: Modem Yarışı ve Zombi Çipler
Şebeke elektriği kesilip aniden geri geldiğinde ortamda görünmez bir zaman yarışı başlar. Evinizdeki fiber veya VDSL modemin boot etmesi, DSL/PON sinyalini senkronize etmesi ve 2.4 GHz Wi-Fi bandında SSID yayınına başlaması ortalama 3 ila 5 dakika sürer. Buna karşılık, bir ESP32 veya ESP8266 çipi elektrik geldiği andan itibaren 1-2 saniye içinde tüm çekirdeklerini uyandırır ve önceden yüklenmiş firmware’i çalıştırmaya başlar.
Bu zamanlama farkı, özellikle yerleşik USB birimine sahip yeni nesil mikrodenetleyicilerde (ESP32-S2, ESP32-S3 ve ESP32-C3 serileri) ölümcül bir kilitlenme döngüsüne yol açar:
Log Kilitlenmesi (USB CDC Buffer Overflow)
ESP32 uyandığı anda hafızasındaki Wi-Fi ağına bağlanmaya çalışır. Havada modemin sinyalini bulamadıkça arka planda yoğun bir hata ve durum günlüğü (log) üretmeye başlar. ESP32-S2 ve S3 gibi kartlarda donanımsal USB-to-UART dönüştürücü çip (CP2102 veya CH340 gibi) yerine doğrudan mikrodenetleyicinin içine entegre edilmiş USB CDC (Communications Device Class) portu kullanılır.
Firmware varsayılan olarak logları bu USB CDC portuna göndermeye çalışır. Ancak cihaz prizde tek başına çalıştığında (yani portu dinleyen bir bilgisayar veya seri terminal olmadığında), giden verileri tüketecek bir alıcı bulunmaz. Birkaç saniye içinde ESP32’nin küçük USB TX tampon belleği (buffer) tamamen dolar. FreeRTOS tabanlı işletim sistemi yeni logları yazabilmek için boş alan açılmasını beklemeye başlar (blocking write). Sonuç: Çipin ana işlem döngüsü donanım düzeyinde kilitlenir (Hard Lock).
Kör Tarama Çökmesi ve RF Katmanı Kilitlenmesi
ESP32 radyo modülü, yapılandırılmış ağ bulunamadığında sürekli olarak 1’den 13’e kadar tüm Wi-Fi kanallarını taramaya (full channel scan) devam eder. Dakikalarca süren bu kesintisiz kör tarama işlemi radyo frekans (RF) donanımının ısınmasına, aşırı akım dalgalanmalarına ve radyo sürücü katmanının kilitlenmesine neden olur.
Hotspot Çakışması (Fallback AP Kargaşası)
ESPHome projelerinde varsayılan konfigürasyonda yer alan ap: bloğu, cihaz 1 dakika boyunca ana Wi-Fi ağına bağlanamadığında acil durum erişimi için kendi yedek erişim noktasını (Fallback Hotspot) açar. Bir yandan havada kayıp modemi ararken diğer yandan kendisi hotspot yayını yapmaya çalışmak, özellikle tek radyolu S2 ve klasik ESP çiplerinde radyo alt sisteminin çökmesine davetiye çıkarır.
Zombi Modu: Güvenlik Sayaçlarının Durması
Çipin ana döngüsü USB buffer taşması veya RF kilitlenmesi sebebiyle donduğunda, yazılıma eklediğiniz reboot_timeout veya watchdog zamanlayıcıları dahi tetiklenemez. ESP32 ne ağa bağlanabilir ne de kendine reset atabilir; prize takılı olduğu sürece dış dünyayla bağı kopmuş bir “zombi çip” olarak enerji tüketmeye devam eder. Fişi çekip taktığınızda ise modem zaten çoktan açılmış olduğundan cihaz ilk 2 saniyede ağa katılır ve sorun fark edilmez.
Kesin Çözüm: ESPHome YAML Yapılandırması
Bu sorunu yazılımsal olarak kökten çözmek, belleğin şişmesini önlemek ve cihazın modem açılana kadar sessizce ve güvenle beklemesini sağlamak için ESPHome konfigürasyon dosyanızda aşağıdaki optimizasyonları yapmanız gerekir:
logger:
# EN KRİTİK ADIM: USB CDC loglarını durdurarak tampon belleğin şişmesini engelliyoruz.
# Böylece bilgisayar bağlı olmasa bile işletim sistemi asla kilitlenmez.
hardware_uart: UART0
baud_rate: 0
api:
# Home Assistant API bağlantısı koptuğunda güvenli reset garantisi:
reboot_timeout: 5min
wifi:
ssid: "KABLOSUZ_AG_ADINIZ"
password: "KABLOSUZ_AG_SIFRENIZ"
# Modem geç açıldığında sürenin dolup cihaza temiz bir donanım reset atması için:
reboot_timeout: 5min
# Uyku moduna girip radyo kararsızlığı yaşamasını engeller:
power_save_mode: NONE
# Radyonun 1-13 kanalları arasında kör tarama yapmasını önler;
# doğrudan hafızadaki son kararlı parametrelere odaklanır:
fast_connect: true
# KRİTİK UYARI: Cihazın kendi kendine açtığı "ap:" (Fallback Hotspot) bloğu
# dosyanızda tanımlıysa tamamen SİLİN veya yorum satırı (#) yapın.
Yapılan Değişikliklerin Teknik Anatomisi
- baud_rate: 0 ve hardware_uart: UART0: ESP32’nin sahipsiz bir USB CDC portuna sürekli veri basmaya çalışmasını tamamen engeller. Log çıktısı susturulduğu için tampon bellek asla taşmaz, FreeRTOS görevleri askıya alınmaz ve yazılımsal sayaçlar arka planda saat gibi çalışmaya devam eder.
- fast_connect: true: Normalde ESPHome bağlantı ararken tüm kanalları tarayarak en güçlü sinyali bulmaya çalışır.
fast_connect: truedirektifi verildiğinde ise cihaz havada gereksiz tarama yapmaz; hedef ağın SSID’sini gördüğü an doğrudan handshake başlatır. Bu sayede radyo modülünün ısınması ve RF katmanı çökmeleri engellenir. - Fallback AP Bloğunun Kaldırılması: Cihazın modem yokken kendi yedek ağını yayma çabasını iptal eder. Tek bir RF donanımının eşzamanlı çift yönlü kargaşasını engelleyerek işlemciyi hafifletir.
- reboot_timeout: 5min: Artık işletim sistemi kilitlenmeyen cihazımız, elektrik kesintisi sonrasında 5 dakika boyunca sessizce modemin kendine gelmesini bekler. Eğer modem 5 dakika içinde açılmazsa, ESPHome dahili donanım watchdog mekanizmasını devreye sokarak mikrodenetleyiciye temiz bir yeniden başlatma (reboot) uygular. 5. dakikada modem zaten yayında olacağından ESP32 anında ağa katılır.
Donanımsal Tamamlayıcı: Güç Dalgalanmaları, Schottky Diyot ve Kondansatör Çözümleri
Elektrik kesintileri sonrasında yaşanan çevrimdışı kalma sorunları %80 oranında yukarıda açıkladığımız yazılımsal kilitlenmelerden kaynaklansa da, geriye kalan %20’lik dilim doğrudan şebeke geri dönüş anındaki elektriksel parazitler ve güç kararsızlıkları ile ilgilidir.
Şebeke elektriği geri geldiğinde trafolardan, adaptörlerden ve evdeki diğer endüktif yüklerden (buzdolabı motoru, klima vb.) kaynaklanan ani voltaj sıçramaları (spike) ve ardından gelen ani voltaj çöküşleri yaşanır. Daha önce detaylı olarak incelediğimiz ESP32 ve Adreslenebilir Şerit LED Titreme ve Donma Sorunlarına Kesin Çözüm rehberimizde ele aldığımız donanımsal filtreleme prensipleri, röle ve sensör devrelerinde de kusursuz bir koruma sağlar.
Elektriksel kararlılığı donanım tarafında garantiye almak için şu üç bileşeni devrenize dahil etmeniz önerilir:
- 1N5819 Schottky Diyot (Tek Yönlü Güç Güvencesi): Adaptörden gelen 5V besleme hattı üzerine seri olarak yerleştirilir (üzerindeki çizgi ESP32 yönüne bakmalıdır). Şebeke geri geldiğinde başka bir yük anlık yüksek akım çekse dahi, diyot tek yönlü bir çekvalf gibi davranarak ESP32’nin besleme hattındaki enerjinin dışarıya kaçmasını engeller. Düşük ileri voltaj düşümü (0.2V – 0.3V) sayesinde 5V hattını zayıflatmaz.
- 1000 µF (16V / 25V) Elektrolitik Dekuplaj Kondansatörü (Mikro Enerji Rezervi): ESP32’nin 5V (VIN) ve GND pinlerine olabildiğince yakın paralel bağlanır. Şebeke elektriğinin açılış anında yaşadığı mikrosaniyelik voltaj çöküşlerinde depoladığı enerjiyi hatta basarak işlemcinin Brownout Reset döngüsüne girmesini veya flash belleğin bozulmasını önler.
- 10 µF Elektrolitik Kondansatör (Gecikmeli Uyanma / Power-on-Reset): ESP32’nin EN (Enable/Reset) pini ile GND arasına yerleştirilir. Adaptör prize takıldığında veya elektrik geri geldiğinde şebekenin ve anahtarlamalı güç kaynağının (SMPS) kararlı 5V seviyesine oturması birkaç milisaniye sürer. EN pinine bağlanan bu RC zaman sabiti, voltaj tamamen oturana kadar EN pinini LOW seviyesinde tutarak ESP32’nin uyanışını mikrosaniyeler mertebesinde geciktirir. Böylece çip, kararsız voltaj altında boot etmeye çalışıp kilitlenmez.
Kartınızın ilk kurulum aşamaları, pin konfigürasyonları ve USB sürücü detayları için ayrıca ESP32 Kurulum Rehberi içeriğimizden de yararlanabilirsiniz.
Yazılımsal ve Donanımsal Çözümlerin Karşılaştırması
Aşağıdaki tabloda, elektrik kesintileri sonrası karşılaşılan kilitlenme türlerini ve uyguladığımız çözümlerin etki alanlarını görebilirsiniz:
| Sorun Türü | Temel Kök Neden | Uygulanan Çözüm | Etki Katmanı |
|---|---|---|---|
| USB CDC Kilitlenmesi | Prizde çalışan cihazda sahipsiz logların USB tamponunu taşırması | baud_rate: 0 ve hardware_uart: UART0 | Yazılım (ESPHome) |
| Modem Senkronizasyon Kaybı | Modemin geç açılması sırasında çipin pes edip zombi kalması | reboot_timeout: 5min ve fast_connect: true | Yazılım (ESPHome) |
| Ağ Çakışması | Fallback Hotspot ile dış ağ arama fonksiyonunun aynı anda RF modülü çökertmesi | ap: bloğunun tamamen devre dışı bırakılması | Yazılım (ESPHome) |
| Açılışta Brownout ve Çökme | Şebeke dönüşündeki mikrosaniyelik voltaj dalgalanmaları ve ani çöküşler | 1N5819 Schottky Diyot ve 1000 µF Elektrolitik Kondansatör | Donanım (Elektronik Devre) |
| Kararsız Boot Kilitlenmesi | Adaptör voltajı oturmadan işlemcinin erken uyanmaya çalışması | EN pini ile GND arasına 10 µF Gecikme Kondansatörü | Donanım (Elektronik Devre) |
Sonuç ve Saha Deneyimi
Akıllı ev projelerinde asıl başarı, sistemin sadece ideal laboratuvar ortamında değil; elektrik kesintileri, şebeke dalgalanmaları ve internet kopmaları gibi gerçek hayat senaryolarında da insan müdahalesine ihtiyaç duymadan ayakta kalabilmesidir. ESPHome projelerinizde yukarıdaki YAML optimizasyonlarını uygulayarak ve kritik noktalardaki donanımlarınıza dekuplaj kondansatörü ile Schottky diyot korumalarını ekleyerek elektrik kesintisi sonrası “fişi çekip takma” ritüelini tamamen tarihe gömebilirsiniz.
Kaynaklar ve Referanslar
Bu makale hazırlanırken aşağıdaki kaynaklardan ve orijinal teknik dökümantasyonlardan faydalanılmıştır:











