Programare GSM Arduino. Trimiterea de SMS prin Arduino și modulul GSM NEOWAY M590

Această bibliotecă vă permite să efectuați majoritatea operațiunilor de bază efectuate de un telefon GSM: lucrați cu apeluri vocale, trimiteți și primiți SMS-uri și, de asemenea, conectați-vă la Internet prin GPRS.

Placa de extensie GSM conține un modem care îi transmite datele primite prin intermediul rețelei GSM. port serial. Toate operațiunile sunt efectuate de modem ca o secvență de comenzi AT. Pentru a îmbunătăți lizibilitatea codului, biblioteca extrage funcții de nivel scăzut care funcționează cu modemul și cartela SIM. Modemul GSM interacționează cu Arduino prin intermediul interfață serială folosind biblioteca SoftwareSerial.

Fiecare comandă executată de modem, de regulă, este un fragment dintr-o secvență de comenzi care vizează îndeplinirea unei funcții. Biblioteca GSM este concepută având în vedere acest lucru și este capabilă să primească/returneze informații în orice etapă a secvenței de comandă.

Structura bibliotecii

Funcționalitatea bibliotecii GSM este destul de largă, așa că combină mai multe diverse clase:

  • Clasă GSM este responsabil pentru controlul modemului radio. Această clasă conține funcții de nivel scăzut pentru conectarea și înregistrarea unei plăci de extensie într-o rețea GSM. O instanță a acestei clase trebuie să fie declarată în toate programele care utilizează GSM/GPRS.
  • Clasă GSMVoiceCall responsabil pentru apelurile vocale.
  • Clasă GSM_SMS este responsabil pentru trimiterea și primirea mesajelor SMS.
  • Clasă GPRS este responsabil pentru conectarea la Internet.
  • În clasă GSMClient a fost implementat un client similar cu clientul din bibliotecile Ethernet și WiFi.
  • În clasă GSMServer a fost implementat un server similar cu serverul din bibliotecile Ethernet și WiFi. Notă: Unii ISP-uri/operatori blochează conexiunile de intrare de la rețea globală de internet, permițând doar conexiuni intranet. Consultați operatorul pentru restricțiile aplicabile privind datele.
  • O mulțime de clase de ajutor ca GSMScanner, GSMModem etc.

Compatibil cu biblioteca Ethernet

Dezvoltatorii au depus toate eforturile pentru a se asigura că biblioteca GSM este cât mai compatibilă cu biblioteca Ethernet. Datorită acestui fapt, transferul codului folosind biblioteci Ethernet sau WiFi pe un Arduino cu o placă de expansiune GSM ar trebui să fie destul de simplu. Cu toate acestea, pentru a rula programe scrise pentru Ethernet pe o placă de extensie GSM, nu este suficient să copiați pur și simplu codul. Acest lucru poate necesita modificări minore ale programului, cum ar fi conectarea bibliotecilor GSM și GPRS, obținerea setărilor de rețea de la furnizor etc.

Exemple

Toate exemplele de lucru cu un card de extensie GSM pot fi împărțite în două grupuri. Primul grup este reprezentat de exemple care demonstrează capacitățile plăcii (de exemplu, trimiterea de mesaje SMS, conectarea la Internet etc.). Al doilea grup este instrumentele cu care puteți depana funcționalitatea bibliotecii și hardware-ul Arduino la un nivel scăzut.

Bună ziua Din nou, o revizuire multiplă a componentelor electronice chinezești, ca de obicei despre un pic din toate, voi încerca să o fac scurt, dar va funcționa? Deci, întâlniți-vă Alarma GSM costă până la 700 ₽. Interesant? Vă rugăm să folosiți „cut”!

Să începem! Înainte de a începe, vă recomand să aruncați o privire la acesta, mai puține componente și o autonomie mai mare. Deci, „specificațiile tehnice”, cerințele de bază pentru semnalizare:

1) Notificați când senzorii sunt declanșați.
2) În cazul unei pene de curent, trebuie asigurată o oarecare autonomie.
3) Controlul alarmei prin SMS și apeluri.

Datorită faptului că procesul de creare a unei alarme a durat câteva luni și unii vânzători nu mai vând componentele care au fost achiziționate de la ei, linkurile vor fi actualizate către produsele de la alți vânzători care au numărul maxim sau aproape de numărul maxim de vânzări de produse. si cel mai bun pret. Prețurile din recenzie sunt actuale la data la care a fost scrisă.

Lista cu ceea ce veți avea nevoie:

Lista modificărilor

