İçeriğe geç

Menü

Berk Akademi
Yorumlar Google yorumları Birebir ders başvurusu Ücretsiz ön görüşme Ana Sayfa

ESP32 Wi-Fi Bağlantısı Nasıl Yapılır? STA Modu ve IP Adresi

esp32-wifi-baglantisi-sta-modu-ip-adresi
Bu yazıda neler var?
  1. STA modu nedir ve ESP32 bir ağa nasıl bağlanır?
  2. Çalışan ESP32 Wi-Fi bağlantı kodu ve satır satır açıklaması
  3. Serial.begin hızı seri port monitörüyle neden eşleşmeli?
  4. ESP32 Wi-Fi'ye bağlanmıyorsa kontrol edilecek üç nokta
  5. Seri port çıktısına bakarak üç durumu ayırma: teşhis kontrol listesi

ESP32 Wi-Fi bağlantısı için kartı STA modunda, yani evdeki modem ya da telefon hotspot'u gibi bir erişim noktasına istemci olarak çalıştırırsın. Önce WiFi.mode(WIFI_STA) ile modu seçersin, ardından WiFi.begin() ile ağ adını ve parolayı verirsin. Sonra WiFi.status() ile bağlantının kurulup kurulmadığını denetlersin. Bağlantı kurulunca WiFi.localIP() ile aldığın IP adresini seri porta yazdırırsın.

STA modu nedir ve ESP32 bir ağa nasıl bağlanır?

STA modu, ESP32'nin bir erişim noktasına (modem, router, telefon hotspot'u) istemci olarak bağlandığı çalışma biçimidir. Telefonun ya da dizüstü bilgisayarın Wi-Fi'ye bağlanması ile aynı mantıktır: ağı başka bir cihaz kurar, ESP32 o ağa katılır. Karşıt biçim AP (erişim noktası) modudur; orada ESP32 kendi ağını yayar ve diğer cihazlar ona bağlanır. Bu yazıda yalnızca STA modunu ele alıyoruz.

Bağlantı akışı dört adımdan oluşur:

  1. Modu seç: WiFi.mode(WIFI_STA) kartı istemci olarak çalışacak şekilde ayarlar.
  2. Bağlanmayı başlat: WiFi.begin(ssid, password) çağrısına ağın adını (SSID) ve parolasını verirsin.
  3. Durumu kontrol et: WiFi.status() bağlantının durumunu döndürür. Değer WL_CONNECTED ise kart ağa bağlanmıştır.
  4. IP adresini oku: Bağlantı kurulduktan sonra WiFi.localIP() kartın ağdaki adresini verir.

IP adresi, kartın yerel ağdaki kimliği gibidir. Modemin DHCP hizmeti bağlanan her cihaza bir adres atar; ESP32 de bağlandığı anda bu adresi alır. Bilgisayarın aynı ağdaysa bu adres üzerinden karta ulaşabilirsin. Adres modem tarafından atandığı için kart yeniden bağlandığında değişebilir. Bu yüzden her bağlantıda seri porttan okumak sağlıklı bir alışkanlıktır.

Çalışan ESP32 Wi-Fi bağlantı kodu ve satır satır açıklaması

Çalışan ESP32 Wi-Fi bağlantı kodu ve satır satır açıklaması

Aşağıdaki örnek Arduino IDE ile ESP32 kartına yüklenebilir. AG_ADI ve PAROLA yerine kendi ağ bilgilerini yazman gerekir.

#include <WiFi.h>

const char* ssid = "AG_ADI";
const char* password = "PAROLA";

const unsigned long ZAMAN_ASIMI = 15000; // milisaniye

