Nodemcu #4

Merhaba!

Bugün IP ve Sunucu adreslerini, isimlerini öğreneceğiz. Bu bilgiler Web Sunucu kurmamızda işe yarayacak.

Haydi başlayalım!

#include <ESP8266WiFi.h>

void setup() 
{
  Serial.begin(115200);
  delay(2000);
  Serial.println("Basladim!");
  WiFi.begin("WiFi_Adı","WiFi_Sifresi");

  while(WiFi.status() != WL_CONNECTED)
  {
    delay(100);
    Serial.print(".");
  }
}

void loop() 
{
  Serial.print("\nIP adresim:");
  Serial.println(WiFi.localIP());
  Serial.print("Sunucum:");
  Serial.println(WiFi.hostname());
  delay(2000);
}

Tüm kod satırlarını açıklayalım:

#include <ESP8266WiFi.h>

Nodemcu’ya Wi-Fi özelliğini kazandırmak için <ESP8266WiFi.h> kütüphanesini Nodemcu’ya dahil ediyoruz.


Serial.begin(115200);

IP adresimizi, sunucu bilgilerini öğrenmek için seri haberleşmeyi başlatmak gerekiyor. Ben genelde “115200 baud” hızını kullanıyorum.


delay(2000);

2 sn geciktirme işlemi yapıyoruz. Bu sayede kodu yüklediğimiz zaman, seri haberleşme ekranını açana kadar yazılımı 2 sn kadar geciktirmiş oluyoruz.


Serial.println("Basladim!");

Seri haberleşme ekranından “Basladim!” diye bir mesaj veriyor. Bu arada seri haberleşme ekranına “Türkçe karakter” yazamıyoruz.


WiFi.begin("Wi-Fi_Adı","Wi-Fi_Sifresi");

İçerisine yazdığımız bilgiler (Wi-Fi Adı ve Şifresi) ile bir ağa bağlanmaya çalışacaktır.


while(WiFi.status() != WL_CONNECTED) 
{ 
  delay(100); 
  Serial.print(".");
}

Ağa bağlanma süreci bir kaç saniye sürecektir. Bu sebeple anında bağlanamayacağı için bağlantı durumunu sürekli kontrol etmesini ve bize bilgi vermesini istiyoruz. WiFi.status()  komutu bu işe yarıyor. Bu komut bize Wi-Fi bağlantı durumunu kontrol edip, bize bilgi veriyor. Bağlandıysa WL_CONNECTED değerini, bağlanmadıysa hiçbir değer vermiyor.

Bu aşamadan sonra yapacağımız şey sürekli (bağlanana kadar) bunun kontrolünü sağlamaktır. Bunu ise while() döngüsü ile yapacağız.

while(WiFi.status() != WL_CONNECTED)  ile de Wi-Fi bağlantısı kurulmamışsa, yani Wi-Fi bağlantısı WL_CONNECTED değerine eşit değilse, döngünün içerisinde dönüp duracak ve loop() döngüsüne gitmemiş olacak.

Eğer bu döngüyü eklemezsek, void setup()  fonksiyonunda işlem bittikten hemen sonra, ağa bağlanma durumu gözetmeksizin void loop() döngüsüne geçecek ve haliyle hata yada eksik bilgiler alacağız. Çünkü ağa bağlanıp, bağlanmadığını bilmiyoruz. Bende döngü içerisinde biraz geciktirme ve nokta işareti ekleyerek görsellik sağlamış oldum. Her döngü içerisine girdiği zaman, biraz geciktirme ve bir adet nokta ekleyerek devam edecek. Tıpkı bir “loading ekranı” gibi olacak.


Serial.print("\nIP adresim:"); 
Serial.println(WiFi.localIP()); 
Serial.print("Sunucum:"); 
Serial.println(WiFi.hostname()); 
delay(2000);

Birinci satırda ekrana bir adet boş satır (\n) ekleyip, hemen yanına “IP adresim:” adlı bir metinsel ifade yazdırıyoruz. Boş satır eklememizin sebebi bir önceki ve sonraki değerler arasında boşluk yaratıp, işimizi kolaylaştırmasını sağlamaktır. İkinci satırda ise “IP adresim:” kısmının yanına gelecek değeri (Local IP / Yerel IP) yazdırıyoruz. Üçüncü satırda ise yine “Sunucum:” adlı bir metinsel ifade yazdırıyoruz. Dördüncü satırda ise “Sunucum:” adlı metinsel ifadenin yanına gelecek olan değeri (Hostname / Sunucu) yazdırıyoruz. Beşinci satırda ise 2 sn’lik bir geciktirme koyarak, ekrana gelen bilgilerin 2 sn’lik bir gecikme ardından gelmesini istiyoruz.


Evet, bunların sonucunda aşağıdaki gibi sizde Sunucu ismini ve IP adresini görebilirsiniz.

 

Eğer bu bilgileri alamazsanız şunlara dikkat etmenizde fayda var;

  1. Kodu yükleme hızınızın miktarına bakınız. (Genelde 115200 kullanıyorum. Kart dizgisi üzerinde desteklediği yükleme hızı yazmaktadır.)
  2. Yazılımdaki seri haberleşme ekranını başlattığınız hız ile seri port ekranındaki hızınızın aynı olmaması gerekiyor.
  3. Wi-Fi adı ve şifresini doğru yazdığınızdan emin olup, boşluk bırakmadan yazınız.
  4. Kodun yüklendiğinden ve donanımların doğru çalıştığından emin olunuz.

Sevgilerimle 🙂

You May Also Like

Comments

Leave a Comment

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>