GSM_03_12_2016-14-38.hex- funcționare fixă ​​a dispozitivului cu modemul M590.
GSM_05_12_2016-13-45.hex- a adăugat comanda memtest din consolă, optimizând utilizarea RAM.
GSM_2016_12_06-15-43.hex- adăugarea rezultatelor comenzii în consolă, optimizarea memoriei. Ocupat: 49% SRAM.
GSM_2016_12_07-10-59.hex- acum numerele de telefon sunt adăugate și eliminate corect. Ocupat: 49% SRAM, 74% memorie flash.
GSM_2016_12_07-15-38.hex- a adăugat capacitatea de a conecta un senzor de mișcare, conectați la pinul A0 (in în acest caz, pinul A0 este folosit ca digital). S-au adăugat comenzi SMS PIROn, PIROoff. Ocupat: 48% SRAM, 76% memorie flash.
GSM_2016_12_08-13-53.hex- Acum, după ce a executat cu succes o comandă care nu trimite un mesaj SMS ca răspuns, dispozitivul clipește o dată LED-ul albastru. Acum, după o executare incorectă a unei comenzi care nu trimite un mesaj SMS ca răspuns, dispozitivul clipește de două ori LED-ul albastru. Acum, după inițializarea parametrilor dispozitivului, dacă modul „liniștit” este activat (SendSms = 0), dispozitivul clipește frecvent LED-ul albastru timp de 2 secunde. S-a remediat o eroare din cauza căreia numărul nu a fost întotdeauna șters din memorie folosind comanda DeletePhone. Ocupat: 48% SRAM, 78% memorie flash.
GSM_2016_12_11-09-12.hex- Adăugat comenzile consolei AddPhone și DeletePhone, sintaxa este similară cu comenzile SMS. Optimizarea memoriei. Ocupat: 43% SRAM, 79% memorie flash.
GSM_2017_01_03-22-51.hex- A fost implementat suport pentru expandoare de porturi I/O similare pe cipul PCF8574, pentru conectarea a 8 senzori suplimentari, inclusiv comutatoare Reed. Căutare automată adrese şi setare automată modul. Numele standard ale senzorilor și nivelul logic al răspunsului lor sunt modificate folosind comanda EditSensor. Conținutul SMS-ului de alarmă pentru senzorul principal (pin D0) a fost modificat: „Alarmă! Senzor principal! și senzor de mișcare (pin A0) „Alarmă! Senzor PIR! S-au adăugat comenzile EditSensor și I2CScan. Ocupat: 66% SRAM, 92% memorie flash.
GSM_2017_01_15-23-26.hex- Suport pentru modem A6_Mini. Controlul disponibilității alimentare externă(pin D7). S-au adăugat comenzi SMS WatchPowerOn, WatchPowerOff. S-au adăugat comenzile de consolă ListConfig, ListSensor. Acum comanda EditSensor SMS funcționează corect. Ieșire ușor tăiată informații de depanare la monitorul portului. Ocupat: 66% SRAM, 95% memorie flash.
GSM_2017_01_16-23-54.hex- Acum în mesajul de răspuns la comanda SMS „Info” este raportată și starea senzorului de mișcare. S-a remediat o eroare din cauza căreia uneori erau trimise mesaje SMS cu răspunsuri goale. Acum, dispozitivul notifică nu numai despre o oprire, ci și despre reluarea alimentării externe. Toate modemurile au început să vorbească mai puțin, iar acum monitorul portului este puțin mai curat. Ocupat: 66% SRAM, 95% memorie flash.
GSM_2017_02_04-20-23.hex- S-a remediat eroarea „Uită-te la pornire”. Acum, după dezarmare, „pinul de alarmă” este oprit. Acum, după ștergerea unui număr, consola afișează: informatii corecte. S-a remediat posibil o eroare din cauza căreia uneori erau trimise mesaje SMS cu răspunsuri goale. Ocupat: 66% SRAM, 90% memorie flash.
GSM_2017_02_14-00-03.hex- Acum mesajele SMS sunt trimise implicit, parametrul SendSms este din nou egal cu 1. Acum, când contactele senzorului principal de lame sunt închise (închiderea ușii), dispozitivul clipește cu un LED albastru timp de 2 secunde, semnalând funcționare normală senzor Ocupat: 66% SRAM, 90% memorie flash.
GSM_2017_03_01-23-37.hex- Comanda WatchPowerOn a fost eliminată. S-a adăugat comanda de consolă WatchPowerOff, identică cu comanda SMS. S-au adăugat comenzi WatchPowerOn1, WatchPowerOn2. WatchPowerOn1 - monitorizarea alimentării externe este activată dacă alarma este armată, WatchPowerOn2 - monitorizarea alimentării externe este întotdeauna activată. Funcția de armare și dezarmare implementată dispozitive externe, pinii A1(D15) și A2(D16) sunt utilizați pentru aceasta. Alarma se armează/se dezarmează când apare pe pinul A1(D15) nivel înalt+5V sau la pinul A2(D16) nivel scăzut GND. Pinul A1(D15) este tras până la GND, pinul A2(D16) este tras până la +5V prin rezistențe de 20 (10) kOhm. S-au adăugat comenzile GuardButtonOn și GuardButtonOff. Acum, după armare, LED-ul roșu clipește până când este verificată integritatea circuitului principal al comutatorului cu lame. Dacă circuitul este intact, LED-ul roșu se aprinde. Ocupat: 66% SRAM, 95% memorie flash.
GSM_2017_03_12-20-04.hex- Acum consola este și mai curată, dar dacă este activată modul de testare„TestOn”, apoi informații suplimentare sunt afișate în consolă. Problema „Trimis!” a fost remediată; informațiile despre trimiterea mesajelor sunt acum afișate corect în consolă. S-a remediat eroarea „repetă”. apel fals" Acum cererea de sold ar trebui să funcționeze corect pe toate modemurile. Ocupat: 67% SRAM, 95% memorie flash.
GSM_2017_04_16-12-00.hex- Corectat. Acum, comenzile Info și Money vor trimite întotdeauna un SMS de răspuns. Comanda GuardButtonOn a fost înlocuită cu comenzile GuardButtonOn1 și GuardButtonOn2. Ocupat: 67% SRAM, 99% memorie flash.
GSM_2017_04_21-09-43.hex - nu este recomandat pentru utilizare, doar în scopuri de testare, mulțumesc pentru identificarea erorilor :) - Acum parametrul sendsms nu afectează trimiterea de mesaje SMS pentru monitorizarea rețelei electrice. S-a adăugat comanda SMS DelayBeforeGuard responsabilă pentru întârzierea la armare, valoarea nu poate depăși 255 de secunde. S-a adăugat comanda SMS DelayBeforeAlarm, care este responsabilă pentru întârzierea trimiterii notificărilor și pornirea „pinului de alarmă” atunci când sunt declanșați senzorii, valoarea nu poate depăși 255 de secunde. Comenzile ClearSMS au fost eliminate, mesajele sunt acum șterse automat la primire. Ocupat: 68% SRAM, 100% memorie flash.
GSM_2017_04_22-20-42.hex- S-au remediat mai multe erori. Comenzile ClearSMS sunt din nou prezente în firmware. Optimizarea memoriei. Ocupat: 68% SRAM, 98% memorie flash.
GSM_2017_04_23-17-50.hex- Acum cererea de sold ar trebui să funcționeze corect pe toate modemurile. Armarea și dezarmarea cu dispozitive externe funcționează acum corect. Mesajele de răspuns SMS de la comanda Info nu trebuie să fie goale. Optimizarea memoriei. Ocupat: 68% SRAM, 98% memorie flash.
GSM_2017_04_24-13-22.hex- Acum comenzile consolei sunt trimise către modulul GSM numai dacă modul de testare este activat. Acum nu există nicio divizare între comenzile SMS și comenzile din consolă, toate comenzile existente pot fi transmise atât prin SMS, cât și prin consolă. Este posibil să fi fost remediată o eroare cu comanda Info. Optimizarea memoriei. Ocupat: 68% SRAM, 94% memorie flash.
GSM_2017_04_25-20-54.hex- S-a remediat o eroare în care comanda ListConfig a schimbat valoarea ultimului eveniment. Acum, la introducerea comenzilor prin consolă, mesajele SMS inutile nu sunt trimise. Este posibil să fi fost remediată o eroare cu comanda Info. Optimizarea memoriei. Ocupat: 66% SRAM, 94% memorie flash.
GSM_2017_04_30-12-57.hex- Ieșire activată temporar Informații suplimentare la consolă atunci când trimiteți mesaje SMS și generați un răspuns la comanda Info. Este posibil să fi fost remediată o eroare cu comanda Info. Optimizarea memoriei. Ocupat: 66% SRAM, 92% memorie flash.
GSM_2017_05_06-11-52.hex- Remediat cu funcția DelayBeforeAlarm. Ocupat: 66% SRAM, 93% memorie flash.
GSM_2017_05_23-21-27.hex- Ieșirea informațiilor către consolă a fost ușor modificată. S-a adăugat suport pentru modulele de extindere porturi pe PCF8574A cu adrese de la 0x38 la 0x3f inclusiv. S-a remediat o eroare c. Acum dispozitivul repornește automat după comenzile FullReset, ResetConfig, ResetPhone și dacă comanda MemTest este executată cu succes. S-a adăugat comanda WatchPowerTime. Acum este posibil să setați timpul după care va fi trimis un mesaj SMS despre deconectare sursă externă nutriţie. Ocupat: 67% SRAM, 94% memorie flash.
GSM_2017_05_26-20-22.hex- S-a rezolvat inițializarea memoriei senzorului plăcii de expansiune. Sintaxa comenzii AddPhone a fost modificată. S-a adăugat comanda EditMainPhone. Principiul de funcționare al sistemului de notificare a fost schimbat la declanșarea senzorului, vor fi trimise mai întâi mesajele SMS, după care se vor efectua apeluri vocale. Mesajele SMS de alarmă vor fi trimise către numerele de telefon cu semnul „S” (SMS). Apelurile vocale vor fi efectuate către numere cu semnul „R” (Sonerie). Mesajele despre oprirea/pornirea sursei de alimentare externe vor fi trimise la numerele de telefon cu semnul „P” (Putere). S-a adăugat comanda RingTime. Acum este posibil să setați durata unui apel vocal alarmant, parametrul poate avea o valoare de la 10 la 255 de secunde. Comanda RingOn/RingOff acum activează/dezactivează la nivel global alertele de apel vocal. S-a adăugat comanda ResetSensor. Ocupat: 68% SRAM, 99% memorie flash.
GSM_2017_06_02-17-43.hex- S-a adăugat parametrul „I” (Info) la comenzile AddPhone și EditMainPhone, care este responsabil pentru notificare prin sms despre armarea sau dezarmarea dispozitivului. Acum, după adăugarea numărului principal, dispozitivul se repornește automat. Acum puteți introduce numere identice în memoria dispozitivului. Atunci când adăugați al doilea număr duplicat și următoarele, atributele „M”, „S”, „P” și „I” vor fi eliminate automat din ele. Aceste numere vor fi folosite pentru apeluri vocale repetate atunci când senzorii sunt declanșați. A fost remediat un bug cu ieșirea incorectă a consolei după executarea comenzii AddPhone. Acum informațiile nu sunt afișate automat după adăugarea unui număr. S-a adăugat comanda Repornire. Ocupat: 69% SRAM, 99% memorie flash.
GSM_2017_06_11-00-07.hex- Acum, din nou, când contactele senzorului principal cu lame sunt închise (închiderea ușii), dispozitivul clipește cu un LED albastru timp de 2 secunde, indicând funcționarea normală a senzorului, dar nu ia în considerare dacă dispozitivul este armat sau dezarmat. Comenzile RingOn/RingOff au fost eliminate. Acum dispozitivul poate fi dezarmat în timpul unui apel de alarmă, acum sunt introduse fundal. Ocupat: 69% SRAM, 99% memorie flash.
GSM_2017_07_04-21-52.hex- Acum comanda Pauză nu trimite un SMS de răspuns. Comenzile TestOn și TestOff au fost eliminate. Atributul Management a fost eliminat din toate numerele. Ocupat: 68% SRAM, 96% memorie flash.
GSM_2017_07_24-12-02.hex- S-au adăugat comenzi ReedSwitchOn/ReedSwitchOff pentru monitorizarea senzorului principal de lame, acum poate fi pornit/dezactivat în același mod ca un senzor de mișcare. S-a remediat o eroare în comanda Info. Comenzile TestOn și TestOff sunt din nou prezente în firmware. Ocupat: 68% SRAM, 96% memorie flash.
GSM_2017_07_26-10-03.hex- S-a adăugat comanda ModemID. Detectare automată modemul se realizează numai dacă valoarea acestui parametru este 0. După setarea valorii parametrului egală cu 0, repornire automată dispozitive. Ocupat: 68% SRAM, 98% memorie flash.
GSM_2017_08_03-22-03.hex- Acum alarma poate controla dispozitivele externe. Pentru control se folosește ieșirea analogică A3 (D17 - folosit ca digital). Nivelul de ieșire logic (+5V sau GND) poate fi modificat după modificarea nivelului prin comanda de configurare, dispozitivul se va reporni automat; Durata semnalului de control al dispozitivului extern poate fi modificată. S-au adăugat comenzile ExtDeviceLevelLow, ExtDeviceLevelHigh, ExtDeviceTime, Open. Unele modificări în logica comenzilor de control. Optimizarea memoriei. Ocupat: 68% SRAM, 99% memorie flash.
GSM_2017_08_10-12-17.hex- Comenzile SmsOn/SmsOff, ReedSwitchOn/ReedSwitchOff, PIROn/PIROff și tot ce este legat de acestea au fost eliminate. Comanda DelayBeforeAlarm a fost înlocuită cu comenzi extinse. S-a schimbat rezultatul comenzii Info. Ieșirea comenzii ListConfig către consolă a fost optimizată. Acum, orice senzor digital cu niveluri de răspuns ridicate sau scăzute, inclusiv comutatoare Reed, pot fi conectați la pinii D6 și A0. Pinii D6 și A0 trebuie conectați la masă (GND) printr-o rezistență de 10 (20) kOhm. Dacă senzorul este setat la un nivel de răspuns scăzut (activat în modul comutator reed), atunci integritatea circuitului este verificată. Nivelul de declanșare logic la intrările D6 și A0 (+5V sau GND) poate fi schimbat după modificarea nivelului logic, dispozitivul se va reporni automat; Pentru fiecare dintre senzori (principal, secund, placă de expansiune PCF), atunci când este declanșat, se poate seta propria sa oră, după care va fi trimisă o notificare (SMS și/sau apel vocal). „Senzor PIR” a fost redenumit „Al doilea senzor”. S-a remediat funcționarea plăcii de expansiune, o eroare din cauza căreia dispozitivul a anunțat întotdeauna când au fost declanșați senzorii, indiferent dacă dispozitivul a fost armat sau nu. Acum puteți selecta un mod de funcționare în care dispozitivul poate monitoriza senzorii cardului de expansiune atât în ​​modul armat (GuardOn), cât și în modul dezactivat (GuardOff). S-au adăugat comenzi PCFForceOn/PCFForceOff, MainSensorLevelHigh/MainSensorLevelLow/MainSensorLevelOff, SecondSensorLevelHigh/SecondSensorLevelLow/SecondSensorLevelOff, MainDelayBeforeAlarm, SecondDelayBeforeDelayForeAlarm. Ocupat: 68% SRAM, 99% memorie flash.

