Mobilais tālrunis ir gadsimta revolucionārs izgudrojums. Tas galvenokārt bija paredzēts zvanu un īsziņu veikšanai un saņemšanai, taču pēc viedtālruņa parādīšanās attēlā tas ir kļuvis par visu pasauli. Šajā projektā mēs veidojam mājas automatizācijas sistēmu, kurā var kontrolēt sadzīves tehniku, izmantojot vienkāršu GSM balstītu tālruni, vienkārši nosūtot īsziņas pa viņa tālruni. Šajā projektā viedtālrunis nav vajadzīgs, tikai vecais GSM tālrunis darbosies, lai ieslēgtu un izslēgtu jebkuras mājas elektroniskās ierīces no jebkuras vietas. Šeit varat arī pārbaudīt vēl dažus bezvadu mājas automatizācijas projektus: IR tālvadības mājas automatizācija, izmantojot Arduino, Bluetooth kontrolēta mājas automatizācija kopā ar DTMF balstītu mājas automatizāciju, datora kontrolēta mājas automatizācija, izmantojot Arduino.
Darba skaidrojums
Šajā projektā Arduino tiek izmantots visa procesa kontrolei. Šeit mēs izmantojām GSM bezvadu sakarus, lai kontrolētu sadzīves tehniku. Mēs nosūtām dažas komandas, piemēram, “# A. apgaismojums ieslēgts *”, “# A. apgaismojums izslēgts *” un tā tālāk, lai kontrolētu maiņstrāvas sadzīves tehniku. Pēc tam, kad Arduino ir saņēmis dotās komandas, izmantojot GSM, Arduino nosūta signālu relejiem, lai ieslēgtu vai izslēgtu sadzīves tehniku, izmantojot releja draiveri.
Ķēdes komponenti:
- Arduino UNO
- GSM modulis
- ULN2003
- Relejs 5 volti
- Spuldze ar turētāju
- Savienojošie vadi
- Maizes dēlis
- 16x2 LCD
- Enerģijas padeve
- Mobilais telefons
Komandu virknē šeit esam izmantojuši prefiksu, kas ir “#A”. Šis prefikss tiek izmantots, lai identificētu, ka blakus atrodas galvenā komanda, un virknes beigās * norāda, ka ziņojums ir beidzies.
Kad mēs sūtām īsziņas uz GSM moduli pa mobilo tālruni, tad GSM saņem šo īsziņu un nosūta to Arduino. Tagad Arduino nolasa šo īsziņu un izraksta galveno komandu no saņemtās virknes un saglabā mainīgajā. Pēc tam Arduino salīdzina šo virkni ar iepriekš definētu virkni. Ja notikusi sakritība, Arduino ar releja draiveri nosūta signālu relejam, lai ieslēgtu un izslēgtu sadzīves tehniku. Relatīvais rezultāts tiek izdrukāts arī uz 16x2 LCD, izmantojot atbilstošas komandas.
Šajā projektā demonstrēšanai mēs izmantojām 3 nulles vatu spuldzi, kas norāda ventilatoru, gaismu un televizoru.
Zemāk ir saraksts ar ziņojumiem, kurus mēs nosūtām, izmantojot īsziņu, lai ieslēgtu un izslēgtu ventilatoru, apgaismojumu un televizoru:
S.nr. |
Ziņojums |
Darbība |
1 |
# A.fans uz * |
Ventilators IESLĒGTS |
2 |
# A.fans izslēgts * |
Ventilators IZSLĒGTS |
3 |
Iedegties # A. * |
Gaisma ir ieslēgta |
4 |
# Apgaismojums izslēgts * |
Gaisma izslēgta |
5 |
# A.tv vietnē * |
TV IESLĒGTS |
6 |
# A.tv izslēgts * |
TV izslēgts |
7 |
# Visu laiku * |
Viss ON |
8 |
# A.viss izslēgts * |
Visi izslēgti |
GSM modulis:
GSM modulis tiek izmantots daudzās sakaru ierīcēs, kuru pamatā ir GSM (globālās mobilo sakaru sistēmas) tehnoloģija. To izmanto, lai mijiedarbotos ar GSM tīklu, izmantojot datoru. GSM modulis saprot tikai AT komandas un var atbilstoši reaģēt. Pamata komanda ir “AT”, ja GSM reaģē labi, tad tā darbojas labi, pretējā gadījumā tā atbild ar “ERROR”. Ir dažādas AT komandas, piemēram, ATA, lai atbildētu uz zvanu, ATD, lai izsauktu zvanu, AT + CMGR, lai lasītu ziņojumu, AT + CMGS, lai nosūtītu īsziņas, utt. AT komandām jāseko Carriage return, ti, \ r (0D ar sešstūri), piemēram, “AT + CMGS \ r”. Mēs varam izmantot GSM moduli, izmantojot šīs komandas:
ATE0 - atbalss izslēgšanai
AT + CNMI = 2,2,0,0,0
ATD
AT + CMGF = 1
AT + CMGS = “Mobilais numurs”
>> Tagad mēs varam uzrakstīt savu ziņojumu
>> Pēc ziņojuma uzrakstīšanas
Ctrl + Z nosūtīt ziņojumu komandu (26 aiz komata).
ENTER = 0x0d HEX
SIM900 ir pilnīgs Quad-band GSM / GPRS modulis, kas nodrošina GSM / GPRS 850/900/1800 / 1900MHz veiktspēju balss, SMS un datu ar zemu enerģijas patēriņu.
Ķēdes apraksts
Šīs GSM bāzes mājas automatizācijas shēmas savienojumi ir diezgan vienkārši, šeit šķidro kristālu displejs tiek izmantots sadzīves tehnikas stāvokļa parādīšanai, kas ir tieši savienots arduino 4 bitu režīmā. LCD datu spraudņi, proti, RS, EN, D4, D5, D6, D7, ir savienoti arduino digitālo tapu numuriem 6, 7, 8, 9, 10, 11. Un GSM moduļa Rx un Tx kontakti ir tieši savienoti ar Tx un Rx attiecīgi Arduino tapa. GSM modulis tiek darbināts, izmantojot 12 voltu adapteri. 5 voltu SPDT 3 releji tiek izmantoti LIGHT, FAN un TV vadīšanai. Releji ir pievienoti arduino tapām 3, 4 un 5, izmantojot releja draiveri ULN2003, lai kontrolētu attiecīgi LIGHT, FAN un TV.
Kods Apraksts
Programmējot šo projektu, vispirms programmēšanā mēs iekļaujam šķidro kristālu displeja bibliotēku un pēc tam definējam LCD un sadzīves tehnikas datu un vadības tapas.
# iekļaut
Pēc tam, kad šī sērijas sakari ir inicializēti ar ātrumu 9600 b / s un dod virzienu izmantotajai tapai.
void setup () {lcd.begin (16,2); Sērijas sākums (9600); pinMode (vadīts, OUTPUT); pinMode (ventilators, OUTPUT); pinMode (Gaisma, OUTPUT); pinMode (TV, OUTPUT);
Datu sērijveida saņemšanai mēs izmantojām divas funkcijas, viena ir Serial.available, kas pārbauda, vai nāk kādi sērijveida dati, un otra ir Serial.read, kas nolasa datus, kas nāk sērijveidā.
while (Seriāls.pieejams ()) {char inChar = Seriāls.lasījums ();
Pēc datu sērijveida saņemšanas mēs tos esam saglabājuši virknē un pēc tam gaidām Enter.
void serialEvent () {while (Serial.available ()) {if (Serial.find ("# A."))) {digitalWrite (led, HIGH); kavēšanās (1000); digitalWrite (vadīts, LOW); while (Seriāls.pieejams ()) {char inChar = Seriāls.lasījums (); str = inChar; ja (inChar == '*') {temp = 1; atgriešanās; }
Kad ienāk Enter, programma sāk salīdzināt saņemto virkni ar jau definēto virkni un, ja virkne ir saskaņota, relatīvā darbība tiek veikta, izmantojot atbilstošu komandu, kas norādīta kodā.
void check () {if (! (strncmp (str, "tv on", 5)))) {digitalWrite (TV, HIGH); lcd.setCursor (13,1); lcd.print ("ON"); kavēšanās (200); } else if (! (strncmp (str, "tv off", 6))) {digitalWrite (TV, LOW); lcd.setCursor (13,1); lcd.print ("IZSLĒGTS"); kavēšanās (200); }