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

İçeriğe geç

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

15 Aralık 2017 Adil Teoman Kurt Arduino Projeleri, PROJELER 5 yorum

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.

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://&#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.

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…..

### Bunu paylaş:

- WhatsApp
- Tweet
- E-posta
- Daha fazla

- Telegram

### Bunu beğen:

Beğen Yükleniyor...

Rs-232 ile Labview ve Arduino MEGA 2560 Kullanılarak LED Yakıp Söndürme Projesi"Arduino Projeleri" içinde

Rs-232 ile C# ve Arduino MEGA 2650 Kullanılarak Led Yakıp Söndürme Projesi"Arduino Projeleri" içinde

MATLAB/SIMULINK İLE LDR VE LED UYGULAMALARI"Arduino Projeleri" içinde

## 5 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 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 Beğen

2. sanırım bi kütüphane sorunum

   Beğen Beğen

3. String request = client.readStringUntil(“\r”);

   Beğen Beğen

4. 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 Beğen

Yorumlar kapatıldı.

Şuraya gönder
Vazgeç

- Takip Et
- - electrolog
  - Özelleştir
  - Takip Et
  - Kaydolun
  - Giriş
  - Kısa adresi kopyala
  - Bu içeriği rapor et
  - Abonelikleri Yönet
  - Bu şeridi gizle

%d blogcu bunu beğendi:

E-posta adresine gönder İsminiz E-posta Adresiniz
Vazgeç
Yazı gönderilemedi - e-posta adreslerinizi kontrol edin!
E-posta kontrolü başarısız oldu, lütfen bir daha deneyin.
Üzgünüm, blogunuz yazıları e-posta ile paylaşamıyor.

# Orijinal metin

Daha iyi bir çeviri ile katkıda bulunun