Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

Bu bölümde, ESP32/ESP8266 projelerinde kullandığımız WiFi.h kütüphanesini sıfırdan öğreniyoruz. Her fonksiyonu basit örneklerle ve günlük hayattan benzetmelerle açıklayacağız!
WiFi.h, ESP32 ve ESP8266 kartlarının kablosuz ağlara bağlanmasını sağlayan resmi Arduino kütüphanesidir. Tıpkı bilgisayarınızın veya telefonunuzun Wi-Fi ayarları gibi, kartınızın da internete bağlanmasını yönetir.
| Fonksiyon | Ne Yapar? | Örnek Kullanım | Not |
|---|---|---|---|
WiFi.begin(ssid, pass) | Wi-Fi ağına bağlanma sürecini başlatır | WiFi.begin("EvWiFi", "sifre123"); | Bağlantı asenkron çalışır, hemen bağlanmaz! |
WiFi.status() | Mevcut bağlantı durumunu döndürür | if(WiFi.status() == WL_CONNECTED) | Durum kodlarını tablodan kontrol edin |
WiFi.localIP() | Kartın ağdaki IP adresini verir | Serial.println(WiFi.localIP()); | Router’ınızdan atanan adresi gösterir |
WiFi.disconnect() | Mevcut bağlantıyı keser | WiFi.disconnect(); | Yeniden bağlanmadan önce kullanılır |
WiFi.SSID() | Bağlı olduğu ağın adını döndürür | Serial.println(WiFi.SSID()); | Hangi ağa bağlı olduğunuzu görmek için |
WiFi.RSSI() | Sinyal gücünü dBm cinsinden verir | Serial.println(WiFi.RSSI()); | -50 güçlü, -80 zayıf sinyal demektir |
WiFi.macAddress() | Kartın fiziksel MAC adresini verir | Serial.println(WiFi.macAddress()); | Her cihazın benzersiz kimlik numarası |
WiFi.scanNetworks() | Çevredeki ağları tarar ve listeler | int n = WiFi.scanNetworks(); | Döndürdüğü sayı, bulunan ağ sayısıdır |
WiFi.isConnected() | Bağlantı var mı? (true/false) | if(WiFi.isConnected()) { ... } | Kısa ve net kontrol için ideal |
WiFi.mode(mode) | Çalışma modunu ayarlar | WiFi.mode(WIFI_STA); | STA=Client, AP=Erişim Noktası, BOTH=İkisi |
🟢 Başarı Durumları:
• 3 - WL_CONNECTED “Bağlandık, işleme devam!”
🟡 Bekleme/Bilgi Durumları:
• 0 - WL_IDLE_STATUS “Henüz başlamadı”
• 2 - WL_SCAN_COMPLETED “Tarama bitti”
🔴 Hata Durumları:
• 1 - WL_NO_SSID_AVAIL “Ağ yok (isim yanlış/menzil dışı)”
• 4 - WL_CONNECT_FAILED “Şifre yanlış veya erişim reddedildi”
• 5 - WL_CONNECTION_LOST “Bağlantı koptu”
• 6 - WL_DISCONNECTED “Bağlantı manuel kesildi”
#include <WiFi.h>
#include "arduino_secrets.h"
// Wi-Fi bilgileri harici dosyadan alınıyor
const char* ssid = SECRET_SSID;
const char* password = SECRET_PASS;
// Wi-Fi durumunu okunabilir şekilde yazdıran fonksiyon
void printWiFiStatus() {
int status = WiFi.status();
Serial.print("Durum: ");
switch(status) {
case WL_IDLE_STATUS:
Serial.println("Bekleniyor...");
break;
case WL_NO_SSID_AVAIL:
Serial.println("Ag bulunamadi!");
break;
case WL_CONNECTED:
Serial.println("Baglandi!");
Serial.print("IP: ");
Serial.println(WiFi.localIP());
break;
case WL_CONNECT_FAILED:
Serial.println("Baglanti basarisiz (sifre?)");
break;
default:
Serial.print("Bilinmeyen durum: ");
Serial.println(status);
}
}
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("ESP32 WiFi Ornegi");
Serial.println("Baglanti baslatiliyor...");
// Wi-Fi bağlantısını başlat
WiFi.begin(ssid, password);
// Bağlantı tamamlanana kadar bekle
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
printWiFiStatus();
}
// Bağlantı başarılı olduğunda detayları yazdır
Serial.println();
Serial.println("WiFi baglantisi tamamlandi!");
Serial.print("Ag Adi: ");
Serial.println(WiFi.SSID());
Serial.print("IP Adresi: ");
Serial.println(WiFi.localIP());
Serial.print("Sinyal Gucu: ");
Serial.print(WiFi.RSSI());
Serial.println(" dBm");
Serial.print("MAC Adresi: ");
Serial.println(WiFi.macAddress());
}
void loop() {
// Bağlantı durumunu periyodik olarak kontrol et
if (WiFi.status() != WL_CONNECTED) {
Serial.println("Baglanti koptu, durum kontrol ediliyor...");
printWiFiStatus();
}
delay(5000);
}
#include "WiFi.h"
void setup() {
Serial.begin(115200);
Serial.println("Ağlar taranıyor...");
int n = WiFi.scanNetworks();
Serial.println("Tarama tamamlandı.");
if (n == 0) {
Serial.println("Hiçbir ağ bulunamadı.");
} else {
Serial.println("Bulunan ağlar:");
for (int i = 0; i < n; ++i) {
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(" (");
Serial.print(WiFi.RSSI(i));
Serial.print(")");
Serial.println();
}
}
}
void loop() {
// Tarama bir kez yapıldıktan sonra boş bırakılabilir
}

