ESP8266 ve Arduino ile bulut üzerinden wifi tabanlı ev otomasyon sistemi
Wifi üzerinden wifi tabanlı ev otomasyonu için Blok Şeması
Gerekli Bileşenler:
- ESP8266 Wifi Modülü: ESP8266, Transfer Kontrol Protokolü (TCP) ve İnternet Protokolü (IP) sağlayan bir wifi çipidir. Piyasada farklı ESP8266 modülleri mevcuttur. Bu projede ilk modeli kullanıyoruz. 6 pimli olup, 3.3v ile çalışır. ESP8266, aşağıdaki komutlarla başlatıldı:
- AT
- AT + CWMODE = 3
- AT + CIFSR
- AT + CIPMUX = 1
- ESP8266 daha sonra aşağıdaki komutlarla mobil etkin noktaya bağlandı:
- AT + CWLAP (mevcut Wi-Fi ağlarının listesini döndürür)
- AT + CWJAP = "SSID", "şifre" Örnek: AT + CWJAP = "PTCL-BB", "12345467"
- Arduino Uno: Arduino, ATmega 328P etrafında inşa edilen geliştirme kartlarıdır. Arduino, arayüz röle modülü, 16 × 2 LCD ve ESP8266 wifi modülüne çok sayıda pin sağladığı için bu proje için mükemmeldir.
- 4 Kanal Röle Modülü : Röle, Arduino dijital pininden gelen sinyal gibi düşük dc voltajları kullanarak yüksek voltajlı cihazları açıp kapatmak için kullanılır. Bu projemizde 4 kanal röle modülü kullandık, her bir röleyi ayrı ayrı bağlamak yerine Arduino ile arayüz oluşturmak kolaydır. 250VAC ve 10 ampere kadar akım taşıyabilir.
- 16X2 LCD: 16 × 2 LCD 16 karakteri iki satırda görüntülemek için kullanılır. Mevcut kütüphanesi sayesinde Arduino ile arayüz oluşturmak kolaydır. Bu projede bu LCD, cihazların durumunu açık veya kapalı olarak görüntülemek için kullanılır.
Bulut üzerinden wifi tabanlı ev otomasyon sisteminin Devre Şeması
Bağlantı şeması
16 × 2 LCD:
- V SS toprağa.
- V DD , besleme gerilimi için.
- V O , 10k potansiyometrenin pimini ayarlamak için.
- RS'den Pin A0'a.
- RW toprağa.
- A1'i Sabitlemeyi etkinleştirin.
- LCD D4'ten Pin A2'ye.
- LCD D5'den Pin A3'e.
- LCD D6'dan Pin A4'e.
- LCD D7'den Pin A5'e.
- Potansiyometrenin bir ucunu topraklayın.
- Potansiyometrenin diğer ucuna 5v.
4 Kanal Röle modülleri:
- Harici 5 volt'tan JD V CC'ye .
- Yerden yere.
- Ini1'den Pin 3'e.
- Ini2'den Pin 4'e.
- Ini3'ten Pin5'e.
- Vcc'den Arduino 5v'ye.
- Tüm ampullerin bir terminalini normalde açık olan rölelerin terminaline bağlayın.
220VAC'nin bir ucu, rölenin tüm ortak terminallerine ve diğer ucu ampullerin diğer terminallerine.
Arduino'ya ESP8266 wifi modülü:
- Modül Vcc - 3.3v.
- Modül CH_PD - 3.3v.
- Arduino toprağına Modül Ground.
- Modül Tx - Arduino Rx.
- Modül Rx - Arduino Tx.
Çalışma: S Remote uygulamasını Google Play Store'dan indirin. Uygulamayı açın, Ayarlar >> Gelişmiş >> Düzen'e gidin ve isteğinize göre Düğmeyi seçin. Ardından IP'yi seçin ve "AT + CIFSR" komutunu kullanarak ESP8266 wifi modülünü başlattığımızda aldığımız IP adresini girin. IP adresi “192.168.10.4” gibi üçüncü satıra yazılır. Daha sonra port seçeneğine “80” olan portu yazınız. Ayar >> Tuşlar'a gidin ve ardından key1'i seçin ve düğme üzerinde görüntülenecek etiketi ve ardından Arduino'ya göndermek istediğiniz verileri yazın. TCP düğmesine tıklayın. Benzer şekilde etiketi ve verileri diğer anahtarlara yazın. Her şeyi doğru bir şekilde bağlarsanız, ardından devreyi açın ve seri monitörü açın, wifi modülünü başlatmak birkaç saniye sürer. Uygulama üzerindeki düğmeye basın,
Arduino kullanan IOT tabanlı ev otomasyon sistemi kodu
Bu proje için kod bedelsiz değildir. aşağıda verilen ziyaret linkinden kod satın alabilirsiniz.
#include<LiquidCrystal.h> #include <SoftwareSerial.h> LiquidCrystal lcd(A0,A1,A2,A3,A4,A5); #define Fan 3 #define Light 4 #define TV 5 int temp=0,i=0; int led=13; char str[15]; void setup() { lcd.begin(16,2); Serial.begin(9600); Serial.print("AT\r\n"); delay(200); Serial.print("AT+CWMODE=3\r\n"); delay(200); Serial.print("AT+CIFSR\r\n"); delay(200); Serial.print("AT+CIPMUX=1\r\n"); delay(200); Serial.print("AT+CIPSERVER=1,80\r\n"); delay(200); pinMode(led, OUTPUT); pinMode(Fan, OUTPUT); pinMode(Light, OUTPUT); pinMode(TV, OUTPUT); digitalWrite(Fan,HIGH); digitalWrite(Light,HIGH); digitalWrite(TV,HIGH); lcd.setCursor(0,0); lcd.print("WI-FI Control "); lcd.setCursor(0,1); lcd.print("Home AutomatIon"); delay(2000); lcd.clear(); lcd.clear(); lcd.setCursor(0,0); lcd.print("Fan Light TV "); lcd.setCursor(0,1); lcd.print("OFF OFF OFF "); } void loop() { lcd.setCursor(0,0); lcd.print("Fan Light TV"); if(temp==1) { check(); temp=0; i=0; delay(1000); } } void serialEvent() { while(Serial.available()) { if(Serial.find("#A.")) { digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); while (Serial.available()) { char inChar=Serial.read(); str[i++]=inChar; if(inChar=='*') { temp=1; return; } } } } } void check() { if(!(strncmp(str,"tv on",5))) { digitalWrite(TV, LOW); lcd.setCursor(13,1); lcd.print("ON "); delay(200); } else if(!(strncmp(str,"tv off",5))) { digitalWrite(TV, HIGH); lcd.setCursor(13,1); lcd.print("OFF "); delay(200); } else if(!(strncmp(str,"fan on",6))) { digitalWrite(Fan, LOW); lcd.setCursor(0,1); lcd.print("ON "); delay(200); } else if(!(strncmp(str,"fan off",7))) { digitalWrite(Fan, HIGH); lcd.setCursor(0,1); lcd.print("OFF "); delay(200); } else if(!(strncmp(str,"light on",8))) { digitalWrite(Light, LOW); lcd.setCursor(7,1); lcd.print("ON "); delay(200); } else if(!(strncmp(str,"light off",9))) { digitalWrite(Light, HIGH); lcd.setCursor(7,1); lcd.print("OFF "); delay(200); } }
Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn ForeverIf you want, let's learn together...https://roboticcode2020.blogspot.com/bahadirozgen1975@gmail.com