Mobilusis telefonas yra revoliucinis amžiaus išradimas. Jis visų pirma buvo skirtas skambinti ir priimti skambučius bei tekstinius pranešimus, tačiau po to, kai išmanusis telefonas pateko į paveikslėlį, jis tapo visu pasauliu. Šiame projekte mes kuriame namų automatikos sistemą, kurioje galima valdyti buitinę techniką, naudojant paprastą GSM telefoną, tiesiog siunčiant SMS per jo telefoną. Šiame projekte išmaniojo telefono nereikia, tiesiog senas GSM telefonas veiks, kad įjungtumėte ir išjungtumėte bet kokius namų elektroninius prietaisus iš bet kur. Čia taip pat galite patikrinti kelis belaidžio namų automatikos projektus: IR nuotolinio valdymo namų automatika naudojant „Arduino“, „Bluetooth“ valdoma namų automatika kartu su DTMF pagrįsta namų automatizavimu, kompiuterio valdoma namų automatika naudojant „Arduino“.
Darbinis paaiškinimas
Šiame projekte „ Arduino “ naudojama viso proceso kontrolei. Čia buitinei technikai valdyti naudojome belaidį GSM ryšį. Siunčiame keletą komandų, tokių kaip „# A.light on *“, „# A.light off *“ ir pan., Skirtos kintamosios srovės buitinės technikos valdymui. Gavęs „Arduino“ nurodymus per GSM, „Arduino“ siunčia signalą relėms, kad įjungtų arba išjungtų buitinius prietaisus naudodamas relės tvarkyklę.
Grandinės komponentai:
- „Arduino UNO“
- GSM modulis
- ULN2003
- Relė 5 voltai
- Lemputė su laikikliu
- Jungiamieji laidai
- Bandomoji Lenta
- 16x2 LCD ekranas
- Maitinimo šaltinis
- Mobilusis telefonas
Čia komandų eilutėje naudojome priešdėlį, kuris yra „#A“. Šis priešdėlis naudojamas nustatyti, kad pagrindinė komanda yra šalia jos, o * eilutės pabaigoje rodo, kad pranešimas baigtas.
Kai mes siunčiame SMS į „GSM“ modulį per „Mobile“, tada GSM tą SMS priima ir siunčia „Arduino“. Dabar „Arduino“ skaito šią SMS ir ištraukia pagrindinę komandą iš gautos eilutės ir saugo kintamajame. Po to „Arduino“ palygins šią eilutę su iš anksto apibrėžta eilute. Jei įvyko rungtis, „Arduino“ per relės tvarkyklę siunčia signalą į relę, kad įjungtų ir išjungtų buitinę techniką. Santykinis rezultatas taip pat spausdinamas 16x2 LCD ekrane, naudojant atitinkamas komandas.
Šiame projekte mes demonstravimui naudojome 3 nulinių vatų lemputes, kurios nurodo ventiliatorių, šviesą ir televizorių.
Žemiau pateikiamas žinučių, kurias siunčiame SMS, sąrašas, norėdami įjungti ir išjungti ventiliatorių, šviesą ir televizorių:
S.no. |
Pranešimas |
Operacija |
1 |
# A.fanas * |
Ventiliatorius ĮJ |
2 |
# Ventiliatorius išjungtas * |
Ventiliatorius IŠJUNGTAS |
3 |
# A.šviesa * |
Šviesa įjungta |
4 |
# A.šviesa išjungta * |
Išjungti šviesą |
5 |
# A.tv * |
TV ĮJUNGTA |
6 |
# A.tv išjungtas * |
TV išjungtas |
7 |
# A.viskas * |
Viskas įjungta |
8 |
# A.viskas išjungta * |
Viskas IŠJUNGTA |
GSM modulis:
GSM modulis naudojamas daugelyje ryšio įrenginių, kurie yra pagrįsti GSM (pasauline mobiliojo ryšio sistema) technologija. Jis naudojamas sąveikauti su GSM tinklu naudojant kompiuterį. GSM modulis supranta tik AT komandas ir gali atitinkamai atsakyti. Pagrindinė komanda yra „AT“, jei GSM atsako gerai, ji veikia gerai, kitaip ji atsako „KLAIDA“. Yra įvairių AT komandų, tokių kaip ATA, kad atsilieptų į skambutį, ATD, kad surinktumėte skambutį, AT + CMGR, norėdami perskaityti pranešimą, AT + CMGS, kad išsiųstumėte sms ir tt), pvz., „AT + CMGS“. Mes galime naudoti GSM modulį naudodami šias komandas:
ATE0 - skirtas aidui išjungti
AT + CNMI = 2,2,0,0,0
ATD
AT + CMGF = 1
AT + CMGS = „Mobilusis numeris“
>> Dabar mes galime parašyti savo žinutę
>> Parašęs žinutę
„Ctrl“ + Z siųsti pranešimo komandą (26 dešimtainiu kableliu).
ENTER = 0x0d HEX
SIM900 yra visiškai keturdažnį GSM / GPRS modulis, kuris suteikia GSM / GPRS 850/900/1800 / 1900MHz našumą skambučių, SMS žinučių ir duomenų perdavimo su mažu energijos suvartojimu.
Grandinės aprašymas
Šios GSM pagrindu veikiančios namų automatikos grandinės jungtys yra gana paprastos, čia skystųjų kristalų ekranas naudojamas namų technikos būsenai rodyti, kuris yra tiesiogiai prijungtas prie „Arduino“ 4 bitų režimu. Skystųjų kristalų LCD duomenų kaiščiai, būtent RS, EN, D4, D5, D6, D7, yra prijungti prie „Arduino“ skaitmeninių kaiščių numerių 6, 7, 8, 9, 10, 11. Ir GSM modulio Rx ir Tx kaiščiai yra tiesiogiai prijungti prie Tx ir Rx atitinkamai „Arduino“ kaištis. GSM modulis maitinamas naudojant 12 voltų adapterį. 5 voltų SPDT 3 relės naudojamos LIGHT, FAN ir TV valdymui. Relės yra prijungtos prie „arduino“ kontaktų 3, 4 ir 5 per relės tvarkyklę ULN2003, skirtos valdyti LIGHT, FAN ir TV.
Kodo aprašymas
Programuodami šio projekto dalį, visų pirma, programavime įtraukiame skystųjų kristalų rodymo biblioteką, tada nustatome LCD ir buitinės technikos duomenis ir valdymo kaiščius.
# įtraukti
Po to, kai šis nuoseklusis ryšys yra inicijuojamas 9600 bps greičiu ir nurodo naudojamo kaiščio kryptį.
negaliojanti sąranka () {lcd.begin (16,2); Serijos pradžia (9600); pinMode (led, OUTPUT); pinMode (ventiliatorius, OUTPUT); pinMode (šviesa, IŠĖJIMAS); pinMode (TV, OUTPUT);
Norėdami gauti duomenis nuosekliai, mes naudojome dvi funkcijas, viena yra „ Serial.available“, kuri tikrina, ar nėra serijinių duomenų, o kita - „ Serial.read“, kuri skaito nuosekliai gaunamus duomenis.
while (Serial.available ()) {char inChar = Serial.read ();
Gavę duomenis nuosekliai, juos išsaugojome eilutėje ir laukėme „Enter“.
void serialEvent () {while (Serial.available ()) {if (Serial.find ("# A."))) {digitalWrite (led, HIGH); vėlavimas (1000); digitalWrite (led, LOW); while (Serial.available ()) {char inChar = Serial.read (); str = inChar; if (inChar == '*') {temp = 1; grįžti; }
Kai ateina Enter, programa pradeda palyginti gautą eilutę su jau apibrėžta eilute ir, jei eilutė sutampa, santykinė operacija atliekama naudojant atitinkamą komandą, pateiktą kode.
anuliuoti čekį () {if (! (strncmp (str, "tv on", 5))) {digitalWrite (TV, HIGH); lcd.setCursor (13,1); lcd.print ("ON"); vėlavimas (200); } else if (! (strncmp (str, "tv off", 6))) {digitalWrite (TV, LOW); lcd.setCursor (13,1); lcd.print ("OFF"); vėlavimas (200); }