Nodemcu Kullanılarak Wi?fi? I?le IOT (nesneleri?n I?nterneti?) Uygulaması
ESP8266 kullanılarak WiFi ile IOT (Nesnelerin İnterneti) uygulamasının  gerçekleştirilmesi.
Proje kapsamında internet üzerinden 3 adet röle kontrolü ile 220 Vac beslemeli pano ikaz lambası ,evlerde kullanılan lamba ve 220 Vac -> 5 Vdc çeviriciye baÄŸlı buzzerlı fan sistemi kontrol edilecektir. Neden bu proje ? bu soruya cevap verecek olursak arkadaÅŸlar son zamanlarda inetrnet üzerinden röle kontrol edilerek akıllı ev projelerinde ,gömülü sistemlerin bulunduÄŸu cihazların internet üzerinden kontrolü ve verilerin takip edilmesi gibi hizmet sektöründe gün geçtikçe ağırlığı artan IOT sistemlerinin artması beni bu projenin yapımına götürmüÅŸtür.Bu cevaptan sonra isterseniz projeye adım adım baÅŸlayabiliriz arkadaÅŸlar;
GEREKSÄ°NÄ°M PROGRAMLARI
İlk olarak aşağıda verilen linkleri tıklayarak programları indirmek ve linkleri inceleyerek işe başlayabiliriz ,
- HTML,CSS ve Javascript konularında programlama deneyimi olmayan arkadaÅŸlar öncelikle w3schools ifadesine tıklayarak proje çalışmalarına devam etmelidir.
- NodeMCU kartına ait yapılan yazılımın derlenmesi için Arduino IDE ifadesine tıklayarak,
- NodeMCU firmwire güncellemesini NodeMCU- ESP8266 ifadesine tıklayarak inceleyebilirsiniz.
PROJENÄ°N AMACI
Evet arkadaÅŸlar verilen linkten gerek duyduÄŸunuz HTML,CSS ve Javascript komutlarını verilen linkten öÄŸrendiÄŸinizi ve NodeMCU-ESP8266 firmwire ve ESP8266 kütüphanesinin arduino IDE içerisine entegre ettiÄŸinizi kabul ederek proje adımlarına devam edebiliriz.
- NodeMCU kartının özelliklerini ne olduÄŸunu , Wi-Fi iletiÅŸim , Röle kavramlarını öÄŸrenmek.
- NodeMCU kartına ait gömülü yazılım kodları , açık kaynak kodu olarak kullanılarak yazılımda kullanılan komutlarının kullanım amaçlarını öÄŸrenmek.
- NodeMCU kartı kullanılarak internet üzerinden ile nasıl haberleÅŸeceÄŸini göstermek ve öÄŸrenmek.
TEORÄ°K BÄ°LGÄ°LER
NodeMCU Kartı ve Özellikleri Nedir ? ;
Ebatları küçüktür ve en önemlisi açık kaynaklıdır. DüÅŸük enerji ile çalışır üzerinde bulunan baÄŸlantı noktaları ile çevresel elektronik birimler kontrol edilebilir.Üzerinde bulunan Wi-Fi modül (ESP8266-12E) ile IOT yani nesnelerin interneti olarak bilinen cihazların internet üzerinden kontrol edilmesi ve takip edilmesi saÄŸlanır. HTTP kütüphaneleri ile web iÅŸlemleri yapılabilir veya web sunucusu oluÅŸturabilirsiniz. Birkaç programlama dillerine ek olarak Arduino IDE de programlanıp derlenebilir. Ayrıca json, file, timer, pwm, i2c, spi, 1-wire, net, mqtt, coap, gpio, wifi, adc, uart ve system apidestekler. NodeMCU Vin pininden 5 Vdc ile beslenir.
Wi-Fi Ä°letiÅŸim Protokolü Nedir ?
Wi-Fi baÄŸlantısı birçok geliÅŸtirici için günümüzde vazgeçilmez bir tercihtir. Mevcut alt yapısının çok geniÅŸ olması, evlerde/ofislerde yaygın olarak kullanılması ve büyük boyutlu veri aktarımının mümkün olması nedeniyle önemli bir avantaja sahiptir.
WiFi cihazların temelde 3 farklı çalışma modu bulunur: Infrastructure (altyapı) ve Ad-Hoc (iki cihaz arası doÄŸrudan haberleÅŸme). Infrastructure modunun ise iki farklı alt modu vardır: istemci (client) ve istasyon (access point). Ä°stemci olarak internet ağına baÄŸlanan cep telefonu ,Acccess point için ise modem veya router örnek verilebilir. Kullanılan standard IEEE 802.11n ,standardın frekansı 2.4 GHz ve 5GHZ dir ve bu standardın veri transferi ise Maksimum 600 Mbps’dir.
Wi-Fi Modül (ESP8266) Nedir ?
ESP8266 Modülü yapacağınız projede elektronik sistemin internete baÄŸlanmasını saÄŸlar.Bu özelliÄŸi ile gerektiÄŸinde sistemin internete veri göndermesini gerektiÄŸinde ise almanıza olanak saÄŸlamasının yanında elektronik projelerinizin internet üzerinden kontrol edebilmenizi saÄŸlar. 1tl madeni para boyutlarında olması ve maliyetinin uygun olmasından dolayı son zamanlarda çok fazla tercih ediliyor. Bu modül ile 2 mode da çalışabilirsiniz.Bu iki mode da isterseniz Wi-Fi baÄŸlantı noktasına baÄŸlanmak için (Client)kullanabilir, isterseniz bir Wi-Fi noktası yaratabilir(AccessPoint) , veya hem AccessPoint hem Client olarak kullanabilirsiniz.
Bu modül ile çalışmadan önce modül içerisindeki sürümün güncellenmesi gerekiyor.Bunun nedeni her gelen yeni sürüm ile modülün daha da stabil bir hale gelmesidir.
Not: Bu modül (ESP-12E) NodeMCU üzerinde bulunmaktadır.
Röle Nedir ve Ne Ä°ÅŸe Yarar?
Bir röle birçok tipte sınıflandırılır; standart ve genel olarak kullanılan röle, genelde bir anahtar olarak kullanılan elektromıknatıslardan oluÅŸur. Sözlük karşılığı bir ÅŸeyden diÄŸerine geçme eylemi anlamına gelir, aynı anlam bu aygıt için de uygulanabilir; çünkü aygıtın bir tarafından alınan sinyal diÄŸer taraftaki anahtarlama iÅŸlemini kontrol eder. Dolayısıyla röle, devreleri elektromekanik olarak kontrol eden (açıp kapayan) bir anahtardır. Bu cihazın ana çalışması, herhangi bir insan müdahalesi olmadan bir sinyal yardımıyla AÇIK veya KAPALI geçiÅŸ yapmak veya bunlarla teması kesmektir. Esas olarak, düÅŸük güçlü bir sinyal kullanarak yüksek güçlü bir devrenin kontrol edilmesi için kullanılır. Genellikle mikroiÅŸlemcilerden gelen dijital sinyaller ile AC ev aletlerini kontrol etmek gibi yüksek voltaj deÄŸerlerinde çalışan devrenin kontrol edilmesi için kullanılır.
MALZEME LÄ°STESÄ°
Proje kapsamında teorik bilgiler verildikten sonra projenin devamı için gerekli olan malzemeler aÅŸağıdaki tabloda yer verilmiÅŸtir. Burada röle devresi hazır PCB üzerinde satılmaktadır.
MALZEME ADI | MALZEME ADET | MALZEME ADI | MALZEME ADET |
NodeMCU | 1 | Mini USB kablosu | 1 |
5 Vdc Röle Devresi (PCB) | 3 | Nötr 220 Vac Kablo | N |
220 Vac Lamba | 1 | Faz 220 Vac Kablo | N |
Lamba için Duy | 1 | Jumper Kablo | N |
220 Vac İkaz Lambası | 1 | 220 Vac Fiş | 1 |
Buzzer | 1 | 3’lü Priz | *** |
5 Vdc Fan | 1 | *** | *** |
220 Vac -> 5Vdc dönüÅŸtürücü | 1 | *** | *** |
ÅžEMATÄ°K DEVRE
Bu projenin ÅŸematik bölümü fritzing programında çizilmiÅŸtir. Programda çizilen devreye bakılacak olursa NodeMCU D0-> 1. Röleyi, D1-> 2.Röleyi ve D2-> 3.Röleyi tetiklemektedir. 220 Vac beslemenin nötr hattı rölelerin C (Ortak Uç) çıkışına baÄŸlanmıştır.Buna ek olarak lambanın bir ucu 1.rölenin NO (normalde açık ),ikaz lambasının bir ucu 2.Rölenin NO(normalde açık) ve dönüÅŸtürücünün bir ucu NO(normalde açık ) pinine baÄŸlanmıştır. 220 Vac beslemenin faz hattı ise lamba,ikaz lambası ve dönüÅŸtürücünün diÄŸer pinine baÄŸlanmıştır. NodeMCU ise 5Vdc ile beslenmektedir.
KAYNAK KODLARI
Program Adı :WiFi ile Röle kontrolü
Donanım : NodeMCU V1.0
Derleyici : Arduino IDE 1.8.5
MCU : 80 MHz
Yazan : Adil Teoman Kurt
Adres : https://electrolog.blog
*/
#include <ESP8266WiFi.h> // ESP8266 kütüphanesi dahil ediliyor
const char* ssid = “xxxxxxxx”; // Ä°nternet Ağının ismi
const char* password = “yyyyyyyyy”; // internet ağının ÅŸifresi
int RolePin1 = D0; // D0 pini RolePin1 ile eÅŸleÅŸtiriliyor
int RolePin2 = D1; // D1 pini RolePin2 ile eÅŸleÅŸtiriliyor
int RolePin3 = D2; // D2 pini RolePin3 ile eÅŸleÅŸtiriliyor
int RoleDeger1= LOW; // 1.Rölenin durumu lojik-0 yapılıyor
int RoleDeger2= LOW; // 2.Rölenin durumu lojik-0 yapılıyor
int RoleDeger3= LOW; // 3.Rölenin durumu lojik-0 yapılıyor
WiFiServer server(80); // WiFi ağına 80. porttan bağlınılıyor
void setup() {
Serial.begin(115200); //Seri iletişim başlatılıyor ve Baundrate hızı : 115200
delay(10); // 10 ms bekleme
pinMode(RolePin1, OUTPUT); // D0 pini çıkış olarak ayarlanıyor
pinMode(RolePin2, OUTPUT); // D1 pini çıkış olarak ayarlanıyor
pinMode(RolePin3, OUTPUT); // D2 pini çıkış olarak ayarlanıyor
digitalWrite(RolePin1, LOW); // D0 pini lojik-0 olarak ayarlanıyor
digitalWrite(RolePin2, LOW); // D1 pini lojik-0 olarak ayarlanıyor
digitalWrite(RolePin3, LOW); // D2 pini lojik-0 olarak ayarlanıyor
// WiFi ağına baÄŸlanma bölümü
Serial.println();
Serial.println();
Serial.print(“Baglanilan ag :”);
Serial.println(ssid);
WiFi.begin(ssid, password); // Bağlanılan Ağın adı ve şifresi girilen internet ağına bağlanılıp ardından WiFi başlatılıyor
while (WiFi.status() != WL_CONNECTED) { // AÄŸa baÄŸlanılıncaya kadar “.” gönderilir
delay(500);
Serial.print(“.”);
}
Serial.println(“”);
Serial.println(“WiFi baglanildi…”);
//Server başlatılıyor
server.begin();
Serial.println(“Server baslatildi….”);
// NodeMCU ait IP adresi alınıyor
Serial.print(“Baglanmak icin kullanilacak IP : “);
Serial.print(“http://”);
Serial.print(WiFi.localIP()); // Yerel aÄŸ içerisindeki IP alınıyor
Serial.println(“/”);
}
void loop() {
//NodeMCu WiFi agina baglanilip baglanilmadagi kontrol ediliyor
WiFiClient client = server.available();
if (!client) {
return;
}
// NodeMCU veri gelnceye kadar bekleme bölümü
Serial.println(“Yeni cihaz”);
while(!client.available()){
delay(1);
}
// Url Adresin ilk satırının alındığı bölüm
String request = client.readStringUntil(‘r’);
Serial.println(request);
client.flush();
// 1.Rölenin ilk satırına göre açılma veya kapatılma bölümü
if (request.indexOf(“/1.Role=ON”) != -1) {
digitalWrite(RolePin1, HIGH);
RoleDeger1 = HIGH;
}
if (request.indexOf(“/1.Role=OFF”) != -1) {
digitalWrite(RolePin1, LOW);
RoleDeger1 = LOW;
}
// 2.Rölenin ilk satırına göre açılma veya kapatılma bölümü
if (request.indexOf(“/2.Role=ON”) != -1) {
digitalWrite(RolePin2, HIGH);
RoleDeger2 = HIGH;
}
if (request.indexOf(“/2.Role=OFF”) != -1) {
digitalWrite(RolePin2, LOW);
RoleDeger2 = LOW;
}
// 3.Rölenin ilk satırına göre açılma veya kapatılma bölümü
if (request.indexOf(“/3.Role=ON”) != -1) {
digitalWrite(RolePin3, HIGH);
RoleDeger3 = HIGH;
}
if (request.indexOf(“/3.Role=OFF”) != -1) {
digitalWrite(RolePin3, LOW);
RoleDeger3 = LOW;
}
// Node MCU yayımladığı Web sitesi
client.println(“HTTP/1.1 200 OK”);
client.println(“Content-Type: text/html”);
client.println(“”); // do not forget this one
client.println(“<!DOCTYPE HTML>”);
client.println(“<html>”);
client.println(“<HEAD><TITLE>WI-FI Uygulamasi</TITLE>”);
client.println(“<BODY><H1>WI-FI ILE ROLE KONTROL PROJESINE HOSGELDINIZ</H1>”);
// Web sayfasında 1.Röleye ait kontrol paneli
client.println(“<fieldset>”);
client.println(“<legend>1.Role Kontrol</legend>”);
client.print(“1. Röle Durum :”);
if(RoleDeger1 == HIGH) {
client.print(“Acik”);
} else {
client.print(“Kapali”);
}
client.println(“<br><br>”);
client.println(“<a href=”/1.Role=ON””><button>Role Ac </button></a>”);
client.println(“<a href=”/1.Role=OFF””><button>Role Kapat</button></a><br />”);
client.println(“</fieldset>”);
delay(25);
// Web sayfasında 2.Röleye ait kontrol paneli
client.println(“<fieldset>”);
client.println(“<legend>2.Role Kontrol</legend>”);
client.print(“2. Role Durum : “);
if(RoleDeger2 == HIGH) {
client.print(“Acık”);
} else {
client.print(“Kapali”);
}
client.println(“<br><br>”);
client.println(“<a href=”/2.Role=ON””><button>Role Ac </button></a>”);
client.println(“<a href=”/2.Role=OFF””><button>Role Kapat</button></a><br />”);
client.println(“</fieldset>”);
delay(25);
// Web sayfasında 3.Röleye ait kontrol paneli
client.println(“<fieldset>”);
client.println(“<legend>3.Role Kontrol</legend>”);
client.print(“3.Role Durum : “);
if(RoleDeger3 == HIGH) {
client.print(“Acık”);
} else {
client.print(“Kapali”);
}
client.println(“<br><br>”);
client.println(“<a href=”/3.Role=ON””><button>Role Ac </button></a>”);
client.println(“<a href=”/3.Role=OFF””><button>Role Kapat </button></a><br />”);
client.println(“</fieldset>”);
client.println(“<H2>Proje hakkinda => https://electrolog.blog sayafasini ziyaret edebilirsiniz</H2>”);
client.println(“</BODY>”);
client.println(“</HEAD>”);
client.println(“</html>”);
delay(100);
Serial.println(“Client baÄŸlantı kapatıldı”);
Serial.println(“”);
}
WEB ARAYÜZ PANELÄ°
Web sitemizi adım adım irdeleyecek olursak;
- Web sitemizin sahip olduÄŸu IP adresi serial hat üzerinden alınan deÄŸerdir .Bu deÄŸer google adresine yazarak web sitemize ulaşılır.
- Web sitemiz üzerinden 3 adet röle kontrol edilir. Ayrıca web sitesinden bilgi gönderilirken aynı zamanda cihazımızdan web sitesine veri gönderilir. Veriler röle kontrol blokların içerisinde “Pasif” ve “Açık “olacak ÅŸekilde gönderilir.
PROJENÄ°N VÄ°DEOSU
Bu projede hazırlanan videoda internet üzerinden NodeMCU veri gönderilerek kontrol edilen rölelerimizn ile gerçek zamanlı elektronik devresi ile ilgili çalışmayı anlatan videoya WiFi-NodeMCU ifadesine tıklayarak izleyebilirsiniz.
EK DOSYALAR
Bu bölümde ise elektronik devrenin fritzing resmi ve devrenin fritzing kaynak dosyası (.fzz) bulunmaktadır.
Kaynak