void setup() {
  Serial.begin(115200);
  delay(1000);

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  Serial.print("Bağlanılıyor");
  unsigned long baslangic = millis();

  while (WiFi.status() != WL_CONNECTED && millis() - baslangic < ZAMAN_ASIMI) {
    delay(500);
    Serial.print(".");
  }
  Serial.println();

  if (WiFi.status() == WL_CONNECTED) {
    Serial.println("Bağlandı");
    Serial.print("IP adresi: ");
    Serial.println(WiFi.localIP());
  } else {
    Serial.println("Bağlanılamadı");
  }
}

void loop() {
}

Kod bloklarının görevi

  • #include <WiFi.h>: Arduino-ESP32 çekirdeğiyle gelen Wi-Fi kütüphanesini projeye ekler.
  • ssid ve password: Ağ bilgilerini en üstte sabit olarak toplar; değiştirmen gerektiğinde tek yere bakarsın.
  • Serial.begin(115200): Seri port iletişimini başlatır. Hızın seri port monitöründeki ayarla eşleşmesi gerekir; ayrıntısı bir sonraki bölümün konusu.
  • WiFi.mode(WIFI_STA) ve WiFi.begin(): Kartı istemci moduna alır ve bağlantı girişimini başlatır. Sonuç bu satırlarda değil, durum kontrolünde anlaşılır.
  • while döngüsü: Bağlantı kurulana kadar ya da süre dolana kadar yarım saniyede bir nokta yazdırır. millis() kartın açılışından beri geçen süreyi verir; baslangic ile farkı alarak beklemenin 15 saniyeyi aşmasını engelleriz.
  • if bloğu: Döngü bitince sonucu yorumlar. Bağlandıysa IP adresini, bağlanamadıysa uyarı mesajını yazar.

Sonsuz döngü yerine zaman aşımı kullanmanın nedeni teşhistir. Parola yanlışsa ya da ağ menzilde değilse sonsuz döngü ekranda yalnızca nokta üretir ve program hiç ilerlemez. Zaman aşımı ise bir sonuç mesajı verir; böylece sorunu aramaya başlayabilirsin.

Seri port monitöründe beklenen çıktı

Bağlantı başarılıysa şuna benzer bir çıktı görürsün (IP adresi senin ağına göre farklı olacaktır):

Bağlanılıyor......
Bağlandı
IP adresi: 192.168.1.42

Süre dolduğunda ise 15 saniye boyunca yaklaşık 30 nokta yazılır ve ardından hata mesajı gelir:

Bağlanılıyor..............................
Bağlanılamadı

Güvenlik uyarısı: Kodunu forumda, bir repoda ya da ekran görüntüsüyle paylaşırken SSID ve parolayı açıkta bırakma; yerine AG_ADI ve PAROLA gibi yer tutucular yaz. Parolayı ana koddan ayırıp ayrı bir dosyada tutmak da paylaşım sırasında kazara sızmayı azaltan iyi bir alışkanlıktır.

Serial.begin hızı seri port monitörüyle neden eşleşmeli?

Serial.begin hızı seri port monitörüyle neden eşleşmeli?

Seri iletişimde ESP32 ile bilgisayar birbirini ortak bir saat sinyali olmadan dinler. Bu yüzden iki tarafın da saniyede kaç sinyal değişimiyle konuşulacağı konusunda anlaşmış olması gerekir. Bu hıza baud denir. Kodundaki Serial.begin(115200) satırı ESP32 tarafının hızını belirler, seri port monitöründeki hız seçimi ise bilgisayar tarafının hızını belirler. İkisi aynı değilse bilgisayar gelen sinyalleri yanlış aralıklarla okur.

Belirti genellikle şu ikisinden biridir: monitörde ⸮ ya da rastgele semboller görünür, ya da ekran boş kalır. Kartın çalışıp çalışmadığını bu çıktıdan anlayamazsın. Oysa sorun Wi-Fi'de değil, yalnızca iki tarafın hızındadır. Bu yazıdaki örnekte 115200 kullanılıyor; başka bir değer seçmek de mümkündür, önemli olan iki tarafın aynı değeri taşımasıdır.