*Versiunile ulterioare de firmware includ modificări față de versiunile anterioare.


Folosit porturi Arduino Nano v3

D4- ieșirea unui pin de „alarma” la declanșarea senzorului, pe acest pin este setat un semnal de nivel înalt
D5- ieșire inversă a pinului de „alarma” la declanșarea senzorului, pe acest pin este setat un semnal de nivel scăzut

D6- senzor lamelă. Începând de la versiunea GSM_2017_08_10-12-17.hex, orice senzor digital cu niveluri de răspuns ridicate sau scăzute, inclusiv comutatoare Reed, pot fi conectați la pinul D6. Pinul D6 trebuie tras la masă (GND) printr-o rezistență de 10 (20) kOhm.
D7- conectat la un divizor de tensiune de la o sursă de alimentare externă de +5V. Brațul superior 2,2 kOhm, brațul inferior 3,3 kOhm.

Divizor de tensiune


D8- Modem TX
D9- modem RX

D10- LED roșu
D11- LED albastru
D12- LED verde

Conexiune periferică:
A0- senzor de miscare. Începând cu versiunea GSM_2017_08_10-12-17.hex, orice senzor digital cu un nivel de răspuns ridicat sau scăzut, inclusiv întrerupătoarele cu lame, pot fi conectați la pinul A0. Pinul A0 trebuie tras la masă (GND) printr-o rezistență de 10 (20) kOhm.

