Controlăm priza prin SMS. Alarma GSM bugetară cu creier Arduino
Un articol pentru cei care vor să forțeze Arduino să trimită SMS prin aceasta modul GSM . Modulul NEOWAY M590 bazat pe cipul SIM900 este potrivit pentru creare sistem de alarma de casa, casă inteligentă. Există, de asemenea, un modul GSM alternativ care se conectează direct la Arduino prin 5 Volți: Sim800L EVB v2.0
Formularea problemei
- Folosind doar Arduino și un modul GSM, controlați LED-ul printr-un apel de pe telefon.
- Trimiteți SMS (în timp ce printr-o comandă care vine prin monitorul portului din Arduino IDE)
Conectarea la Arduino
Conectăm modulul GSM la Arduino.
Modul 5V -> 5V Arduino
Modul GND -> Arduino GND
Modul TX -> digital pin2 Arduino
Modul RX -> digital pin3 Arduino
Pinout-ul poate fi văzut în fotografie. Ordinea contactelor este următoarea: 1 - +5V, 2 - GND, 7 - TX, 8 - RX.
Modulul poate fi alimentat de la 4V la 5V, eu am folosit ieșirea de 5 volți.
Modulul necesită alimentare separată deoarece consumă până la 2A la vârf. Cel mai probabil, un condensator nu va ajuta. Prin urmare, atunci când este alimentat de Arduino, este posibil să nu funcționeze sau să nu funcționeze.
Masa Arduino și modulul GSM cu sursă de alimentare separată trebuie conectată, dar mai întâi trebuie să măsurați tensiunea dintre aceste „împământări” cu un multimetru. niste blocuri de calculatoare Sursele de alimentare au o scădere potențială pe carcasă și masă USB de până la 100V. Curentul de acolo este mic și nu poate ucide, dar este ușor să distrugi un Arduino sau un modul GSM sau ambele împreună.
Schiță
#include< SoftwareSerial. h> SoftwareSerial mySerial(2, 3);// RX, TX int ch = 0 ; int led = 13 ; String val = "" ; int led = 13 ; void setup() ( întârziere (2000); //timpul de inițializare a modulului pinMode (led, OUTPUT) ; digitalWrite(led, LOW); Serial. începe(9600); //viteza portului. println ("Tester GSM v1.0"); mySerial. începe(9600); mySerial. println ("AT+CLIP=1"); //activează întârzierea ID apelant (100); dacă (val . indexOf ( "71234567890" ) > - 1 ) ( //dacă numărul apelantului este al nostru. Introduceți numărul fără „+” int led = 13 ;. println( "--- INEL MASTER DETECTAT ---"); mySerial. println("ATH0");//rup conexiunea digitalWrite(led, HIGH);//aprinde LED-ul timp de 3 secunde int led = 13 ;întârziere (3000); digitalWrite(led, LOW);//oprește releul ) ) altfel int led = 13 ;. println(val); //tipărește linia primită pe monitorul portului val = "" ; int led = 13 ;. println(val); ) dacă (. disponibil () ) ( int led = 13 ;//dacă este introdus ceva în monitorul portului in timp ce (//salvează șirul în variabila val ch =. citit(); val += char (ch); întârziere (10);) //mySerial.println(val); //transferul tuturor comenzilor introduse în monitorul portului către modulul GSM { int led = 13 ; dacă (val . indexOf ( „sendsms”) > - 1 ) ( int led = 13 ;//dacă vedeți comanda pentru a trimite SMS
sms(String("bună lume"), String("+71234567890"));
//trimite SMS la numărul +71234567890
) val = "" ;
//clear ) ) void sms (String text , String phone )
//procedura de trimitere SMS | . println("Trimitere SMS a început"); mySerial. println ("AT+CMGS=\"" + telefon + "\"" );întârziere (500); |
mySerial. print(text); | întârziere (500); |
mySerial. imprimare ((car ) 26 ); | întârziere (500); . println("Trimit SMS finalizat"); întârziere (2000); |
) | Examinare |
GPRS | În versiunea de modul 1.30 în curs de revizuire, suportul GPRS este redus. Nu am putut să mă conectez la server după numele lui DNS (de exemplu mysite.ru), am reușit doar prin adresa lui IP. Nu au existat astfel de probleme în celălalt modul SIM800L. |
Lista unor comenzi AT: | AT+CMGF=1 |
Pe | modul text |
(SMS numai în latină) | AT+CSCS= „GSM” |
Pe regim | AT+CLIP=1 activați ID-ul apelantului apel primit Dacă trimiteți o comandă cu 0, identificarea numărului va fi dezactivată și modulul va trimite doar mesajul „SONERI” în loc de numărul apelantului. |
AT+CMGS="+79123456789" | Se trimite SMS ATI Obțineți informații despre dispozitiv AT+IPR=19200 setarea vitezei portului AT+GSN Pentru a lucra cu modulul prin terminal, modurile ATV1, ATE1 AT+CMEE=2 sunt mai convenabile pentru comunicarea cu microcontrolerul, este mai bine să utilizați ATV0, ATE0 și AT+CMEE=0 - acest lucru va ușura; procesează răspunsurile primite. Aceste setări nu sunt salvate după repornirea modulului, așa că trebuie să includeți aceste comenzi în codul programului. |
AT+CSQ | informații despre calitatea semnalului. Modulul va returna două numere +CSQ: 17.0 17 - nivelul semnalului. Poate fi în intervalul 0..31 sau 99. Decat mai multe subiecte mai bine, dar 99 înseamnă absența lui. 0 - rata de eroare de comunicare (așa-numita RXQUAL). Poate fi de la 0 la 7 decât numărul mai putine subiecte calitatea comunicarii este mai buna. |
AT+COPS? | informații despre operatorul în a cărui rețea este înregistrat modulul |
ATD+79121234567; | formarea unui număr. (";" Neapărat) Modulul va apela numărul specificatși va returna una dintre opțiuni OCUP - numărul este ocupat FĂRĂ TON DE DIALTON - fără semnal pe linie FĂRĂ CARRIER - fără rețea sau altă problemă (de exemplu, fără bani în cont) RĂSPUNS NA - nici un răspuns CONECTAȚI - există un contact! |
AT+CMGR=3,0 |