Düzeltmek için şu adımları izle:

  1. Arduino IDE'de seri port monitörünü aç.
  2. Monitördeki hız seçeneğini koddaki değere, yani 115200'e ayarla.
  3. Kartın programı baştan çalıştırması için üzerindeki EN ya da RESET tuşuna bas.

Son adım önemlidir: kart bağlantı mesajlarını açılışta yazdığı için, hızı düzelttikten sonra yeniden başlatmazsan bu mesajları kaçırmış olabilirsin. Çıktı hâlâ gelmiyorsa Araçlar menüsünde doğru kartın ve doğru portun seçili olduğunu da kontrol et.

ESP32 Wi-Fi'ye bağlanmıyorsa kontrol edilecek üç nokta

Bağlantı kurulamadığında sırayla şu üç noktaya bak. Çoğu durumda sorun bunlardan birindedir.

1. SSID ve parola doğru mu?

Ağ adı ve parola karakter karakter aynı olmalıdır. Büyük küçük harf farkı, kopyalarken gelen görünmez bir baştaki ya da sondaki boşluk, ağ adındaki Türkçe karakterler ve benzer görünen harflerin karışması sık görülen nedenlerdir. Ağ adını elle yazmak yerine telefonundaki ya da modem arayüzündeki hâlinden kopyalayıp tırnak içinde boşluk kalmadığından emin ol. Şüphe duyuyorsan sınama için ağ adı sade, Türkçe karakter içermeyen bir ağ kullanabilirsin.

2. Ağ ESP32'nin desteklediği bantta mı?

Espressif'in resmî dokümantasyonuna göre klasik ESP32 Wi-Fi'yi 2.4 GHz bandında kullanır. Router ya da telefonun hotspot'u yalnızca 5 GHz yayın yapıyorsa kart o ağı göremez ve bağlanamaz. Çift bantlı modemlerde iki bant bazen aynı ağ adıyla yayınlanır; bu durumda hangi banda bağlanacağını cihaz seçer. Modem ayarlarından iki bandın adlarını ayırmak (örneğin sonuna 2G ve 5G eklemek) hangi ağa bağlandığını netleştirir. Telefonunun hotspot ayarlarında bant seçeneği varsa 2.4 GHz'i seçebilirsin.

Bir sınır var: ESP32 ailesinde farklı çip varyantları bulunur ve bant desteği varyanta göre değişebilir. Elindeki kartın hangi çiple geldiğini öğrenip o modelin dokümantasyonuna bakmak en güvenli yoldur.

3. Seri hız eşleşiyor mu?

Bağlantı aslında kurulmuş olabilir, ama monitördeki hız yanlışsa IP adresi ya da durum mesajları okunaklı görünmez. Bu yüzden önceki bölümdeki hız ve yeniden başlatma adımlarını, bağlanamıyor sonucuna varmadan önce mutlaka uygula.

Seri port çıktısına bakarak üç durumu ayırma: teşhis kontrol listesi

Bağlantı sorununu çözmenin en hızlı yolu, seri port monitöründe tam olarak ne gördüğüne bakmaktır. Aşağıdaki tablo, görülen çıktıyı en olası nedene ve ilk bakılacak yere eşler.

Görülen çıktıBüyük olasılıkla nedenÖnce bakılacak yer
Hiç çıktı yok ya da anlamsız karakterlerSeri hız uyuşmazlığı, yanlış port ya da kart seçimi, kartın yeniden başlatılmamasıMonitördeki hız ile koddaki Serial.begin değeri, araçlar menüsündeki port ve kart seçimi, kartın reset düğmesi
Noktalar akıyor ama bağlanılamıyor, zaman aşımı mesajı geliyorSSID ya da parola hatası, desteklenmeyen bant, zayıf sinyalKoddaki ağ adı ve parola (büyük küçük harf dahil), modemin yayın bandı, kartın modeme uzaklığı
"Bağlandı" yazıyor ama IP görünmüyor ya da 0.0.0.0 yazıyorIP'nin durum kontrolü yapılmadan erken okunması, bekleme döngüsünün tamamlanmaması, adres atamasının henüz bitmemiş olmasıBekleme döngüsünün WiFi.status() sonucunu gerçekten beklediği, IP satırının döngüden sonra yazdırıldığı

