IoT projelerinde en sık karşılaşılan sorunlardan biri, cihazın bağlı olduğu Wi-Fi ağının kopması veya yönlendiricinin (router) kapanmasıdır. Bu rehberde, ESP8266 NodeMCU için ana Wi-Fi ağı koptuğunda veya ulaşılamaz olduğunda otomatik olarak belirlenen yedek Wi-Fi ağına bağlanan, bağlantı geldikçe ağlar arasında geçiş yapabilen esnek bir yapı kuruyoruz.

ESP8266WiFiMulti kütüphanesi kullanılır.Aşağıdaki koda ana Wi-Fi ağınızın ve yedek ağınızın (telefonunuzun kişisel erişim noktası gibi) bilgilerini ekleyerek NodeMCU'nuza yükleyebilirsiniz:
// ESP8266 NodeMCU Cift Wi-Fi (Ana ve Yedek Ag) Yonetimi
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
// WiFiMulti Nesnesi Oluşturma
ESP8266WiFiMulti wifiMulti;
// Baglanti Durumunu Takip Etmek Icin Zamanlayici
unsigned long lastCheckTime = 0;
const unsigned long checkInterval = 5000; // 5 saniyede bir kontrol et
void setup() {
Serial.begin(115200);
delay(10);
// Wi-Fi Modunu STA (Istasyon) Olarak Ayarla
WiFi.mode(WIFI_STA);
// --- AĞ TANIMLAMALARI ---
// 1. Ana Wi-Fi Ağı (Öncelikli Ev/Ofis Ağı)
wifiMulti.addAP("ANA_WIFI_ADI", "ANA_WIFI_SIFRESI");
// 2. Yedek Wi-Fi Ağı (Telefon Hotspot veya 2. Modem)
wifiMulti.addAP("YEDEK_WIFI_ADI", "YEDEK_WIFI_SIFRESI");
// (Istege bagli) 3. bir yedek ag daha eklenebilir:
// wifiMulti.addAP("UCUNCU_WIFI_ADI", "SIFRE3");
Serial.println("\nWi-Fi Aglarina Baglaniliyor...");
// Tanımlı ağlardan birine bağlanana kadar bekle
while (wifiMulti.run() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\n----------------------------------");
Serial.println("Wi-Fi Baglantisi Basarili!");
Serial.print("Baglanan Ag (SSID): ");
Serial.println(WiFi.SSID());
Serial.print("IP Adresi: ");
Serial.println(WiFi.localIP());
Serial.println("----------------------------------");
}
void loop() {
// Arka planda baglanti durumunu kontrol et
// Eğer bağlı olunan ağ koparsa wifiMulti.run() otomatik olarak yedek ağa bağlanır
if (wifiMulti.run() == WL_CONNECTED) {
// Periyodik olarak seri porttan baglanti durumunu raporla
if (millis() - lastCheckTime >= checkInterval) {
lastCheckTime = millis();
Serial.print("[SISTEM CALISIYOR] Aktif Ag: ");
Serial.print(WiFi.SSID());
Serial.print(" | IP: ");
Serial.print(WiFi.localIP());
Serial.print(" | Sinyal Gucu (RSSI): ");
Serial.print(WiFi.RSSI());
Serial.println(" dBm");
}
// --- BURAYA KENDI KODLARINIZI EKLENIZ (LED kontrol, Sensor Okuma vb.) ---
} else {
// Baglanti tamamen koptugunda veya gecis aninda
Serial.println("[UYARI] Wi-Fi Baglantisi Kopuk! Uygun ag araniyor...");
delay(1000);
}
}
wifiMulti.run() komutu loop() içinde çağrıldığında, arka planda tanımlı SSID'leri sürekli tarar. Ana modem kapandığında cihaz birkaç saniye içinde yedek telefona/modeme sorunsuz bağlanır.
Henüz yorum yapılmamış. İlk yorumu siz yapın!