Arduino kullanarak ethernet tabanlı ev otomasyonu projesi - IOT
Ethernet tabanlı ev otomasyon projesinin Blok Şeması
Ethernet tabanlı ev otomasyon sistemi için gerekli bileşenler
- Arduino Uno : Ethernet shield ile uyumluluğundan dolayı Arduino Uno kullanıyoruz, Arduino Mega da kullanabiliyoruz ama Uno harika çalışıyor. Bir projenin prototipini oluştururken çok kullanışlıdır.
- 4 Kanal Röle Modülü : Bu projede kullandığımız röle modülü HL-54S'dir. Arduino'dan 5 voltluk mantıksal bir sinyal kullanarak açılır ve kapanır. 250V'a kadar alternatif akımı kaldırabilir ve 10A'ya kadar tutabilir. Bu modüllerin 4 rölesi vardır, böylece bir seferde 4 AC cihazı kontrol edebiliriz.
- Ethernet Shield : Ethernet Shield, Arduino'nuzu internete bir dakikadan daha kısa sürede bağlar. Bu modülü Arduino kartınıza takın, RJ45 kablosuyla ağınıza bağlayın. Bu modül açık kaynak kodludur, tüm belge şemaları Arduino web sitesinde mevcuttur.
Kalkanda bir dizi bilgilendirici LED bulunur:
- PWR: kartın ve kalkanın çalıştırıldığını gösterir
- LINK: bir ağ bağlantısının varlığını gösterir ve kalkan veri ilettiğinde veya aldığında yanıp söner
- FULLD : ağ bağlantısının tam çift yönlü olduğunu gösterir
- 100M: 100 Mb / sn'lik bir ağ bağlantısının varlığını gösterir (10 Mb / sn'nin aksine)
- RX: kalkan veri aldığında yanıp söner
- TX: kalkan veri gönderdiğinde yanıp söner
- COLL: ağ çakışmaları algılandığında yanıp söner
- Tutuculu AC ampuller: AC ampuller, cihazları temsil etmek için kullanılır. Çünkü herhangi bir AC projesinin prototipini oluştururken kullanımı kolaydır ve çok kullanışlıdır. Nihai üründe, kontrol etmek için sadece AC soketiyle değiştirin.
- Fişli AC kablosu: Daha yüksek voltajlarla çalışırken daima kaliteli kablo kullanın. Bant veya ısıyla daralan makaron kullanarak bağlantıları koruyun ve kapatın.
- Harici 5 Volt besleme: Röleyi açıp kapatmak için harici 5 volt dc besleme kullanılır, aksi takdirde çalışmaz.
Arduino kullanan Ethernet tabanlı ev otomasyon projesinin Devre Şeması
Bağlantılar:
Çok az bileşen kullandığımız için bağlantı çok kolay. İlk olarak Ethernet shield'ı Arduino Uno üzerine monte edin; Bu shield aynı zamanda Arduino Mega uyumludur, bu nedenle daha fazla cihazı kontrol etmek istiyorsanız bu projede Arduino Mega'yı da kullanabilirsiniz. Şimdi Ethernet kalkanına bir bağlantı yapıyoruz.
- Röle modülünün Ini1'i Dijital pin 3'e.
- Röle modülünün Ini2'sini Dijital pin 4'e.
- Röle modülünün Ini3'ü Dijital pin 5'e.
- Röle modülünün Vcc'si Arduino'nun 5v'una.
- Gnd, Arduino'nun zeminine.
- JDVcc'den harici 5v beslemeye ve toprağa.
- Ethernet kablosunu kullanarak Wifi'ı Ethernet kalkanına bağlayın.
- Aletleri şemada gösterildiği gibi bağlayın.
Arduino ile Ethernet tabanlı ev otomasyon projesinin çalışması
Öncelikle Ethernet kalkanı internete bağlanır ve Seri monitörde bir IP adresi görüntüler. Bu IP adresi, cihazları kontrol etmek için web sayfasını açan URL'dir. Bir web sayfasındaki düğmeye bastığımızda ilgili röle açılır ve kapanır. Aşağıdaki kod, bir web sayfasındaki metni görüntülemek ve üzerinde bir düğme yapmak için kullanılır. Aşağıdaki kodu değiştirerek buton üzerindeki metni ve etiketleri değiştirebilirsiniz.
client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(); client.print("<center><br><h1>Ethernet based Home Automation</h1><br><br><br><FORM>"); client.print("<P> <INPUT type=\"submit\" name=\"status\" value=\"S1 ON\">"); client.print("<P> <INPUT type=\"submit\" name=\"status\" value=\"S1 OFF\">"); client.print("<P> <INPUT type=\"submit\" name=\"status\" value=\"S2 ON\">"); client.print("<P> <INPUT type=\"submit\" name=\"status\" value=\"S2 OFF\">"); client.print("<P> <INPUT type=\"submit\" name=\"status\" value=\"S3 ON\">"); client.print("<P> <INPUT type=\"submit\" name=\"status\" value=\"S3 OFF\">"); client.print("</FORM></center>");
Ethernet tabanlı ev otomasyon sistemi kodu
#include <SPI.h> #include <Ethernet.h> #include <LiquidCrystal.h> LiquidCrystal lcd(8,9,10,11,12,13); byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; EthernetServer server(80); void setup() { lcd.begin(16, 2); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); digitalWrite(3 ,HIGH); digitalWrite(4 ,HIGH); digitalWrite(5 ,HIGH); lcd.setCursor(0,0); lcd.print("Ethernet Control"); lcd.setCursor(0,1); lcd.print(" Home Automation0 "); delay(2000); lcd.clear(); lcd.setCursor(0,0); lcd.print("Fan Light TV "); lcd.setCursor(0,1); lcd.print("OFF OFF OFF "); Ethernet.begin(mac); server.begin(); Serial.begin(9600); Serial.println("Server address:"); Serial.println(Ethernet.localIP()); } void loop() { EthernetClient client = server.available(); if (client){ boolean currentLineIsBlank = true; String buffer = ""; while (client.connected()){ if (client.available()) { char c = client.read(); buffer+=c; if (c == '\n' && currentLineIsBlank) { client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(); client.print("<center><br><h1>Ethernet based Home Automation</h1><br><br><br><FORM>"); client.print("<P> <INPUT type=\"submit\" name=\"status\" value=\"S1 ON\">"); client.print("<P> <INPUT type=\"submit\" name=\"status\" value=\"S1 OFF\">"); client.print("<P> <INPUT type=\"submit\" name=\"status\" value=\"S2 ON\">"); client.print("<P> <INPUT type=\"submit\" name=\"status\" value=\"S2 OFF\">"); client.print("<P> <INPUT type=\"submit\" name=\"status\" value=\"S3 ON\">"); client.print("<P> <INPUT type=\"submit\" name=\"status\" value=\"S3 OFF\">"); client.print("</FORM></center>"); break; } if (c == '\n') { currentLineIsBlank = true; buffer=""; } else if (c == '\r') { if(buffer.indexOf("GET /?status=S1+ON")>=0) digitalWrite(3, LOW); if(buffer.indexOf("GET /?status=S1+OFF")>=0) digitalWrite(3, HIGH); if(buffer.indexOf("GET /?status=S2+ON")>=0) digitalWrite(4, LOW); if(buffer.indexOf("GET /?status=S2+OFF")>=0) digitalWrite(4, HIGH); if(buffer.indexOf("GET /?status=S3+ON")>=0) digitalWrite(5, LOW); if(buffer.indexOf("GET /?status=S3+OFF")>=0) digitalWrite(5, HIGH); } else { currentLineIsBlank = false; } } } client.stop(); } }
Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook robotic.code
instagram @roboticcode
Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.