Kontrol sırası

  1. Hız ve port: Monitörün hızını koddaki değere eşitle, doğru portu ve kartı seç, ardından kartı yeniden başlat.
  2. Ağ bilgisi: SSID ve parolayı tırnak içinde, boşluk ve harf farkına dikkat ederek yeniden yaz.
  3. Bant: Modemin yayın bandının kartının desteklediği bantla uyuştuğunu, kartının dokümantasyonundan doğrula. Gerekirse telefonundan açtığın bir paylaşımlı ağla dene.
  4. Bekleme akışı: Bağlantı durumunu kontrol eden döngü bitmeden IP'yi yazdırma. Döngüden sonra birkaç saniye geçmesine rağmen adres yoksa kartı ve modemi yeniden başlatıp çıktıyı baştan izle.
  5. Sinyal: Kartı modeme yaklaştır ve yeniden dene.

Bu sırayı her seferinde baştan uygulamak, tahmin yürütmek yerine tek bir değişkeni ayırarak ilerlemeni sağlar. Seri monitördeki her satır donanımın sana verdiği bir ipucudur; bağlantı kurulduğunda ekrandaki IP adresi de ilk somut çıktın olacaktır.

Bu içerik aradığın cevabı verdi mi?
Yanıtın, hangi yazıları geliştirmemiz gerektiğini anlamamıza yardımcı olur.
Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

Bu konudan sonra ne okuyabilirsin?

Tüm yazılar

İlgili Eğitimler

Berk Keskin, yazılım geliştirici ve eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; İzmir Ekonomi Üniversitesi'ni bölüm birincisi ve yüksek şeref öğrencisi olarak tamamladı. Bugün yalnızca eğitim vermekle kalmıyor, sektörde aktif olarak yazılım projeleri geliştiriyor ve gerçek dünya deneyimini birebir derslerine taşıyor. Ezberden uzak, mühendislik zihniyetini merkeze alan sürdürülebilir öğrenme sistemleri tasarlayarak sorgulayan, üreten ve problem çözebilen yeni nesil yazılımcılar yetiştiriyor.

Sektörel Deneyim & Projeler

  • Ticarify Entegrasyon Yazılım logosu CEO Ticarify Entegrasyon YazılımPazaryerleri ve e-ticaret sitelerine otomatik e-fatura kesimi, sipariş ve kargo takibi hizmetleri sunan e-Dönüşüm platformunun API mimarisini ve yazılım ekibini yönetmektedir.
  • Benim Düğünüm logosu CEO Benim DüğünümDijital etkinlik ve anı paylaşım platformu.
  • Siberdizayn logosu Yazılım Ekibi Lideri SiberdizaynYüksek anlık oyuncu trafiğine sahip oyun kontrol panelleri ve sunucu altyapıları geliştiren yazılım ekibine liderlik etmektedir.
  • MEDYOGRAFYA 360° Dijital Çözümler logosu Dijital Strateji Lideri MEDYOGRAFYA 360° Dijital ÇözümlerŞirketlerin dijital çözümlerde uzun vadede nasıl ilerlemesi gerektiği ve dijital dönüşüm süreçlerinin yönetilmesine destek olmaktadır.
  • İzmir Ekonomi Üniversitesi logosu Danışma Kurulu Üyesi İzmir Ekonomi ÜniversitesiMezun olduğu üniversitesinde, Bilgisayar Programcılığı bölümünün akademik müfredatını güncel sektör ihtiyaçlarına göre şekillendirmek adına Danışma Kurulu'nda görev almaktadır.
WhatsApp Hemen Ara