ESP32 Statik IP Adresi Nasıl Ayarlanır?

Bu yazımızda, ESP32 statik IP adresi ayarlamayı gösteriyoruz. ESP32’nizle bir web sunucusu veya Wi-Fi istemcisi çalıştırıyorsanız ve kartınızı her yeniden başlattığınızda yeni bir IP adresi alıyorsa, statik/sabit bir IP adresi atamak için bu öğreticiyi takip edebilirsiniz.

Daha önce web üzerinden NodeMCU ile röle kontrolü yaptığımız uygulamada kullanılan tüm kodlar ESP32 için revize edildi ve yazı için örnek olarak kullanıldı.

Aşağıdaki kodu Arduino IDE’nize kopyalayın, ancak hemen yüklemeyin. İşinize yaraması için bazı değişiklikler yapmanız gerekiyor. Eğer bu kodda bazı yerleri değiştirip direk yüklerseniz 192.168.1.184 ip adresi otomatik olarak atanacaktır fakat modeminizde yayınlanan ip adresine göre burada sorun çıkabilir örneğin modeminiz sadece 192.168.1.50 arasında yayın yapıyorsa ya da 10.0.0.1 gibi değerlerde yayın yapıyorsa buna göre değişiklik yapmanız gerekmektedir.

#include <WiFi.h>


const char* ssid     = "Wifi ağ adınızı girin";
const char* password = "Wifi şifrenizi girin";

WiFiServer server(80);


String header;

String output26State = "off";
String output27State = "off";


const int output26 = 26;
const int output27 = 27;

// statik ip adresi
IPAddress local_IP(192, 168, 1, 184);
// gateway ip (modem arayüzüne girişte kullandığınız ip adresi)
IPAddress gateway(192, 168, 1, 1);

IPAddress subnet(255, 255, 0, 0);
IPAddress primaryDNS(8, 8, 8, 8);   //isteğe bağlı google dnsleri
IPAddress secondaryDNS(8, 8, 4, 4); 
void setup() {
  Serial.begin(115200);

  pinMode(output26, OUTPUT);
  pinMode(output27, OUTPUT);
  
  digitalWrite(output26, LOW);
  digitalWrite(output27, LOW);

  
  if (!WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS)) {
    Serial.println("sta hatasi");
  }
  
 
  Serial.print("Baglaniliyor: ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  
  Serial.println("");
  Serial.println("WiFi baglandi.");
  Serial.println("IP adresi: ");
  Serial.println(WiFi.localIP());
  server.begin();
}

void loop(){
  WiFiClient client = server.available();   

  if (client) {                             
    Serial.println("Yeni istemci.");          
    String currentLine = "";                
    while (client.connected()) {            
      if (client.available()) {             
        char c = client.read();             
        Serial.write(c);                    
        header += c;
        if (c == '\n') {                    

          if (currentLine.length() == 0) {
            
          
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println("Baglanti: kapali");
            client.println();
            
         
            if (header.indexOf("GET /26/acik") >= 0) {
              Serial.println("GPIO 26 acik");
              output26State = "on";
              digitalWrite(output26, HIGH);
            } else if (header.indexOf("GET /26/acik") >= 0) {
              Serial.println("GPIO 26 kapali");
              output26State = "off";
              digitalWrite(output26, LOW);
            } else if (header.indexOf("GET /27/acik") >= 0) {
              Serial.println("GPIO 27 acik");
              output27State = "on";
              digitalWrite(output27, HIGH);
            } else if (header.indexOf("GET /27/kapali") >= 0) {
              Serial.println("GPIO 27 kapali");
              output27State = "off";
              digitalWrite(output27, LOW);
            }
            
           
            client.println("<!DOCTYPE html><html>");
            client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
            client.println("<link rel=\"icon\" href=\"data:,\">");
            
            client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
            client.println(".button { background-color: #4CAF50; border: none; color: white; padding: 16px 40px;");
            client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
            client.println(".button2 {background-color: #555555;}</style></head>");
            
            
            client.println("<body><h1>ESP32 devreyakan</h1>");
            
        
            client.println("<p>GPIO 26 - Durumu " + output26State + "</p>");
                
            if (output26State=="off") {
              client.println("<p><a href=\"/26/on\"><button class=\"button\">AC</button></a></p>");
            } else {
              client.println("<p><a href=\"/26/off\"><button class=\"button button2\">KAPAT</button></a></p>");
            } 
               
             
            client.println("<p>GPIO 27 - Durumu " + output27State + "</p>");
                
            if (output27State=="off") {
              client.println("<p><a href=\"/27/on\"><button class=\"button\">AC</button></a></p>");
            } else {
              client.println("<p><a href=\"/27/off\"><button class=\"button button2\">KAPAT</button></a></p>");
            }
            client.println("</body></html>");
            
          
            client.println();
          
            break;
          } else { 
            currentLine = "";
          }
        } else if (c != '\r') {  
          currentLine += c;     
        }
      }
    }
    
    header = "";
    
    client.stop();
    Serial.println("Istemci bagli degil.");
    Serial.println("");
  }
}

