Mobilni telefon je revolucionarna iznajdba stoletja. Zasnovan je bil predvsem za klicanje in sprejemanje klicev in besedilnih sporočil, vendar je po tem, ko se pametni telefon predstavi, postal ves svet. V tem projektu gradimo sistem za avtomatizacijo doma, kjer lahko nadzorujete gospodinjske aparate s preprostim telefonom, ki temelji na GSM, in sicer tako, da pošljete SMS preko njegovega telefona. V tem projektu ni potreben noben pametni telefon, samo stari telefon GSM bo deloval za vklop in izklop vseh gospodinjskih elektronskih naprav od koder koli. Tukaj si lahko ogledate še nekaj projektov brezžične avtomatizacije doma: IR daljinsko vodena avtomatizacija doma z uporabo Arduino, Bluetooth nadzorovana avtomatizacija doma skupaj z DTMF avtomatizacijo doma, PC krmiljena avtomatizacija doma z Arduino.
Delovna razlaga
V tem projektu se Arduino uporablja za nadzor celotnega procesa. Tu smo uporabili brezžično komunikacijo GSM za nadzor gospodinjskih aparatov. Za nadzor gospodinjskih aparatov AC pošljemo nekaj ukazov, kot so "# A.light on *", "# A.light off *" in tako naprej. Po prejemu danih ukazov s strani Arduina prek GSM, Arduino pošlje signal relejem, da vklopi ali izklopi gospodinjske aparate z gonilnikom releja.
Komponente vezja:
- Arduino UNO
- GSM modul
- ULN2003
- Rele 5 voltov
- Žarnica z držalom
- Priključne žice
- Deska za kruh
- 16x2 LCD
- Napajanje
- Mobitel
Tu smo uporabili predpono v ukaznem nizu, ki je "#A.". Ta predpona se uporablja za prepoznavanje, da glavni ukaz prihaja zraven in * na koncu niza označuje, da je sporočilo končano.
Ko pošljemo SMS na modul GSM prek storitve Mobile, GSM prejme to sporočilo SMS in ga pošlje Arduinu. Zdaj Arduino prebere ta SMS in iz prejetega niza izvleče glavni ukaz ter shrani v spremenljivko. Po tem Arduino primerja ta niz z vnaprej določenim nizom. Če je prišlo do ujemanja, Arduino pošlje signal preko relejskega gonilnika za vklop in izklop gospodinjskih aparatov. Relativni rezultat se z ustreznimi ukazi natisne tudi na LCD 16x2.
V tem projektu smo za demonstracijo uporabili 3-vatno žarnico, ki označuje ventilator, svetlobo in televizijo.
Spodaj je seznam sporočil, ki jih pošljemo prek sporočil SMS za vklop in izklop ventilatorja, luči in televizorja:
S. št. |
Sporočilo |
Delovanje |
1. |
# A.fan na * |
Ventilator vklopljen |
2. |
# A.fan off * |
VENTILATOR IZKLOPLJEN |
3. |
# A.light on * |
Prižgana luč |
4. |
# A.svetilo * |
Luč ugasnjena |
5. |
# A.tv na * |
TV VKLOPLJEN |
6. |
# A.tv izklopljen * |
TV izklopljen |
7. |
# A.vso na * |
Vse VKLOPLJENO |
8. |
# A. vse izklopljeno * |
Vse IZKLOPLJENO |
GSM modul:
GSM modul se uporablja v številnih komunikacijskih napravah, ki temeljijo na tehnologiji GSM (Global System for Mobile Communications). Uporablja se za interakcijo z omrežjem GSM s pomočjo računalnika. Modul GSM razume samo ukaze AT in se lahko ustrezno odzove. Najosnovnejši ukaz je »AT«, če se GSM odzove v redu, potem deluje dobro, sicer se odzove z »ERROR«. Obstajajo različni ukazi AT, kot so ATA za sprejem klica, ATD za klicanje, AT + CMGR za branje sporočila, AT + CMGS za pošiljanje sms-a itd. Ukazom AT mora slediti Carriage return, tj. R (0D v šestnajstiški vrstici)), na primer »AT + CMGS \ r«. Modul GSM lahko uporabljamo s pomočjo teh ukazov:
ATE0 - Za odmev
AT + CNMI = 2,2,0,0,0
ATD
AT + CMGF = 1
AT + CMGS = "Mobilna številka"
>> Zdaj lahko napišemo svoje sporočilo
>> Po pisanju sporočila
Ctrl + Z ukaz za pošiljanje sporočila (26 v decimalnih mestih).
ENTER = 0x0d v šestnajstiškem
SIM900 je popolna Quad-band / GPRS modul GSM, ki zagotavlja GSM / GPRS 850/900/1800 / 1900MHz zmogljivosti za govorno, SMS in podatkov z nizko porabo energije.
Opis vezja
Povezave tega vezja za avtomatizacijo na daljavo, ki temelji na GSM, so precej preproste, tu se zaslon s tekočimi kristali uporablja za prikaz stanja gospodinjskih aparatov, ki so v 4-bitnem načinu neposredno povezani z arduinom. Podatkovni zatiči LCD in sicer RS, EN, D4, D5, D6, D7 so povezani z arduino digitalnim zatičem številka 6, 7, 8, 9, 10, 11. In Rx in Tx zatič GSM modula je neposredno povezan s Tx in Rx pin Arduina. GSM modul pa napaja 12-voltni adapter. 5 voltni releji SPDT 3 se uporabljajo za nadzor LUČI, VENTILATORJA in TV-ja. Releji so na arduino pin št. 3, 4 in 5 priključeni prek relejskega gonilnika ULN2003 za nadzor LIGHT, FAN in TV.
Koda Opis
V programski del tega projekta najprej v programiranje vključimo knjižnico za prikazovanje na tekoče kristale, nato pa definiramo podatke in krmilne nožice za LCD in gospodinjske aparate.
#include
Po tem je serijska komunikacija inicializirana s hitrostjo 9600 bps in usmerja uporabljeni pin.
void setup () {lcd.begin (16,2); Serial.begin (9600); pinMode (led, IZHOD); pinMode (ventilator, IZHOD); pinMode (Light, OUTPUT); pinMode (TV, IZHOD);
Za zaporedno sprejemanje podatkov smo uporabili dve funkciji, ena je Serial.available, ki preverja, ali prihajajo kakšni serijski podatki, druga pa Serial.read, ki bere podatke, ki prihajajo serijsko.
while (Serial.available ()) {char inChar = Serial.read ();
Po serijskem prejemu podatkov smo jih shranili v niz in nato čakali na Enter.
void serialEvent () {while (Serial.available ()) {if (Serial.find ("# A.")) {digitalWrite (led, HIGH); zamuda (1000); digitalWrite (led, LOW); while (Serial.available ()) {char inChar = Serial.read (); str = inChar; če (inChar == '*') {temp = 1; vrnitev; }
Ko pride Enter, zaženite program, da primerjate prejeti niz z že definiranim nizom in če se niz ujema, se izvede ustrezna operacija z ustreznim ukazom, ki je podan v kodi.
void check () {if (! (strncmp (str, "tv on", 5))) {digitalWrite (TV, HIGH); lcd.setCursor (13,1); lcd.print ("ON"); zamuda (200); } sicer if (! (strncmp (str, "tv off", 6))) {digitalWrite (TV, LOW); lcd.setCursor (13,1); lcd.print ("OFF"); zamuda (200); }