Cep telefonu, yüzyılın devrim niteliğinde bir icadıdır. Öncelikle arama ve metin mesajları yapmak ve almak için tasarlanmıştı, ancak Akıllı telefon devreye girdikten sonra tüm dünya haline geldi. Bu projede, basit GSM tabanlı telefonu kullanarak, sadece kendi telefonundan SMS göndererek ev aletlerinin kontrol edilebileceği bir ev otomasyon sistemi kuruyoruz. Bu projede Akıllı telefona gerek yoktur, sadece eski GSM telefonu herhangi bir yerden herhangi bir ev elektroniği cihazını AÇIK ve KAPALI konuma getirmek için çalışacaktır. Ayrıca burada daha fazla Kablosuz Ev Otomasyonu projesini kontrol edebilirsiniz: Arduino kullanarak IR Uzaktan Kontrollü Ev Otomasyonu, Bluetooth Kontrollü Ev Otomasyonu ve DTMF Tabanlı Ev Otomasyonu, Arduino kullanarak PC Kontrollü Ev Otomasyonu.
Çalışma Açıklaması
Bu projede tüm süreci kontrol etmek için Arduino kullanılmıştır. Burada ev aletlerini kontrol etmek için GSM kablosuz iletişimini kullandık. AC ev aletlerini kontrol etmek için "# A. ışığı açık *", "# A. ışığı kapalı *" gibi bazı komutlar gönderiyoruz. Arduino tarafından verilen komutları GSM üzerinden aldıktan sonra, Arduino bir röle sürücüsü kullanarak ev aletlerini açmak veya kapatmak için rölelere sinyal gönderir.
Devre Bileşenleri:
- Arduino UNO
- GSM Modülü
- ULN2003
- Röle 5 volt
- Tutuculu ampul
- Bağlantı telleri
- Ekmek tahtası
- 16x2 LCD
- Güç kaynağı
- Cep telefonu
Burada komut dizesinde "#A" olan bir önek kullandık. Bu önek, ana komutun yanına geldiğini belirtmek için kullanılır ve dizenin sonundaki *, mesajın sona erdiğini gösterir.
Mobil ile GSM modülüne SMS gönderdiğimizde, GSM o SMS'i alır ve Arduino'ya gönderir. Şimdi Arduino bu SMS'i okur ve alınan dizeden ana komutu çıkarır ve bir değişkende depolar. Bundan sonra, Arduino bu dizeyi önceden tanımlanmış diziyle karşılaştırır. Eşleşme meydana gelirse, Arduino ev aletlerini AÇMAK ve KAPATMAK için röle sürücüsü aracılığıyla röleye sinyal gönderir. Ve göreli sonuç da uygun komutlar kullanılarak 16x2 LCD'ye yazdırılır.
Bu projede gösteri için Fan, Işık ve TV'yi gösteren 3 sıfır watt ampul kullandık.
Fan, Işık ve TV'yi Açmak ve Kapatmak için SMS ile gönderdiğimiz mesajların listesi aşağıdadır:
S.no. |
İleti |
Operasyon |
1 |
# A.fan açık * |
Fan AÇIK |
2 |
# A. fan kapalı * |
Fan KAPALI |
3 |
#Rastlamak* |
Işık AÇIK |
4 |
# A. ışık kapalı * |
Işık kapalı |
5 |
# A.tv açık * |
TV AÇIK |
6 |
# A.tv kapalı * |
TV Kapalı |
7 |
# A. all on * |
Hepsi AÇIK |
8 |
# A. hepsi kapalı * |
Hepsi KAPALI |
GSM Modülü:
GSM modülü, GSM (Global System for Mobile Communications) teknolojisine dayanan birçok iletişim cihazında kullanılmaktadır. Bir bilgisayar kullanarak GSM şebekesi ile etkileşim kurmak için kullanılır. GSM modülü yalnızca AT komutlarını anlar ve buna göre yanıt verebilir. En temel komut "AT" dir, GSM düzgün yanıt veriyorsa o zaman iyi çalışıyor, aksi takdirde "HATA" ile yanıt veriyor. Bir aramayı cevaplamak için ATA, bir aramayı çevirmek için ATD, mesajı okumak için AT + CMGR, sms göndermek için AT + CMGS vb. Gibi çeşitli AT komutları vardır.), "AT + CMGS \ r" gibi. GSM modülünü şu komutları kullanarak kullanabiliriz:
ATE0 - Yankı kapalı için
AT + CNMI = 2,2,0,0,0
ATD
AT + CMGF = 1
AT + CMGS = "Mobil Numara"
>> Şimdi mesajımızı yazabiliriz
>> Mesaj yazdıktan sonra
Ctrl + Z mesaj gönder komutu (ondalık olarak 26).
ENTER = 0x0d HEX'te
SIM900 tam dört band GSM / GPRS modülü / GSM sağlayan düşük güç tüketimi ile ses, SMS ve veri için 850/900/1800 / 1900MHz performansı GPRS.
Devre Tanımı
Bu GSM tabanlı ev otomasyon devresinin bağlantıları oldukça basittir, burada 4-bit modunda doğrudan arduino'ya bağlanan ev aletlerinin durumunu görüntülemek için bir likit kristal ekran kullanılır. LCD'nin RS, EN, D4, D5, D6, D7 data pinleri 6, 7, 8, 9, 10, 11 numaralı arduino dijital pinlerine, GSM modülünün Rx ve Tx pinleri ise doğrudan Tx ve Rx'e bağlanır. Arduino'nun pini sırasıyla. GSM modülü ise 12 voltluk bir adaptör kullanılarak çalıştırılır. IŞIK, FAN ve TV'yi kontrol etmek için 5 voltluk SPDT 3 röleleri kullanılır. Ve röleler sırasıyla LIGHT, FAN ve TV'yi kontrol etmek için ULN2003 röle sürücüsü üzerinden 3, 4 ve 5 numaralı arduino pinlerine bağlanır.
Kod Açıklama
Bu projenin bir bölümünü programlarken, öncelikle programlamada likit kristal ekran için kütüphane ekledik ve ardından LCD ve ev aletleri için veri ve kontrol pinlerini tanımladık.
#Dahil etmek
Bu seri haberleşme sonrasında 9600 bps'de başlatılır ve kullanılan pine yön verir.
geçersiz kurulum () {lcd.begin (16,2); Serial.begin (9600); pinMode (led, OUTPUT); pinMode (Fan, ÇIKIŞ); pinMode (Işık, ÇIKIŞ); pinMode (TV, OUTPUT);
Verileri seri olarak almak için iki işlev kullandık, biri herhangi bir seri verinin gelip gelmediğini kontrol eden Serial.available ve diğeri de seri olarak gelen verileri okuyan Serial.read'dir.
while (Serial.available ()) {char inChar = Serial.read ();
Verileri seri olarak aldıktan sonra bir dizede sakladık ve ardından Enter'ı bekledik.
void serialEvent () {while (Serial.available ()) {if (Serial.find ("# A.")) {digitalWrite (led, HIGH); gecikme (1000); digitalWrite (led, DÜŞÜK); while (Serial.available ()) {char inChar = Serial.read (); str = inChar; eğer (inChar == '*') {temp = 1; dönüş; }
Enter geldiğinde, program alınan diziyi önceden tanımlanmış dizeyle karşılaştırmaya başlar ve dizge eşleşirse, kodda verilen uygun komut kullanılarak göreceli bir işlem gerçekleştirilir.
void check () {if (! (strncmp (str, "tv açık", 5))) {digitalWrite (TV, HIGH); lcd.setCursor (13,1); lcd.print ("AÇIK"); gecikme (200); } else if (! (strncmp (str, "tv kapalı", 6))) {digitalWrite (TV, LOW); lcd.setCursor (13,1); lcd.print ("KAPALI"); gecikme (200); }