Merhaba!
Bugün Nodemcu’ya kütüphane aktarmayı ve internete bağlayamayı deneyeceğiz.
Nodemcu’ya nasıl kütüphane aktarılır?
Bugün Nodemcu’yu İnternete bağlayacağımız için Nodemcu’ya yazılmış kablosuz bağlantı kodlarını tekrar yazmadan hazır bir şekilde Nodemcu’ya aktarabiliriz. Hazırlanan kodları kendi kodlarımıza entegre etmek için kullanılan yöntemlerden bir tanesi de kütüphanedir. Kütüphanelerin amacı: kodların karmaşıklığını indirmek, daha hızlı compile ve yükleme yapmaktır.
Kütüphane kurmak için öncelikle kuracağımız kütüphanenin ismini bilmek ve Arduino IDE tarafında olması gerekiyor. Eğer entegre edilecek kütüphane yok ise bunu İnternet’den indirip kurmamız gerekiyor. Bizim kullanacak olduğumuz kütüphaneler genelde ilk başta Nodemcu’yu Arduino IDE / Kart Yöneticisi kısmına kurarken ki kütüphaneler olacağı için herhangi bir extra kütüphane kurmayacağım.
Nodemcu’ya Wi-Fi özelliğini aktarmamız için “ESP8266WiFi.h” kütüphanesini kodumuza aktarmamız gerekiyor.
Yazacağımız kodun tamamını değil, parçacıklarını teker teker yazıp en sonunda ise birleşmiş halini yazacağım. Anlamanız için ister parçacıklara, isterseniz de ana koda bakabilirsiniz.
Artık başlayabiliriz!
Boş bir Arduino sayfası açtıktan sonra en üst kısmına şu kodu yazalım:
#include <ESP8266WiFi.h>
#include: Dahil etmek, aktarmak demektir. Nodemcu’ya Wi-Fi özelliğini kazandırmak için <ESP8266WiFi.h> kütüphanesini Nodemcu’ya dahil ediyoruz.
Kullanımı ise şu şekilde olacaktır:
#include <Kütüphaneİsmi.h>
veya #include "Kütüphaneİsmi.h"
şeklinde olacaktır.
Kütüphanemizi ekledikten sonra setup() kısmındaki yazılıma geçelim.
İlk önce Nodemcu’nun internete bağlandığını anlamamız için Seri haberleşme ekranını başlatmamız gerekiyor. Seri haberleşme ekranını başlatmak için şu kodu yazalım:
Serial.begin(115200);
Seri haberleşmeyi başlattıktan sonra bir kaç saniye beklememiz gerekiyor. Bunun sebebi ise kodu Nodemcu’ya yükledikten sonra Seri haberleşme ekranını açana kadar aradaki geçen süreyi tamamlamaktır. Seri haberleşmeyi başlattıktan sonra araya 5 sn kadar bekleme süresi ekliyorum. Bekleme süresi için ise şu kodu yazalım:
delay(5000);
Eğer Nodemcu önceden bir ağa bağlanmışsa bu bağlantıyı koparmamız gerekiyor. Bu kodu yazmamızın sebebi aslında bi nevi önlem almaktır.
Var olan bağlantıyı koparmak için ise şu kodu yazalım:
WiFi.disconnect();
Bağlantıyı kopardığımıza göre artık Wi-Fi’ye bağlanmasına bir kaç adım kaldı. Şimdi Nodemcu’nun hazır olduğuna dair bize bilgi vermesini istiyoruz:
Serial.println("Hazirim!");
Evet şimdi her şey hazır. Sadece Wi-Fi bağlantısını sağlamamız gerekiyor. Çevredeki Wi-Fi ağlarından birisinin ismini ve şifresini bir alt satırdaki göstereceğim kod parçasının içine yazacağız:
WiFi.begin("İsmi","Şifresi");
Eğer isim ve şifresini yanlış yazarsanız Wi-Fi ağına bağlanmayacaktır. Yani küçük ve büyük harflere dikkat etmeniz gerekmektedir. Eğer bağlanacak olduğunuz Wi-Fi bağlantısına çok kişi bağlanmış ise trafik olacağından dolayı bağlanmayabilir ya da çok bekleyebilirsiniz.
Bu işlemden sonra Nodemcu girdiğiniz bilgilerdeki ağa bağlanmaya çalışacaktır. Bu ağa bağlanma süreci 5-1o saniye sürecektir. Bu sebeple anında bağlanamayacağı için bağlantı durumunu sürekli kontrol etmesini ve bize bilgi vermesini istiyoruz. Onu da şu şekilde yapacağız:
WiFi.status()
komutu bu işe yarıyor. Bu komut bize Wi-Fi bağlantı durumunu kontrol edip, bize söylüyor. Eğer bağlandıysa WL_CONNECTED
değerini veriyor.
Bu aşamadan sonra yapacağımız şey sürekli bunun kontrolünü sağlamaktır. Bunu while()
döngüsü ile yapacağım.
while(WiFi.status() != WL_CONNECTED)
bu kod parçası Wi-Fi bağlantısını kontrol eder. Wi-Fi’ye bağlantısı olmadığı zaman, yani WL_CONNECTED
değeri olmadığı zaman, döngünün içerisine girecek, halen bağlantı yoksa döngü içerisinde kalmaya devam edecek ve eğer bağlantı sağlanmışsa döngüden çıkacak ve bir sonraki koddan başlayacaktır.
Yazılımı karta yükledikten sonra anında bağlantı olmayacağı için, program ilk başta while döngüsünün içerisinde kalacaktır. Taki Wi-Fi bağlantısını kurulana kadar.
Wi-Fi bağlantısı olmadığı zaman, program while döngüsünün içinde kalacağı için, döngü içerisinde olduğunda bize haber verip, ekrana bir şeyler göstermesini istiyorum.
Onun için ise şu kodları ekliyorum:
while(WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } // Eğer bir ağa bağlanmışsa buradan başlar.
Birinci satırdaki kodun ne işe yaradığından bahsetmiştim. Üçüncü satırda ise delay(500);
komutu döngü içine girildiğinde 0.5 saniye bekleme yani gecikme süresi oluşturup yine bağlantı kurulmasını bekliyor. Eğer bu süreyi kısa tutarsak, seri haberleşme ekranındaki tepkiyi hızlı görebiliriz. Ben genelde 0.5 saniyeyi yeterli buluyorum. Sizden isteğim bu zaman birimini değiştirerek tepkide nasıl bir değişiklik olduğunu uygulamalı olarak anlamanızdır.
Birde buna özel olarak “.” işareti ekleyerek daha güzel bir görüntü elde etmeye çalıştım. Tıpkı bir “loading..” ekranı gibi oldu 🙂
Tekrar özet geçersek eğer bağlantı yoksa döngü içerisine girip, 0.5 saniye gecikme süresi oluşturup ve bir adet yan tarafa nokta koyup, tekrar bağlantı durumunu kontrol edecektir. Yine bağlantı yoksa tekrar aynısını yapacaktır. Eğer bağlantı varsa bu sefer döngüye girmez ya da döngüden çıkar ve while() döngüsünün bittiği kısmın bir alt satırından başlar. Yani yukarıda bulunan yazılımda 6.satırdan itibaren devam edecektir.
6.satırdan itibaren çalışırsa bağlandı demektir. Çünkü while() döngüsünün şartını belirleyen while(WiFi.status() == WL_CONNECTED)
olacağı için döngüye girmeyecektir. Çünkü biz
while(WiFi.status() != WL_CONNECTED)
yaptığımız zaman, Eğer bağlantı durumu WL_CONNECTED
olmazsa döngüye girecektir. Ama bağlantı sağlandığı zaman bu değer WL_CONNECTED
olacağı için şart sağlanmadığından dolayı döngüye girmeyip, 6.satırdan itibaren çalışmaya başlayacaktır. Eğer 6.satıra gelmezse, zaten bağlantı yok demektir. Yani while() döngüsünün bittiği kısmın hemen altına “Bağlantı kuruldu” yazarsak, işlemimiz tamamlanacaktır.
Lütfen Türkçe karakter yazmayalım. Çünkü ekranda bir hata çıkabilir 🙂
Serial.println("Internete baglandim!");
Son olarak kodu en son ki haliyle yazarak işlemi bitiriyorum.
Bu arada yazdığım kod bir defa çalışıp, sonlanacaktır. Çünkü kodumu setup() kısmına yazdım.
#include <ESP8266WiFi.h> void setup() { Serial.begin(115200); delay(5000); WiFi.disconnect(); Serial.println("Basladi!"); WiFi.begin("İsmi","Sifresi"); while(WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("Internete baglandim!"); } void loop() { }
Sevgilerimle 🙂
Merhaba Resu Hocam bu yazı seti devam eder umarım… 🙂
Bekliyoruz.
Merhaba, bu sete sonuna kadar devam edeceğim.
Sevgilerimle 🙂
Hocam selamlar, yazıda ilettiğiniz gibi ilerliyorum ancak Arduino IDE port listesinde NodemCu bağladığım portu göremiyorum hangi girişe takarsam takayım Port kısmı pasif görünüyor. Elimdeki diğer kartları görüyor(Nano,Uno vb ). Sorun ne olabilir acaba?
Selamlar, port görmemesi kart ile kablo arasında bir sıkıntıdan kaynaklandığı gibi sürücü (CH340) eksikliğinden de kaynaklanabilir.
İlk önce sürücü kontrolünü ardından ise kabloyu, modülü ve soketi kontrol etmenizi öneririm.
Yine sorun yaşarsanız, buradan bana yazabilirsiniz 🙂