A1- Conectați-vă pentru control extern. Alarma se armează/se dezarmează atunci când la intrare apare un nivel ridicat de +5V.
A2- Intrare inversă pentru control extern. Alarma se armează/se dezarmează atunci când la intrare apare un nivel GND scăzut.

A3- Ieșire configurabilă (+5V sau GND) pentru controlul dispozitivelor externe. Când se primește o comandă de control, valoarea la această ieșire se modifică în funcție de ceea ce a fost setat pentru o perioadă de timp stabilită.

A4- SDA I2C
A5- SLC I2C
, pentru conectarea a 8 senzori suplimentari.


Comenzi de control pentru firmware hexadecimal

Atenţie! Echipe dedicate cu aldine pot fi executate doar de la numărul principal, deoarece sunt responsabili pentru configurarea dispozitivului. Alte comenzi pot fi executate din numere cu atributul „Management”.

SMS - comenzile de control nu sunt sensibile la majuscule:
AddPhone- Adăugați un număr de telefon. În total, nu pot fi adăugate mai mult de 9 numere + 1 număr principal, care este salvat automat în memorie prima dată când apelați dispozitivul după resetarea la setările din fabrică folosind comenzi Resetați telefonul sau Resetare completă. Aceste. oricine a apelat pentru prima dată dispozitivul după ce l-a resetat la setările din fabrică este „master”, acest număr este introdus în prima celulă de memorie și nu poate fi schimbat sau șters prin SMS. Nu este posibil să adăugați două numere identice.
Exemplu de comandă:



Sintaxa comenzii:

AddPhone- echipa
: - separator
5 - scrieți în a cincea celulă de memorie
+71234567890 - număr de telefon
Până la versiunea GSM_2017_05_26-20-22.hex:
a - Parametrul „Alarmă” - mesajele SMS vor fi trimise către numerele cu acest parametru - mesaje despre activarea alarmei și mesaje despre armare sau dezarmare.
Începând cu versiunea GSM_2017_05_26-20-22.hex:
m - Parametru „Management” - gestionarea alarmelor este activată
s - parametrul „SMS” - va fi trimis mesaj sms când senzorii sunt declanșați
r - Parametrul „Ring” - se va efectua un apel vocal atunci când senzorii sunt declanșați
p - Parametrul „Putere” - va fi trimis un mesaj SMS la pornirea/oprirea alimentării externe
i - Parametrul „Info” - va fi trimis un mesaj SMS la armare sau dezarmare
Dacă lipsesc parametrii „m”, „s”, „r”, „p”, „i”, telefonul este stocat în memorie, dar nu este utilizat în niciun fel.


Ștergeți telefonul- Ștergeți numărul de telefon.
Exemplu de comandă:

Sintaxa comenzii:

DeletePhone - comandă
: - separator
+71234567891 - număr de telefon


EditațiMainPhone- Modificați parametrii „s”, „r”, „p”, „i” ai telefonului principal, acest număr este stocat în prima celulă de memorie.
Exemplu de comandă:

Sintaxa comenzii:

EditMainPhone - comandă
: - separator
srpi - parametri


BalanceNum- Modificarea numărului cererii de sold și procesarea duratei răspunsului la cerere. Valoarea implicită pentru Beeline: #100#L22.
Exemplu de comandă:

Sintaxa comenzii:

BalanceNum - comandă
: - separator
#103# - numărul cererii de sold
L24 - Lungimea (len) răspunsului transmis este de 24 de caractere, tăiem spam-ul din cererea de sold.


Editați senzorul- Schimbați numele senzorului și nivelul de răspuns logic. În total, nu pot exista mai mult de 8 senzori suplimentari. După modificarea parametrilor, dispozitivul trebuie repornit.
Exemplu de comandă:
EditSensor:1+Datchik dvizheniya v koridore#h

Sintaxa comenzii:

EditSensor - comandă
: - separator
1 - scrieți în prima celulă de memorie
+ - separator
Datchik dvizheniya v koridore - numele senzorului, nu poate depăși 36 de caractere, inclusiv spații.
#h - Semnul unui nivel logic ridicat de la senzor, la primirea căruia se va declanșa o alarmă. Dacă lipsește „#h”, alarma va fi declanșată când se primește un nivel logic scăzut de la senzor.


SleepTime- Timpul de „adormire” a alarmei la primirea comenzii SMS „Pauză” este indicat în minute. Valoarea implicită: 15, nu poate fi mai mică de 1 sau mai mare de 60.
Exemplu de comandă:

Sintaxa comenzii:

SleepTime - comandă
: - separator
20 - 20 de minute de „somn”.


AlarmPinTime- Timpul pentru care alarma/pin invers este pornit/dezactivat este indicat în secunde. Valoarea implicită: 60, nu poate fi mai mică de 1 secundă și mai mare de 43200 secunde (12 ore).
Exemplu de comandă:

Sintaxa comenzii:

AlarmPinTime - comandă
: - separator
30 - 30 de secunde pentru a porni/dezactiva pinul de alarmă.


DelayBeforeGuard- Timp înainte de armarea dispozitivului, după primirea comenzii corespunzătoare.
Exemplu de comandă:

Sintaxa comenzii:

DelayBeforeGuard - comandă
: - separator
25 - 25 de secunde înainte de armare


DelayBeforeAlarm- Timpul după care va fi trimisă o notificare prin SMS de „alarma” dacă alarma nu a fost dezarmată în această perioadă de timp. Înlocuit cu comenzi extinse începând cu versiunea GSM_2017_08_10-12-17.hex
Exemplu de comandă:

Sintaxa comenzii:

DelayBeforeAlarm - comandă
: - separator
40 - 40 de secunde înainte de a trimite o notificare de „alarma”.


WatchPowerTime- Timp în minute după care va fi trimis un mesaj SMS care indică faptul că sursa externă de alimentare este oprită. Dacă alimentarea externă este restabilită înainte de expirarea timpului setat, mesajul nu va fi trimis.
Exemplu de comandă:

Sintaxa comenzii:

WatchPowerTime - comandă
: - separator
5 - 5 minute înainte de a trimite mesajul SMS


RingTime- Durata unui apel vocal alarmant, parametrul poate avea o valoare de la 10 la 255 de secunde.
Exemplu de comandă:

Sintaxa comenzii:

RingTime - comandă
: - separator
40 - 40 durata apelului va fi de 40 de secunde, după care va fi apelat următorul abonat.


ModemID - Instalare forțată modelul modemului utilizat. Valori posibile: 0 - auto-detecție modem, 1 - M590, 2 - SIM800l, 3 - A6_Mini.
Exemplu de comandă:

Sintaxa comenzii:

ModemID - comandă
: - separator
2 - ID modem.


ExtDeviceTime- Numărul de secunde cu care se va modifica nivelul semnalului la ieșirea de control a dispozitivului extern.
Exemplu de comandă:

