ESP32 ile Wi-Fi ağınızı genişletmek (Wi-Fi Repeater/Menzil Genişletici yapmak) hem çok ekonomik hem de oldukça keyifli bir projedir. Hatta öyle fazladan koda bile ihtiyacınız olmaz. Wifi bağlantınızı yaptığınızda ağınız direk paylaşıma açılır. Yapmanız gereken AP ve STA modlarını aynı anda açıp genişletmek istediğiniz wifi ağına bağlanmaktır.

Örnek kod:
//www.yenidir.com
#include <Arduino.h>
#include <WiFi.h>
// Bağlanılacak Ana Modemin Wi-Fi Bilgileri
#define ANA_AG_ADI "Ev_İnternet_Adı"
#define ANA_AG_SIFRE "Ev_İnternet_şifresi"
// ESP32'nin Oluşturacağı Yeni Wi-Fi Ağının Bilgileri
#define AP_AG_ADI "ESP32-WIFI-DAGITICI"
#define AP_AG_SIFRE "12345678"
// Erişim Noktası (AP) Ağ Ayarları
IPAddress ap_ip(192, 168, 4, 1); // ESP32'nin kendi IP adresi
IPAddress ap_maske(255, 255, 255, 0); // Alt ağ maskesi
IPAddress ap_baslangic_ip(192, 168, 4, 2); // Bağlanan cihazlara verilecek ilk IP
IPAddress ap_dns(8, 8, 8, 8); // Başlangıç DNS adresi (Bağlanınca güncellenecek)
// Ağ olaylarını yakalayan fonksiyonun ön tanımı
void agOlaylariniYakala(arduino_event_id_t olay, arduino_event_info_t bilgi);
void setup() {
Serial.begin(115200);
Serial.setDebugOutput(true);
// Ağ olay dinleyicisini başlat
Network.onEvent(agOlaylariniYakala);
// ESP32'nin kendi Wi-Fi ağını (AP) hazırlayıp başlatalım
WiFi.AP.begin();
WiFi.AP.config(ap_ip, ap_ip, ap_maske, ap_baslangic_ip, ap_dns);
WiFi.AP.create(AP_AG_ADI, AP_AG_SIFRE);
if (!WiFi.AP.waitStatusBits(ESP_NETIF_STARTED_BIT, 1000)) {
Serial.println("[HATA] Erişim Noktası (AP) başlatılamadı!");
return;
}
// Ana modeme bağlanma işlemini başlat
WiFi.begin(ANA_AG_ADI, ANA_AG_SIFRE);
}
void loop() {
// Arka plandaki ağ işlemlerini engellememek için uzun süreli gecikme
delay(20000);
}
// Tüm Wi-Fi bağlantı süreçlerini yöneten fonksiyon
void agOlaylariniYakala(arduino_event_id_t olay, arduino_event_info_t bilgi) {
switch (olay) {
// --- ANA MODEM (STA) DURUMLARI ---
case ARDUINO_EVENT_WIFI_STA_START:
Serial.println("[İSTASYON] Wi-Fi istemci modu başlatıldı.");
break;
case ARDUINO_EVENT_WIFI_STA_CONNECTED:
Serial.println("[İSTASYON] Ana modeme fiziksel bağlantı sağlandı.");
break;
case ARDUINO_EVENT_WIFI_STA_GOT_IP:
Serial.println("[İSTASYON] Ana modemden IP adresi alındı!");
Serial.println(WiFi.STA);
// Ana modemin IP'sini (Gateway) alıp DNS olarak atıyoruz
ap_dns = WiFi.gatewayIP();
Serial.print("[SİSTEM] Yeni DNS Adresi Ayarlandı (Ana Modem IP): ");
Serial.println(ap_dns);
// Yeni DNS bilgisini alt cihazlara dağıtmak için AP'yi güncelliyoruz
WiFi.AP.config(ap_ip, ap_ip, ap_maske, ap_baslangic_ip, ap_dns);
// İnternet paylaşımını (NAPT) aktif et
WiFi.AP.enableNAPT(true);
Serial.println("[SİSTEM] İnternet paylaşımı (NAPT) AKTİF.");
break;
case ARDUINO_EVENT_WIFI_STA_LOST_IP:
Serial.println("[UYARI] Ana modemden alınan IP adresi kayboldu!");
WiFi.AP.enableNAPT(false);
break;
case ARDUINO_EVENT_WIFI_STA_DISCONNECTED:
Serial.println("[UYARI] Ana modemle bağlantı kesildi!");
WiFi.AP.enableNAPT(false);
break;
case ARDUINO_EVENT_WIFI_STA_STOP:
Serial.println("[İSTASYON] İstemci modu durduruldu.");
break;
// --- ESP32 ERİŞİM NOKTASI (AP) DURUMLARI ---
case ARDUINO_EVENT_WIFI_AP_START:
Serial.println("[DAĞITICI] ESP32 Wi-Fi ağı yayına başladı.");
Serial.println(WiFi.AP);
break;
case ARDUINO_EVENT_WIFI_AP_STACONNECTED:
Serial.println("[DAĞITICI] ESP32 ağına yeni bir cihaz bağlandı.");
break;
case ARDUINO_EVENT_WIFI_AP_STADISCONNECTED:
Serial.println("[DAĞITICI] Bir cihazın ESP32 ağıyla bağlantısı kesildi.");
break;
case ARDUINO_EVENT_WIFI_AP_STAIPASSIGNED:
Serial.print("[DAĞITICI] Bağlanan cihaza IP tanımlandı: ");
Serial.println(IPAddress(bilgi.wifi_ap_staipassigned.ip.addr));
break;
case ARDUINO_EVENT_WIFI_AP_PROBEREQRECVED:
// Sürekli çalışıp konsolu kirletmemesi için gizlendi, isterseniz açabilirsiniz.
// Serial.println("[DAĞITICI] Tarama (Probe) isteği alındı.");
break;
case ARDUINO_EVENT_WIFI_AP_STOP:
Serial.println("[DAĞITICI] ESP32 Wi-Fi ağı durduruldu.");
break;
default:
break;
}
}
Esp32 bağlandığı cihazın ipsini dns olarak alıyor. Ve ağımız problemsiz çalışıyor. Hız olarak bir router kadar olmasa da 5-10 Mbps civarı. Bu sensör ve düşük çözünürlüklü video akışı için gayet yeterli. En önemlisi Arduino ile olması ve kendi kodunuzu da rahatlıkla ekleme şansınızın olması. Sadece router olarak kullanacaksanız github daki martin-ger projesi size uygun olabilir.
Henüz yorum yapılmamış. İlk yorumu siz yapın!