NodeMCU Kullanılarak WiFi ile IOT (Nesnelerin İnterneti) Uygulaması

          Merhaba arkadaşlar bugün sizlerle ESP8266 kullanılarak WiFi ile  IOT  (Nesnelerin İnterneti) uygulaması  gerçekleştireceğiz.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.

  1. NodeMCU  kartının özelliklerini ne olduğunu , Wi-Fi  iletişim ,   Röle  kavramlarını öğrenmek.
  2. 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.
  3. 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.

NodeMCU-ESP8266-12E-Limitations

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.

-Wifi

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. 

8266-WIFI-12E

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.

Röle Devresi

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.

Wifi-Devere
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://&#8221;);
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.

Html

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.

Ek dosyalar ( .png ve .fzz)

BİLGİLENDİRME

   Proje hakkında  merak ettiklerinizi  iletişim adresinden sorabilir veya yorum kısmına yazabilirsiniz arkadaşlar projede herkese  iyi çalışmalar.

Hoşçakalın…..

8 comments

  1. merhaba kod da derleme hatası alıyorum. nerede hata yapıyorum acaba ?

    exit status 1
    invalid operands of types ‘const char [23]’ and ‘const char [63]’ to binary ‘operator+’

    teşekkür ederim

    Beğen

    1. Genelde derleme sırasında ya partez içerisindeki turnak işaretleri yada derleme yapılan dosyanın alt kütaphanesinde pointerları betimleyen kısımların olmayışı olabiliyor

      Beğen

  2. Adil Hocam elinize sağlık güzel açıklamalarda bulunmuşsunuz. Kodları derledim ve çalıştırdım. Ancak çok hızlı bir şekilde sayfa cevap veremez hale geliyor 5-10 dk gibi). Elimdeki modül ile mi ilgilidir yoksa başka dikkat etmem gereken bir şeyler mi var?

    Beğen

    1. Bu tür hatanın genel hatlarıyla nedenleri;

      1) Arduino ide sürümünden
      2) Kaynak kodunun web sayfasından direk ide içerisine kopyalanmasından
      Kaynaklanıyor web sayfasındaki Çift tırnakları ide içerisinde düzeltmeniz gerekiyor html formatının çift tırmağı ile idenin çift tırnagının unicode farklı çünkü umarım bu değişiklile ile problemizniz çözülür hocam

      Beğen

Bir Cevap Yazın

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.