Sintaxa comenzii:

ExtDeviceTime- comanda
: - separator
5 - 5 secunde


ExtDeviceLevelLow- Dispozitivul extern conectat la ieșirea A3 este controlat de un nivel scăzut al semnalului (GND). Ieșirea va fi implicit la un nivel ridicat de +5V până când este primită o comandă de control de la un dispozitiv extern
ExtDeviceLevelHigh- Un dispozitiv extern conectat la ieșirea A3 este controlat de un nivel ridicat de semnal (+5V). Ieșirea va fi implicit la GND scăzut până când este primită o comandă de control al dispozitivului extern.

Resetați senzorul- resetarea senzorilor de expansiune de porturi

ResetConfig- resetează setările la setările din fabrică

Resetați telefonul- ștergerea tuturor din memorie numere de telefon

Resetare completă- resetați setările, ștergeți toate numerele de telefon din memorie, restaurați valoarea implicită a comenzii BalanceNum.

RingOn- activați notificarea apelând numărul „principal” înregistrat în prima celulă de memorie atunci când senzorul este declanșat. Eliminat începând cu versiunea GSM_2017_06_11-00-07.hex
RingOff- dezactivați notificarea sunând când senzorul este declanșat. Eliminat începând cu versiunea GSM_2017_06_11-00-07.hex

SmsOn- activați notificarea prin SMS când senzorul este declanșat. Eliminat începând cu versiunea GSM_2017_08_10-12-17.hex
SMSOff- dezactivați notificarea prin SMS când senzorul este declanșat. Eliminat începând cu versiunea GSM_2017_08_10-12-17.hex

PIROn- activați procesarea senzorului de mișcare
PIROoff- dezactivați procesarea senzorului de mișcare

ReedSwitchOn- permite procesarea senzorului principal de lamelă
ReedSwitchOff- dezactivați procesarea senzorului de lamelă principal

WatchPowerOn- activați controlul alimentării externe, va fi trimis un mesaj SMS despre oprirea alimentării externe cu condiția ca sistemul de alarmă să fie armat. Eliminat începând cu versiunea GSM_2017_03_01-23-37.

WatchPowerOn1- activați controlul alimentării externe, va fi trimis un mesaj SMS despre oprirea alimentării externe cu condiția ca sistemul de alarmă să fie armat.
WatchPowerOn2- activați controlul alimentării externe, va fi trimis în orice caz un mesaj SMS despre oprirea alimentării externe

WatchPowerOff- opriți controlul extern al alimentării

GuardButtonOn- controlul alarmei prin dispozitive externe sau butonul este activat incepand cu versiunea GSM_2017_04_16-12-00.
GuardButtonOn1- functie setarea sau eliminarea protecția prin dispozitive externe sau butonul este activată
GuardButtonOn2- functie numai producții armat de dispozitive externe sau butonul este pornit dezarmarea se face apelând dispozitivul sau folosind o comandă SMS.
GuardButtonOff- controlul alarmei de către dispozitive externe sau butonul este dezactivat

PCForceOn- monitorizarea constantă a unui grup de senzori ai modulelor de expansiune
PCFForceOff- monitorizarea unui grup de senzori modulului de expansiune numai atunci când dispozitivul este armat

MainSensorLevelHigh- va fi trimisă o notificare de alarmă când apare un semnal de nivel înalt (+5 V) la intrarea (D6) de la senzor
MainSensorLevelLow- va fi trimisă o notificare de alarmă când apare un semnal de nivel scăzut (GND) la intrarea (D6) de la senzor
MainSensorLevelOff- procesarea intrării senzorului (D6) este dezactivată

SecondSensorLevelHigh- va fi trimisă o notificare de alarmă când apare un semnal de nivel înalt (+5 V) la intrarea (A0) de la senzor
SecondSensorLevelLow- va fi trimisă o notificare de alarmă când apare un semnal de nivel scăzut (GND) la intrarea (A0) de la senzor
SecondSensorLevelOff- procesarea intrării senzorului (A0) este dezactivată

MainDelayBeforeAlarm- timpul după care va fi trimisă o notificare SMS de „alarma” la declanșarea senzorului principal (D6), dacă alarma nu a fost dezarmată în această perioadă de timp. Sintaxa este aceeași cu comanda DelayBeforeAlarm.
SecondDelayBeforeAlarm- timp după care va fi trimisă o notificare SMS de „alarma” la declanșarea unui senzor suplimentar (A0), dacă alarma nu a fost dezarmată în această perioadă de timp. Sintaxa este aceeași cu comanda DelayBeforeAlarm.
PCFDelayBeforeAlarm- timpul după care se va trimite o notificare SMS de „alarma” la declanșarea senzorilor plăcii de expansiune (PCF8574), dacă alarma nu a fost dezarmată în această perioadă de timp. Sintaxa este aceeași cu comanda DelayBeforeAlarm.

GuardOn - braț
GuardOff - îndepărtați protecția

Deschidere - comandă de control al dispozitivului extern

Info - verificați starea, ca răspuns la acest mesaj va fi trimis un SMS cu informații despre ce număr a fost activată/dezactivată securitatea

Pauză - întrerupe sistemul pentru un timp stabilit prin comandă timpul de somn în minute, sistemul nu răspunde la declanșările senzorului.

TestOn - modul de testare este pornit, LED-ul albastru clipește.
TestOff - modul de testare este dezactivat.

LedOff - stinge LED-ul de standby.
LedOn - aprinde LED-ul de standby.

Bani - cerere de sold.

ClearSms - Ștergeți toate sms-urile din memorie

Comenzi de consolă (până la versiunea GSM_2017_04_24-13-22.hex) - introduse în monitorul portului IDE Arduino:

AddPhone - similar cu comanda sms AddPhone

DeletePhone - similar cu comanda sms DeletePhone

EditSensor - similar cu comanda sms EditSensor

ListPhone - scoate la portul monitor o listă de telefoane stocate în memorie

ResetConfig - similar cu comanda ResetConfig sms

ResetPhone - similar cu comanda sms ResetPhone

FullReset - similar cu comanda sms FullReset

ClearSms - similar cu comanda ClearSms sms

WatchPowerOn1 - similar cu comanda SMS WatchPowerOn1
WatchPowerOn2 - similar cu comanda sms WatchPowerOn2
WatchPowerOff - similar cu comanda sms WatchPowerOff

GuardButtonOn - similar cu comanda sms GuardButtonOn. Eliminat începând cu versiunea GSM_2017_04_16-12-00
GuardButtonOn1 - similar cu comanda sms GuardButtonOn1
GuardButtonOn2 - similar cu comanda sms GuardButtonOn2
GuardButtonOff - similar cu comanda sms GuardButtonOff

Memtest - test memorie nevolatilă dispozitiv, toate setările dispozitivului vor fi resetate, similar comenzii FullReset.

I2CScan - căutați și inițializați dispozitivele acceptate pe magistrala I2C.

ListConfig - afișează configurația curentă a dispozitivului pe monitorul portului.

ListSensor - ieșire către monitorul portului pentru configurația curentă a senzorului.