Ağ Kimlik Bilgilerinizi Ayarlama

Aşağıdaki satırları ağ kimlik bilgilerinizle değiştirmeniz gerekir: SSID ve parola.

const char* ssid     = "Wifi ağ adınızı girin";
const char* password = "Wifi şifrenizi girin";

Statik IP Adresinizi Ayarlama

setup() ve loop() fonksiyonlarının dışında, aşağıdaki değişkenleri kendi statik IP adresiniz ve karşılık gelen ağ geçidi IP adresinizle tanımlamalısınız.

Varsayılan olarak, bu kod, 192.168.1.1 ağ geçidinde çalışan 192.168.1.184 IP adresini atar.

// statik ip adresi
IPAddress local_IP(192, 168, 1, 184);
// gateway ip (modem arayüzüne girişte kullandığınız ip adresi)
IPAddress gateway(192, 168, 1, 1);

IPAddress subnet(255, 255, 0, 0);
IPAddress primaryDNS(8, 8, 8, 8);   //isteğe bağlı google dnsleri
IPAddress secondaryDNS(8, 8, 4, 4); 

Önemli: yerel ağınızda ve ilgili ağ geçidinde mevcut bir IP adresi kullanmanız gerekir.

setup()

setup() içinde, konfigürasyonları ESP32’nize atamak için WiFi.config() yöntemini çağırmanız gerekir.

 if (!WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS)) {
    Serial.println("sta hatasi");
  }

Not: primaryDNY ve secondaryDNS parametreleri isteğe bağlıdır ve bunları kaldırabilirsiniz.

Kodu kartınıza yükledikten sonra, 115200 baud hızında Arduino IDE Seri Monitörü açın, ESP32 kartınızı yeniden başlatın ve daha önce tanımlanan IP adresi kartınıza atanmalıdır.

ESP32 Statik IP Adresi Nasıl Ayarlanır? esp32 statik,statik ip adresi,esp32 statik ip adresi,esp32 sabit ip adresi,esp32 ip adresi

Gördüğünüz gibi, 192.168.1.184 IP adresini yazdırıyor.

ESP32’nize sabit bir IP adresi atamak için bu örneği alıp tüm Wi-Fi projelerinize ekleyebilirsiniz.

MAC Adresi ile IP Adresi Atama

Önceki örneği kullanarak ESP32’ye sabit bir IP adresi atamayı denediyseniz ve işe yaramazsa, ESP32 MAC Adresi aracılığıyla doğrudan yönlendirici ayarlarınızdan bir IP adresi atamanızı öneririz.

Ağ kimlik bilgilerinizi (SSID ve parola) ekleyin. Ardından, sonraki kodu ESP32’nize yükleyin:

#include <WiFi.h>


const char* ssid     = "wifi ağ isminiz";
const char* password = "wifi ağ şifreniz";


WiFiServer server(80);

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


  Serial.print("Baglaniliyor: ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }


  Serial.println("");
  Serial.println("WiFi baglandi.");
  Serial.println("IP adresi: ");
  Serial.println(WiFi.localIP());
  server.begin();


  Serial.println("MAC adresi: ");
  Serial.println(WiFi.macAddress());
}

void loop() {

}

setup() kısmında ağınıza bağlandıktan sonra, Seri Monitörde ESP32 MAC Adresini yazdırır:

ESP32 Statik IP Adresi Nasıl Ayarlanır? esp32 statik,statik ip adresi,esp32 statik ip adresi,esp32 sabit ip adresi,esp32 ip adresi

Bizim durumumuzda, ESP32 MAC Adresi B4:E6:2D:97:EE:F1’dir. MAC Adresini kopyalayın, çünkü ona birazdan ihtiyacınız olacak.

Modem Ayarları

Modem yönetici sayfanızda oturum açarsanız, bir ağ cihazına IP adresi atayabileceğiniz bir sayfa/menü olmalıdır. Her yönlendiricinin farklı menüleri ve konfigürasyonları vardır. Bu nedenle, mevcut tüm yönlendiriciler için bunun nasıl yapılacağına dair talimatlar sağlayamıyoruz.

Özetle, yönlendirici yapılandırma menüsüne giderseniz, istediğiniz IP adresini ESP32 MAC adresinize atayabilmeniz gerekir (örneğin B4:E6:2D:97:EE:F1).

Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.