
Wi-Fi Tarayıcı (ESP32 + LCD)
Başlangıç20 dkÇevrendeki Wi-Fi ağlarını bulan bir cep tarayıcısı: ESP32 ağları tarar, en güçlüden en zayıfa sıralar ve LCD'de her birinin adını, sinyal gücünü (dBm ve çizgilerle) ve şifreli olup olmadığını sırayla gösterir; Seri Monitöre kanal ve şifreleme türüyle tam listeyi yazar. Bir powerbank'e takıp evde dolaştırarak modemin en iyi çektiği yeri bulabilirsin. Hiçbir ağa bağlanmaz, şifre gerekmez. İnternet Saati ile aynı dört kablo; ağ taramayı, diziyi sıralamayı ve snprintf ile ekran satırı biçimlemeyi öğretir.

Gerekli malzemeler
1 × ESP32 Geliştirme Kartı (ESP32-WROOM-32)
1 × 16x2 Karakter LCD Ekran (I2C modüllü)
4 × Jumper Kablo - Dişi/Dişi
Bağlantı adımları
- 1
LCD'nin gücünü bağla (GND ve VCC)

ESP32'yi breadboard'a takma: 30 pinli kart breadboard'u neredeyse tamamen kaplar. Bu projede kart masada durur ve LCD dört dişi-dişi jumper kabloyla doğrudan pinlerine bağlanır. Kartı USB girişi sana bakacak şekilde tut; pin adları kartın üstünde, pinlerin yanında yazar. LCD'nin arkasındaki I2C modülünün 4 pinli başlığında GND'yi ESP32'nin sağ kenarında 3V3'ün hemen üstündeki GND pinine, VCC'yi sol kenarın en altındaki VIN pinine bağla. VIN, ESP32 USB'ye takılıyken 5V verir; LCD'nin yazısı 5V ile net görünür.
- ESP32 GND (3V3'ün yanındaki) → LCD GND (siyah kablo)
- ESP32 VIN (USB'nin 5V'u) → LCD VCC (kırmızı kablo)
- 2
I2C kablolarını bağla (SDA ve SCL)

LCD'nin SDA pinini ESP32'nin D21 pinine, SCL pinini D22 pinine bağla. ESP32'de I2C için kullanılan pinler bunlardır; başka pin kullanırsan koddaki SDA_PIN ve SCL_PIN'i de değiştir. Bu projede kodda Wi-Fi adı ya da şifresi yok: ESP32 hiçbir ağa bağlanmaz, yalnızca çevredeki ağların yayınını dinler. İnternet Saati'ni kurduysan devre aynı; yalnızca yeni kodu yükle.
- ESP32 D21 → LCD SDA (sarı kablo)
- ESP32 D22 → LCD SCL (yeşil kablo)
Arduino kodu
Kodu indir (.ino)Wokwi'de dene
// Kitaplık Yöneticisi'nden kurulacak:
// "LiquidCrystal I2C"
// Kart: "ESP32 Dev Module"
#include <WiFi.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// ESP32'nin I2C pinleri
const int SDA_PIN = 21;
const int SCL_PIN = 22;
// Her ağ ekranda bu kadar kalır (ms)
const unsigned long SHOW_EACH = 3000;
// En çok bu kadar ağ sıralanır
const int MAX_NETWORKS = 40;
// Adını yayınlamayan ağ (LCD'de ğ yok)
const char* HIDDEN = "(gizli ag)";
// I2C adresi çoğunda 0x27, bazısında 0x3F
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Bulunan ağlar, güçlüden zayıfa
int order[MAX_NETWORKS];
int found = 0;
// Sıradaki gösterilecek ağ
int next = 0;
unsigned long shownAt = 0;
// Sinyal gücü (dBm) kaç çizgi eder: 0-4
int bars(int rssi) {
if (rssi >= -55) return 4;
if (rssi >= -67) return 3;
if (rssi >= -75) return 2;
if (rssi >= -85) return 1;
return 0;
}
// Şifreleme türünün kısa adı
const char* security(wifi_auth_mode_t mode) {
switch (mode) {
case WIFI_AUTH_OPEN: return "Açık";
case WIFI_AUTH_WEP: return "WEP";
case WIFI_AUTH_WPA_PSK: return "WPA";
case WIFI_AUTH_WPA2_PSK: return "WPA2";
case WIFI_AUTH_WPA_WPA2_PSK: return "WPA/WPA2";
case WIFI_AUTH_WPA3_PSK: return "WPA3";
case WIFI_AUTH_WPA2_WPA3_PSK: return "WPA2/WPA3";
default: return "Diğer";
}
}
// Ağın adı; yayınlamıyorsa HIDDEN
String networkName(int k) {
String name = WiFi.SSID(k);
if (name.length() == 0) name = HIDDEN;
return name;
}
// Ağları tarar, güçlüden zayıfa dizer
void scan() {
lcd.clear();
lcd.print("Taraniyor...");
Serial.println("Taranıyor...");
int count = WiFi.scanNetworks();
found = constrain(count, 0, MAX_NETWORKS);
for (int i = 0; i < found; i++) {
order[i] = i;
}
// Sıralama: her ağ, kendinden zayıf
// olanların önüne kayar
for (int i = 1; i < found; i++) {
int k = order[i];
int j = i - 1;
while (j >= 0 &&
WiFi.RSSI(order[j]) < WiFi.RSSI(k)) {
order[j + 1] = order[j];
j--;
}
order[j + 1] = k;
}
Serial.print(found);
Serial.println(" ağ bulundu");
for (int i = 0; i < found; i++) {
int k = order[i];
Serial.printf("%2d. %4d dBm kanal %2d %s (%s)\n",
i + 1, WiFi.RSSI(k), WiFi.channel(k),
networkName(k).c_str(),
security(WiFi.encryptionType(k)));
}
next = 0;
shownAt = millis();
}
// Bir ağı LCD'ye yazar: üstte adı, altta
// sırası, gücü, çizgiler ve şifre (*)
void show(int i) {
int k = order[i];
int rssi = WiFi.RSSI(k);
char barText[] = " ";
for (int b = 0; b < bars(rssi); b++) {
barText[b] = '#';
}
bool locked =
WiFi.encryptionType(k) != WIFI_AUTH_OPEN;
char line[17];
snprintf(line, sizeof line, "%2d/%-2d%4d %s %c",
i + 1, found, rssi, barText,
locked ? '*' : ' ');
lcd.clear();
lcd.print(networkName(k).substring(0, 16));
lcd.setCursor(0, 1);
lcd.print(line);
}
void setup() {
Serial.begin(115200);
Wire.begin(SDA_PIN, SCL_PIN);
lcd.init();
lcd.backlight();
// Yalnızca dinler, hiçbir ağa bağlanmaz
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
scan();
}
void loop() {
if (found == 0) {
lcd.setCursor(0, 1);
lcd.print("Ag bulunamadi");
delay(SHOW_EACH);
scan();
return;
}
// İlk ağ hemen, sonrakiler sırayla
if (next > 0 && millis() - shownAt < SHOW_EACH) {
return;
}
// Hepsi gösterildi: yeniden tara
if (next >= found) {
scan();
return;
}
show(next);
next++;
shownAt = millis();
}
Seri Monitörde göreceğin
Taranıyor... 4 ağ bulundu 1. -42 dBm kanal 6 EvAgim (WPA2) 2. -63 dBm kanal 1 TurkTelekom_ZX7K2 (WPA2/WPA3) 3. -77 dBm kanal 11 Komsu (WPA2) 4. -88 dBm kanal 6 Kafe_Misafir (Açık) Taranıyor... 4 ağ bulundu
Bir kablo yerinde değilse
Taranıyor... 0 ağ bulundu Taranıyor... 0 ağ bulundu
Sonuç
Arduino IDE'de bir kerelik ESP32 kurulumu: Dosya → Tercihler'de "Ek kart yöneticisi URL'leri" kutusuna https://espressif.github.io/arduino-esp32/package_esp32_index.json yaz; Araçlar → Kart → Kart Yöneticisi'nde "esp32" ara ve "esp32 by Espressif Systems"ı kur. Sonra Araçlar → Kart'tan "ESP32 Dev Module"ü ve ESP32'nin portunu seç, Kitaplık Yöneticisi'nden "LiquidCrystal I2C"yi kur ("AVR mimarisi" uyarısı verirse önemli değil, ESP32'de de çalışır). Kodu yükle ve Seri Monitörü 115200 baud'da aç. LCD birkaç saniye "Taraniyor..." yazar, sonra bulunan ağları en güçlüden başlayarak üçer saniye gösterir: üst satırda ağın adı, alt satırda sırası ve toplam ağ sayısı (1/4), sinyal gücü dBm olarak (-42), dört çizgilik güç göstergesi ve ağ şifreliyse sonda bir yıldız (*). Hepsi gösterilince yeniden tarar; Seri Monitör her taramada tam listeyi kanal ve şifreleme türüyle yazar. dBm sıfıra ne kadar yakınsa sinyal o kadar güçlüdür: -50 ve üstü çok iyi, -67'ye kadar video için yeterli, -80'in altında bağlantı kopabilir. ESP32 yalnızca 2,4 GHz ağları görür; modemin 5 GHz yayını listede çıkmaz. Ağ adındaki ş, ğ, ı gibi harfler LCD'de garip işaretler olarak görünür, Seri Monitörde doğru yazılır. Ekran hep "Ag bulunamadi" diyorsa çevrede 2,4 GHz ağ yoktur ya da kart metal bir kutunun içindedir; ESP32 modülünün metal kapağın ötesinde kalan ucunu (anten orada) açıkta tut. LCD'nin ışığı yanıyor ama yazı yoksa I2C modülünün üstündeki mavi trimpotu küçük bir tornavidayla çevir; yine görünmüyorsa koddaki 0x27'yi 0x3F yap. Kod yüklenirken "Connecting..." yazıp hata veriyorsa yükleme sırasında ESP32'nin BOOT düğmesine basılı tut. Port listesinde ESP32 hiç görünmüyorsa kablonun şarj kablosu değil veri kablosu olduğundan emin ol ve Windows'ta kartın üstündeki USB çipinin (CP2102 ya da CH340) sürücüsünü kur.
Benzer projeler
İnternet Saati (ESP32 + LCD)Başlangıç20 dkSaati internetten alan ve hiç ayar istemeyen bir masa saati: ESP32 evdeki Wi-Fi ağına bağlanır, Türkiye saatini bir zaman sunucusundan (NTP) alır ve LCD'de tarihi, günü ve saniyesiyle saati gösterir. Elektrik gidip gelse de açılınca saati kendisi yeniden bulur. ESP32 ile ilk proje için ideal: lehim yok, breadboard yok, yalnızca dört kablo.Projeye git
RFID Kartlı Yoklama (ESP32 + LCD)Orta40 dkKartını okutan kişinin adı LCD'de görünür ve "girdi" ya da "çıktı" diye kaydedilir; ekran içeride kaç kişi olduğunu sayar. Kulüp, sınıf ya da atölye yoklaması için: tanımadığı kartın numarasını gösterir, sen o numarayı bir adla koddaki listeye eklersin. Breadboard gerekmez; RC522 ve LCD dişi-dişi kablolarla doğrudan ESP32'ye bağlanır.Projeye git
Telefondan LED Kontrolü (ESP32 Wi-Fi)Başlangıç20 dkESP32 evdeki Wi-Fi ağına bağlanıp küçük bir web sayfası sunar; telefonun tarayıcısında açtığın sayfadaki AÇ ve KAPAT düğmeleriyle LED'i uzaktan yakıp söndürürsün. Uygulama kurmak gerekmez, aynı ağdaki her telefon ya da bilgisayar sayfayı açabilir. Akıllı ev projelerinin ilk adımı: aynı yöntemle röle, motor ya da başka bir cihaz da kontrol edilir.Projeye git
Uygulamada her bağlantıyı tek tek işaretle, envanterindeki parçalarla eşleştir ve kaldığın yerden devam et.