UPD. Când utilizați un senzor de mișcare, pentru a evita falsele pozitive în timpul funcționării modemului, este necesar între ace GNDŞi A0 Arduino pune rezistență, multumesc camarade
AllowPhone = („70001234501”, „70001234502”, „70001234503”, „70001234504”, „70001234505”) - numere care au permisiunea de a gestiona securitatea.
AlarmPhone = („70001234501”, „70001234502”) - Numere pentru trimiterea notificărilor prin SMS atunci când senzorul este declanșat și notificări despre dezarmare sau armare. Primul număr din listă va fi apelat când senzorul este declanșat dacă comanda RingOn este executată implicit, această opțiune este activată. Acest lucru se face deoarece mesajele SMS pot ajunge cu o oarecare întârziere, dar apelul ar trebui să fie efectuat imediat.

Dacă se primește un apel de la un număr autorizat sau un mesaj SMS cu comanda GuardOn/GuardOff, atunci, în funcție de starea curentă de securitate, va fi trimis un mesaj SMS despre armare sau dezarmare către numerele listate în matricea AlarmPhone și un Mesajul SMS va fi trimis și la numărul de la care a venit apelul.

Când senzorul este declanșat Mesajele SMS sunt trimise către toate numerele din matricea (listă) AlarmPhone și se efectuează un apel vocal către primul număr din această matrice.

Indicație luminoasă:
LED-ul se aprinde roșu - este armat.
LED-ul se aprinde verde- dezarmat, activat/dezactivat prin comanda SMS LedOn/LedOff.
LED-ul clipește permanent albastru - indică că totul este în ordine cu Arduino, placa nu este înghețată, este folosită exclusiv pentru depanare, este pornit/oprit prin comanda SMS TestOn/TestOff.
* Codul conține funcția LedTest(), clipește cu un LED albastru, este făcut doar pentru a monitoriza Arduino, clipește - înseamnă că funcționează, nu clipește - este înghețat. Inca nu am inchis :)

NU este relevant!

Conectarea a 2 sau mai mulți senzori pt deschide firmware-ul(se aplică numai pentru acest firmware sketch_02_12_2016.ino)
Pentru a conecta senzori reed suplimentari, folosim pini digitali liberi D2, D3, D5 sau D7. Schema de conectare cu senzor suplimentar pe D7.