Bu alıştırmaları yaparak WiFi kütüphanesini pekiştirebilirsiniz:
Görev: ESP32’yi Wi-Fi’ye bağlayın ve Serial Monitor’de şu çıktıyı alın:
Bağlandı! IP Adresi: 192.168.1.XX Sinyal Gücü: -65 dBm Ağ Adı: Fiber_XXXX
İpucu: WiFi.localIP(), WiFi.RSSI() ve WiFi.SSID() fonksiyonlarını kullanın.
Görev: Bağlantı koptuğunda otomatik tekrar bağlanan, 3 denemeden sonra hata veren ve LED ile durum gösteren (Yeşil=Bağlı, Kırmızı=Hata, Sarı=Beklemede) bir sistem kurun.
İpucu: WiFi.onEvent() fonksiyonunu araştırın!
Q: WiFi.begin() neden hemen bağlanmıyor?
C: Çünkü bu fonksiyon asenkron çalışır. Yani “bağlanmaya başla” der ve arka planda işlem devam eder. Bu yüzden while(WiFi.status() != WL_CONNECTED) döngüsü ile bağlantı tamamlanana kadar bekleriz.
Q: RSSI değeri negatif, bu normal mi?
C: Evet! RSSI (Received Signal Strength Indicator) dBm cinsindendir ve negatif değerler normaldir.
• -30 dBm ≈ Mükemmel (router yanınızda)
• -50 dBm ≈ Çok iyi
• -70 dBm ≈ Kabul edilebilir
• -80 dBm ≈ Zayıf, kopabilir
• -90 dBm ≈ Bağlantı yok
Q: ESP32 neden 5GHz ağlara bağlanamıyor?
C: Çoğu ESP32 modülü sadece 2.4GHz bandını destekler. Bu bir donanım sınırlamasıdır. Eğer router’ınız çift bantlıysa, 2.4GHz ağını ayrı bir SSID ile yayınlayın veya “Smart Connect” özelliğini kapatın.
Q: arduino_secrets.h yerine doğrudan şifre yazsam ne olur?
C: Teknik olarak çalışır , ama:
• Kodunuzu GitHub’a yüklerseniz şifreniz herkese açık olur
• Şifre değiştirdiğinizde her dosyayı güncellemeniz gerekir
• Ekip çalışmasında herkes kendi şifresini kullanamaz