Modificări necesare în firmware
... #define DoorPin 6 // Numărul de intrare conectat la senzorul principal int8_t DoorState = 0; // Variabilă pentru stocarea stării senzorului principal int8_t DoorFlag = 1; // Variabilă pentru stocarea stării senzorului principal #define BackDoorPin 7 // Număr de intrare conectat la senzorul suplimentar int8_t BackDoorState = 0; // Variabilă pentru stocarea stării senzorului suplimentar int8_t BackDoorFlag = 1; // Variabilă pentru a stoca starea senzorului suplimentar...
void setup() (... pinMode(DoorPin, INPUT); pinMode(BackDoorPin, INPUT);...
... void Detect() ( // Citiți valorile de la senzori DoorState = digitalRead(DoorPin); BackDoorState = digitalRead(BackDoorPin); // Procesează senzorul principal dacă (DoorState == LOW && DoorFlag == 0) ( DoorFlag = 1; delay(100); if (LedOn == 1) digitalWrite(GLed, LOW if (DoorState == HIGH && DoorFlag == 1)( DoorFlag = 0; delay(100); ) //Se procesează dacă (BackDoorState == LOW && BackDoorFlag == 0) ( BackDoorFlag == 1; întârziere (100); dacă (LedOn == 1) digitalWrite(GLed, LOW); Alarm(); ) dacă (BackDoorState == HIGH && BackDoorFlag = = 1)( BackDoorFlag = 0; întârziere (100); ) ) ...

Și încă un lucru:
1. Este mai bine să folosiți diode nominale pentru un curent de 2 A, deoarece modulul transportă un curent de 1 A și mai trebuie să pornim Arduino și modemul cu ceva. Această instanță folosește diode 1N4007 dacă eșuează, înlocuiți-le cu cele 2 A.
2. Am folosit toate rezistentele pentru LED-ul la 20 kOhm, pentru a nu ilumina tot coridorul noaptea.
3. Am plasat și o rezistență de 20 kOhm pe senzorul reed între pinul GND și pinul D6.

Asta e tot deocamdată. Vă mulțumim pentru atenție! :)

Plănuiesc să cumpăr +204 Adăugați la favorite Mi-a placut recenzia +112 +243

Shield GPRS/GSM SIM900 cu antenă
SIM900 GPRS/GSM Shield Development Board Kit Quad-Band pentru compatibil Arduino

Modul pentru operarea microcontrolerului Dispozitivele Arduinoși altele similare în rețelele celulare conform standardelor GSM și GPRS. Axat pe utilizarea în sisteme de automatizare și control. Schimbul de date cu alte module are loc prin interfață UART. Shield GPRS/GSM SIM900 cu antenă poate interfața direct cu microcontrolerul prin interfața UART sau poate funcționa împreună cu computer personal atunci când utilizați un convertor de interfață portPC-UART. Acest lucru este posibil datorită compatibilitate software la nivelul clasei de comenzi utilizate pentru controlul modemurilor – comenzi AT.
Obiectele sunt monitorizate și controlate prin schimbul de date la îndemână comunicatii mobile. Prevăzut comunicare vocală, trimiterea de SMS-uri, MMS și multe alte funcții și servicii. Funcționarea modulului se bazează pe componenta SIM900.

Articol în limba rusă dintr-o revistă despre componenta SIM900. Componenta a fost dezvoltată de SIMCom Wireless Solutions. Site-ul SIMCom are o versiune în limba rusă. Placa modulului GSM de pe partea componentelor conține conectori pentru conectarea unei antene, căști și un microfon. Pe partea de lipit a plăcii există un suport pentru baterie CR1220 de 3 volți care susține funcționarea ceasului modulului și un container pentru instalarea unei cartele SIM.
Una dintre aplicațiile dispozitivului este un sistem de urmărire a mișcării vehiculului în combinație cu GLONASS sau dispozitiv GPS. Trimiterea de mesaje SMS vă permite să utilizați modulul în expediere, alarma wireless si in sisteme de securitate. Ca urmare a evenimentelor în desfășurare, mesajele pot fi trimise diverse SMS-uri: „Oprirea de urgență a liftului 2 al clădirii nr. 34”, „Ușa mașinii este deschisă”, „Subisolul este deschis”, „Tensiunea de 220 V este oprită”, „ Ușa de la intrare Dacha este deschisă”, „Iluminatul este aprins”, „Temperatura în seră este sub critică”. Modulul este indispensabil pentru monitorizarea și controlul obiectelor aflate în mișcare distante mari. Sau în cazul ștergerii operatorului pe distanta lunga dintr-un obiect staționar.

Shield GPRS/GSM SIM900 cu antenă oferă oportunități ample studiind funcționarea componentei SIM900. Instalarea componentei SIM900 se realizează cel mai mult tehnologii moderne de ce lipiți la placa de circuit imprimat SIM900 în condiții de laborator este foarte dificil. Având un modul cu SIM900 instalat, puteți efectua experimente privind utilizarea componentei SIM900. Când este folosit în propriile dezvoltări Componenta SIM900 poate fi depanată softwareși verificarea soluțiilor circuitelor.

Caracteristici

Nutriţie
tensiune, V
nominal 5
intervalul 4,8-5,2
actual
modul normal 50-450 mA
în modul de repaus 1,5 mA
impuls maxim 2 A
Suportă carduri SIM de 1,8 și 3 V
Benzile de comunicatie 850, 900, 1800, 1900 MHz
Suporta rețeaua 2G
Puterea de transmisie în benzi diferite
1 W 1800 și 1900 MHz
2 W 850 și 900 MHz
Conform Standard GSM fazele 2/2+
Încorporat protocoale TCPși UDP
Clasa de transmisie date GPRS multi-slot clasa 10/8
Codecuri audio HR, FR, EFR, AMR, anulare eco
CSD până la 14,4 kbit/s
Stiva PPP
MUX (07.10)
Protocoale HTTPși FTP
Este posibil să trimiteți semnale DTMF și să redați înregistrări ca pe un robot telefonic
Suport pentru ceasul în timp real RTC
Temperatura, ℃
aer in timpul functionarii -30...75
depozitare -45...90
dimensiuni 86 x 58 x 19 mm

Componentele de control

Comutatorul de selectare a puterii setează sursa de alimentare: externă, conectată la un conector coaxial sau sursa de alimentare a modulului microcontrolerului Arduino.

Tasta de pornire pornește sau oprește alimentarea când este apăsată și menținută timp de 2 secunde.

Indicaţie

Starea modulului este indicată de 3 LED-uri:
PWR (verde) - indicator de putere al modulului,
Stare (roșu) - indicator de alimentare a componentelor SIM900,
Net Light (verde) - conexiune la rețea.
Mesaje LED Net Light.
Oprit - SIM900 nu funcționează.
Clipește la intervale, indicate în secunde:
0.064 pornit și 0.8 oprit - rețeaua nu a fost detectată,
0,064 pornit și 0,3 oprit - rețea detectată,
0,064 pornit, 0,03 oprit - GPRS conectat.

Contacte

Componenta SIM900 conține un port UART, semnalele sale sunt transmise la pinii componentei și conectate la jumperi care determină ce pini ai modulului Shield GPRS/GSM SIM900 vor fi conectați la portul UART al componentei SIM900 cu D0, D1 sau D7, D8.
UART Shield GPRS/GSM poate fi conectat: la interfața hardware a MK prin contactele TXD și RXD ale modulului Shield GPRS/GSM, D0, D1 sunt utilizate pentru aceasta. Sau la un software emulat Arduino, pentru aceasta se folosesc contactele D7 și D8 ale modulului Shield GPRS/GSM. Interfața completă UART are 10 semnale de ieșire la pini din colțul plăcii: R1, DCD, DSR, CTS, RTS, GND, 2V8, TX, RX, DTR.
12 persoane de contact semnate linii digitale I/O-urile GPIO sunt situate în colțul plăcii. Există 2 pini de semnal de ieșire cu modularea lățimii impulsului PWM1, PWM2. Pin ADC de intrare ADC. Interfața de contor de timp încorporată are 4 contacte. Denumirile PIN: DISP_CLK, DISP_DATA, DISP_D/C, DISP_CS.
Pinul D9 este folosit pentru controlul programului pornirea sau oprirea SIM900.
Placa are un conector pentru conectarea unei antene.

Atribuirea pinului componentei SIM900.

Pornire și oprire externă

Puteți porni sau opri modulul folosind semnalul de la intrarea de control D9. Pentru a schimba starea, un impuls care durează 1 s este trimis către D9. Schimbarea stării are loc la 3,2 s după începerea pulsului.

Activarea modulului. Grafice ale tensiunii de alimentare a modulului, impulsului de control extern și indicatorului de alimentare STARE.

Când controlați modulul cu un dispozitiv de control, pornirea trebuie să aibă loc fără utilizare Butoane de alimentare cheie, adică imediat după ce este aplicată alimentarea. Pentru a face acest lucru, mai multe comenzi ar trebui adăugate la programul MK.

Void powerUpOrDown()
{
pinMode(9, IEȘIRE);
digitalWrite(9,LOW);
întârziere (1000);
digitalWrite(9,HIGH);
întârziere (2000);
digitalWrite(9,LOW);
întârziere (3000);
}

Acest grup de comenzi din program poate fi folosit și pentru a opri modulul. De asemenea, puteți opri modulul GSM trimițând o comandă AT.

GSM-lib scris pentru Arduino versiuni IDE 1.0. Descărcați cea mai recentă versiune a bibliotecii de pe exemple gata făcute poate fi folosit din depozitul de proiect. Pentru a instala, despachetați arhiva GSM în directorul biblioteci (/arduino-1.0/libraries/GSM). După pornirea mediului Dezvoltare Arduino, în meniul programului „Fișier -> Exemple” va apărea articolul GSM, cu exemple de schițe.

Biblioteca GSM este proiectată să funcționeze cu scutul „ ”. Este compatibil hardware cu Placi Arduino(Uno, Duemilanove și alți analogi). Când utilizați alte plăci, poate fi necesar să faceți modificări la GSM.cpp pentru a indica portul corect la care este conectată linia de activare a modemului de la scut.

ÎN momentul prezent Biblioteca implementează următoarea funcționalitate.

  • Înregistrare în rețeaua GSM
  • Se trimite SMS
  • Primirea și analizarea SMS-urilor
  • Primiți apeluri primite
  • Verificarea stării conexiunii cu rețeaua GSM, restabilirea rețelei dacă semnalul este pierdut

Înregistrare în rețeaua GSM

Pentru a înregistra modemul în rețea, trebuie să specificați codul PIN al cartelei SIM. Este important să rețineți că dacă specificați număr greșit, cartela SIM poate fi blocată, deoarece functia de initializare se va repeta periodic pana cand noroc. Procesul de inițializare durează de obicei aproximativ 1 minut.

Inițializarea primară este efectuată în funcția setup().

#include #include const char PIN PROGMEM = "0000"; // PIN void setup() (în timp ce (GSM.Init(PIN))<0); // Регистрация в сети GSM.NewSMSindic(); // Настройка индикатора новых SMS GSM.WaitCall(); // Ждем входящие вызовы GSM.WaitSMS(); // Ждем входящих SMS }

Se trimite SMS

Pentru a trimite mesaje text, utilizați funcția SendSMS(), care trece 2 parametri - numărul destinatarului SMS și mesajul în sine.

În timp ce(GSM.SendSMS(RemoteID, „Bună ziua de la Arduino!”)< 0);

Unde RemoteID este numărul destinatarului. Este de preferat să plasați această constantă în antetul programului.

Const char RemoteID PROGMEM = "+79280000000";

Textul mesajului poate fi, de asemenea, generat dinamic.

String textMessage; textMessage += "Senzor1"; textMessage += "Senzor2"; char Out; textMessage.toCharArray(Out,(textMessage.length())+1); while(GSM.SendSMS(RemoteID, Out)< 0);

Primirea și analizarea SMS-urilor

Pentru a citi mesajele SMS primite, utilizați funcția ReadSMS(), căreia îi trec 2 parametri - indexul SMS și indicatorul unde va fi copiat textul. Mai jos este un fragment dintr-o schiță care analizează textul unui mesaj primit. Când SMS-ul este egal cu 1, efectuăm o acțiune, iar când este egal cu 2, facem o altă acțiune. Pentru un exemplu complet al schiței SmsCheck.ino, vezi exemple.

Dacă (GSM.CheckSMS()== 1) ( //Există un SMS nou GSM.ReadSMS(NewSMS_index, (char*) SMStxt); GSM.DeleteAllSMS(); // Şterge SMS (nu vom acumula!) strSMS = String( SMStxt); if(strSMS == "1") ( // efectuează acțiunea 1 aici) if(strSMS == "2") ( // execută acțiunea 2 aici) GSM.WaitCall();

Nota. Biblioteca GSM poate funcționa numai cu caractere latine, nu este acceptată în prezent.

Primiți apeluri primite

Această funcționalitate este utilă atunci când trebuie să obțineți un răspuns destul de rapid din partea scutului. În timp ce mesajele SMS pot fi livrate cu o ușoară întârziere, apelurile primite apar aproape instantaneu. În plus, utilizarea unei astfel de funcționalități va fi gratuită dacă nu ridicați telefonul.

De exemplu, puteți efectua un apel către scut, puteți verifica numărul apelantului pe Arduino și, dacă se potrivește cu numărul șablonului, trimiteți-i un SMS cu citirile senzorului. Următorul fragment implementează o funcționalitate similară. Pentru versiunea completă a schiței CallCheck.ino, vedeți exemple.

Dacă (IncomingCall == 1) ( //a sosit un apel! în timp ce (GSM.TerminateCall()<0); // Ложим трубку IncomingCall = 0; // Проверяем, если номер звонящего CallerID совпал с шаблоном RemoteID if (strstr_P(CallerID, RemoteID)) { while(GSM.SendSMS(RemoteID, "Hello from Arduino!") < 0);// SMS из SRAM памяти } GSM.WaitCall(); }

Verificarea stării conexiunii cu rețeaua GSM

Există situații în care conexiunea la rețea se pierde. Pentru a detecta pierderea rețelei, utilizați funcția CheckStatus(), care returnează 0 atunci când conexiunea la rețea este pierdută. Un exemplu de utilizare este dat în următorul bloc de cod.

// La anumite intervale verificăm starea conexiunii GPRS! if(currentMillis - previousMillis > interval) ( if ((GSM.CheckStatus() != 1)) ( // Conexiunea GPRS nu a fost stabilită! while (GSM.Init(PIN))<0); // Делаем инициализацию } GSM.WaitCall(); currentMillis = previousMillis = millis(); }

Executarea comenzilor AT arbitrare dintr-o schiță

Pentru a executa comenzi AT dintr-o schiță, este utilizată funcția WriteStr_P().

GSM.WriteStr_P(PSTR("AT\r\n"));

Aș dori să vă prezint o modalitate foarte simplă de a controla puterea de la distanță.
Vom folosi prize RC gata făcute, așa că nu va trebui să lipim nimic. Acest lucru este foarte tare, pentru că este mai bine să nu atingeți 220 V (pentru începători).

Cod

Dacă nu utilizați GSMSHIELD, ci o altă bibliotecă, atunci codul va fi desigur diferit, dar principiul va fi același. La anumite intervale, verificăm dacă avem vreun SMS necitit, le analizăm, iar dacă o comandă validă vine de la un număr autorizat, trimitem un semnal radio cu funcțiile mySwitch.switchOff sau mySwitch.switchOn, trecându-le adresa prizei. .
Nota în cazul meu, pentru scutul de la Seeedstudio, trebuia să intru în GSM.cpp și să schimb pinii specificați la 7 și 8./* Arduino GSM-switch exemplu cod Pornire/oprire prize controlate radio Autor: Vladislav Ross, 2014 Contact: [email protected] Trebuie să descărcați: 1. rc-switch https://code.google.com/p/rc-switch/ 2. GSMSHIELD http://www.gsmlib.org/ Pentru GSMSHIELD: * Pentru a schimba pinii pentru Software Serial, utilizați cele două linii din GSM.cpp. * Dacă utilizați Mega, decomentați linia „#define MEGA” din HWSerial.h * Puteți activa mesajele de depanare pe portul serial definind DEBUG_ON */ #include „SIM900.h” #include #include „sms.h” #include „call.h” #include<= 21; i++) { sms.DeleteSMS(i); } mySwitch.enableTransmit(RCpin); }; void loop() { //hang up all incoming calls /*stat=call.CallStatus(); if(stat==CALL_INCOM_VOICE) { call.HangUp(); }*/ position = sms.IsSMSPresent(SMS_UNREAD); //get new SMS if (position) { sms.GetSMS(position, number, smsText, 10); sms.DeleteSMS(position); if(strcmp(number, adminNumber) == 0) //accept SMS only from defined number { for (i = 0; i < sizeof(smsText) - 1; i++) { if(deviceLetterIdx != -1) { //got letter, now expecting 0 or 1 if(smsText[i] == "0") { mySwitch.switchOff(groupAddress, deviceAddresses); delay(500); } if(smsText[i] == "1") { mySwitch.switchOn(groupAddress, deviceAddresses); delay(500); } deviceLetterIdx = -1; } else { //waiting for letter A,B,C... for(j = 0; j < sizeof(smsLetters) - 1; j++) { if(smsLetters[j] == smsText[i]) { deviceLetterIdx = j; break; } } } } } } delay(10000); }; GitHub .

// 433MHz pin transmițător const byte RCpin = 12; char groupAddress = "11111"; char smsLetters = "ABC"; char* deviceAddresses = ( "10000", //A "01000", //B "00100" //C ); char adminNumber = "+74991356235"; //numărul dvs. de telefon Apelați apel GSM; SMSGSM sms; RCSwitch mySwitch = RCSwitch(); numărul de caractere; octet stat=0; char smsText; pozitia octetului; int deviceLetterIdx = -1; octetul i,j; void setup() (gsm.begin(2400); delay(10000); for(i = 1; i

Probleme?

Dacă prizele nu doresc să treacă la niciuna, puteți încerca să primiți un semnal de la telecomanda originală la receptor. rc-switch are cod exemplu.

Ce urmează?
Cum se poate dezvolta acest proiect în continuare?
În primul rând, mai avem o grămadă de pini pe Arduino în sine și pe scutul GSM. Puteți conecta unii senzori sau dispozitive la ei. De exemplu, faceți monitorizarea temperaturii de la distanță sau udați flori.
În al doilea rând, am folosit doar SMS-uri, iar modulul poate transmite și voce și GPRS. GPRS poate transfera mult mai multe date. În plus, nu trebuie să închizi când apelezi, ci, de exemplu, să accepți apelul și să-i lași să asculte ce se întâmplă pe loc.