Control de la distanță al dispozitivelor prin SMS. Solicitare GET nevalidă către server. Beneficiile utilizării modulului SIM300


Buna ziua!
Sarcina de a gestiona a apărut aici casa la tara, monitorizați temperatura, ușile, geamurile. Și atunci a apărut întrebarea despre mediul de transmisie a datelor. Ei bine, firele și un canal radio nu mai sunt necesare din cauza costului ridicat, liniile de comunicație cu fibră optică sunt doar un vis, dar GSM este ceea ce ai nevoie. La început ochii mi-au căzut pe vechile telefoane „Motorola”, „Nokia”, „SonyEricsson”. M-am uitat, m-am întors și m-am răzgândit. În primul rând, nu am vrut să lipim contactele butonului și nu a existat niciun feedback. În al doilea rând, înțelegerea software-ului telefonului nu este deloc mare lucru. În general, în gânduri creative și plutind în spațiile deschise world wide web După ce am prins câțiva viruși, s-a găsit un compromis. Și lucrează cu software și fără butoane. Modulul oferă toate acestea SIM900D. De ce mi-a plăcut de el?
- Prima este ușurința de instalare. Veți vedea asta mai târziu. - Al doilea este comunicarea prin UART. (Aceasta înseamnă MK + SIM900D = comunicare normală) - A treia este sursa de alimentare a modulului de la 3 la 4,8 volți. Hosh AVR, hosh ARM. Gust. Ei bine, destule versuri, este timpul să trecem la treabă.
Acest modul arată așa.

Referitor la instalare. După cum puteți vedea, modulul este proiectat pentru montare la suprafață. Dimensiunile plăcuțelor de contact sunt suficient de mari chiar și pentru LUT-uri. Mai jos este o poză cu dispozitivul meu.

După cum puteți vedea, nimic complicat. Acum să vorbim despre schema de conectare pentru acest miracol. Să ne uităm la manual. Și vedem pinout-ul.

Da, există o mulțime de lucruri, dar nu le vom folosi pe toate. Primul lucru pe care trebuie să-l facem este să legați toți pinii „GND” împreună. Dacă te uiți la colțul din dreapta sus, vei observa trei ace separate. Două „GND” și „ANT”. Aceste concluzii sunt situate în acest fel pentru un motiv. Să ne uităm la documentație pentru o imagine a conexiunii antenei.

Contactele 59 și 61 ar trebui să fie cât mai aproape posibil de terminalul antenei. Sunt necesare circuite suplimentare evidențiate în linii punctate pentru a conecta antenele cu cablu. Prin urmare, am lipit conectorul SMA cât mai aproape de pinii 59, 60, 61 și nu m-am deranjat cu circuitul de potrivire, în timp ce cu o antenă pe un cablu de 3 metri și într-un loc cu recepție foarte slabă, am stors 13 puncte. din 31 de la modul Conectorul este vizibil în imaginea de mai sus. Mai precis, picioarele sunt din el)) Conectorul în sine este pe cealaltă parte. În acest caz, contactele 59 și 61 par să îmbrățișeze antena. Ei bine, ceva de genul acesta. În continuare, să vorbim despre cartela SIM. Pentru a-l instala, am folosit acest conector (SIM ICA-501-006-01-F7)

Cel mai interesant lucru este că am găsit 3 opțiuni de pinout a cartelelor SIM. Pe care ar trebui să-l folosesc? Nu voi introduce nicio intrigă, dar pentru simplitate, voi oferi pinout-ul acestui conector. Vedere de sus.

Dar asta nu este tot. Dacă te uiți în manual la schema de conectare pentru cartela SIM, poți vedea acolo un anumit microcircuit numit SMF05C. Acest microcircuit conține până la 5 diode de protecție. Necesar pentru a proteja contactele cartelei SIM. Desigur, nu trebuie să-l instalați, dar apoi aveți grijă și nu atingeți contactele cu degetele!!! Ca persoană păcătoasă, nu pot garanta pentru mine, așa că am lipit mikruhu-ul. Și aici este diagrama în sine.

Desigur, este dat pentru 8 contactați cartela SIM, dar pentru 6 va fi la fel. Există într-adevăr două probleme cu acest microcircuit. Prima este că unde naiba o poți găsi. Si al doilea lucru este dimensiunea lui... Cand am primit comanda si am scos-o, am pus-o pe masa... Pe scurt, in a doua poza de sus este lipit intre cartela SIM si baterie. Pentru comparație, rezistențele sunt 0805. Ei bine, în dreapta este un tranzistor într-un pachet SOT-23. Deci, se pare că am rezolvat cartela SIM, să mergem mai departe. Și apoi tehnologia de iluminat. În general, acest lucru nu este pentru toată lumea. Deoarece toate aceste semnale pot fi introduse direct în MK și lăsați-l să le trimită acolo singur. Le-am scos pe toți din simțul frumuseții. Deci decideți singuri.
- Primul este semnalul dacă modulul este pornit sau nu (STARE) jurnalul 1 - Al doilea este semnalul pentru prezența înregistrării în rețea (NETLIGHT) jurnalul 1/0 (intermitent) Dacă clipește cu aceeasi frecventa, înseamnă că nu v-ați înregistrat în rețea. Dacă decalajul este lung, înseamnă că există o conexiune la rețea. - Al treilea este un jurnal de semnal de apel/sms (RING) 0 Se aprinde dacă este disponibil apel primitși va clipi când primiți un mesaj SMS. Primele două semnale trebuie conectate prin tranzistor NPNîn modul cheie.

Iar al treilea semnal (RING) trebuie conectat printr-un tranzistor PNP. Un alt semnal important este butonul pentru a porni și opri modulul. (Unde am fi noi fără ea). Asta ne oferă manualul.

Adică, am aplicat log 1 la baza tranzistorului timp de 1 secundă și modulul a pornit.
Acum să vorbim despre nutriție. Da, nu m-ar deranja o placă bună de lupte acum, nu-i așa? Bine, hai să mergem mai departe. Modulul este alimentat de o tensiune de 3 până la 4,8 volți. Totul pare simplu, dar nu este. Când efectuați un apel, trimiteți un SMS sau căutați o rețea, modulul poate necesita până la 2A. Wow. Deci fanii LM7805 și Krenok ar putea fi dezamăgiți. Din fericire, manualul conține două circuite bazate pe microcircuitele MIC29302 (nu l-am găsit niciodată la vânzare) și LM2596 (pe acesta îl puteți cumpăra). Dar sunt leneș și adun mâncare cu asta o cantitate mare Pur și simplu nu am vrut chingile. Am cautat pe internet si am gasit. Există un stabilizator atât de bun pentru procesoare precum „Stump”, „AMD” la 3,3V și până la 7,5A. Ei bine, cred că de asta aveți nevoie și puteți alimenta ARM și modulul. Iată o diagramă a acestui miracol.

Și iată cum arată asamblat.

Am instalat radiatorul de frica in principiu, microcircuitul nu se incalzeste nici in timpul unui apel. Iar ultimul lucru la care ar trebui să fii atent este bateria. Este necesar pentru a menține ceasul în timp real viu. Cel mai important lucru este că nu poți lăsa această concluzie în aer. Personal, am fost de acord cu conectarea bateriei, ceea ce iti doresc. Puteți, desigur, să lipiți două AA)), dar este cumva prea mare, dar sub forma unei tablete 2032 la 3v este ceea ce aveți nevoie. Din fericire, nu sunt scumpe și compartimentele pot fi lipite direct pe placă. După părerea mea, aceasta este cea mai simplă soluție. Tu decizi. Ei bine, asta-i tot. Așa arată toată această rușine împreună și în stare de funcționare.

În articolul următor vă voi spune cum am spart acest modul, dar programatic prin terminal folosind comenzi AT.
Am așezat diagramele în PCAD-2006
Arhivă cu fișiere modul GSM.
Arhivă cu fișiere bloc de stabilizare.
Continuarea seriei de articole despre modulul GSM.
Comenzi AT.
Comunicarea modulului cu ATmega8515.
Placă de dezvoltare bazată pe SIM900D


Foli 14/03/13

Aș dori să știu mai multe despre comenzile AT, UART și despre lucrul direct cu aceasta în CodeVision

Alexey 15.03.13

Înțeleg comenzile AT. Nu vreau să postez jumătate din lucrare pentru că am câteva întrebări. Dar cu UART și CVAVR totul este simplu. De îndată ce îmi dau seama de comenzile AT, voi posta imediat ce comenzi și cum să le trimit din CVAVR.

Anatok 04.11.13

Totul este frumos. Dar dacă alarma ar funcționa cel puțin la minus 30 de grade și ar fi încărcată cu panouri solare ascunse, mai ales iarna, atunci ar fi foarte mulți oameni care și-ar dori să aibă un astfel de dispozitiv.

Alexey 04.11.13

Modulul GSM consumă până la 2A la înregistrarea în rețea sau la efectuarea unui apel sau la comunicarea prin GPRS. Astfel de resurse necesită o baterie bună, iar la -30 bateria nu va dura mult. Chiar și în stațiile meteo pe senzori stradali se recomandă utilizarea bateriilor simple.

Ursul 11/11/13

Dacă este încă relevant și interesant... uită-te la EAT pentru SIM900. In interiorul ARM exista un SDK in care poti incarca aplicatii in SIM900 din care poti face o gramada de lucruri... de exemplu sa trimiti aceleasi comenzi AT... + tastatura + display SPI... + 2 ADC-uri :) Sa ai o seara placuta :)

Ursul 11/11/13

Dar este încă foarte frumos să faci putere pentru el pe L5973D. Da, este scris despre 2A în fișa de date... dar în practică acestea sunt impulsuri pe termen foarte scurt. Funcționează grozav pentru mine, de exemplu cu Arduino Mega, care însuși este alimentat de port USB(care are un curent de 0,5 A)

Alexei 11.11.13

Aceasta este frecarea. La început l-am alimentat și de la 7805, totul a funcționat, apoi bam... Și când este conectat la rețea, totul se stinge, apoi repornește. Se pare că câinele de pază repornește după un atac de hrănire. Și cu L7953D va fi frumos, dar de unde îl pot obține și cât va costa :) Așa că am trecut la IRU1075

Alexei 11.11.13

Îmi cer scuze pentru greșeli, este blestemul GOODROYD care sculptează croakers pentru mine. El crede că este mai inteligent. Nu voi edita, lasă Google să se rușineze de munca lor.

Unchiul Misha 24.12.13

Când mă înregistrez în rețeaua Atmega, repornește. Deși costă puls dcdc. Condensatoare de 200 microfarad. Și uneori funcționează stabil. Sunt deja epuizat.

Alexey 25.12.13

Schema la studio. Este destul de dificil să înțelegi problema din cuvinte.

Unchiul Misha 25.12.13
Unchiul Misha 25.12.13

Http://ybex.com/d/tk7kgiefpklpeujb1zbl4lo5 mrkf7ayvci04ouq3.html MK-ul este alimentat de 2,8 (am încercat chiar și 3,7) volți, pentru a nu interfera cu convertorul de nivel.

Alexey 25.12.13
Serghei 19.07.14

Salut Alexey! Aveți plăci gata făcute cu sim900, le pot cumpăra?

Alexey 19.07.14

Gata in ce sens? Modulul în sine a fost deja asamblat și tot ce rămâne este să realizați o placă cu ieșirile și intrările necesare pentru un anumit dispozitiv. Cel din acest articol este doar o placă demo pentru programe de depanare. Un anumit dispozitiv necesită dimensiuni, locația conectorilor, ieșiri pentru căști și microfon. Unde va fi conectorul antenei? Oferă informații mai detaliate despre ceea ce ai nevoie.

Andrei 28.09.14

După cum am înțeles, acesta este un prototip al eșarfei pe care abia aștept să-l văd. Doar în versiunea comercială a fost căsătorit cu o sursă de alimentare și modernizat cu ieșiri audio. Că există un mare bum.

Alexey 28.09.14

De fapt este. Tocmai am omorât mai multe păsări dintr-o singură piatră. S-a rezolvat problema veche cu alimentarea cu energie și potrivirea nivelului pe UART. Și pentru intrare și ieșire audio șic adăugată. De fapt, un telefon mobil gata făcut.

Andrei 28.09.14

Aș dori să aduc o contribuție pentru viitor. În esență, această placă este o unitate completă. Și PRACTIC poate fi folosit în produsul finit. cu toate acestea, există un DAR. Cu un baldachin mezon, este mai bine să-l așezați deasupra (conector de antenă, acces la cartela SIM), așa că este destul de indicat să lăsați găuri paralele cu toți pinii pentru „periferice” pentru aceiași pini cu posibilitatea de a lipindu-le în direcția „în jos”. Acestea. am vrut acest aparat puneți-l pe placa de microcontroler, direcționați-l sub a dvs., lipiți conectorii de împerechere în ea și andocați-l. De asemenea, cu

Andrei 28.09.14

Am mâncat jumătate din mesaj, dar sper că ideea este clară-)

Alexey 28.09.14
Serghei 01.02.15

Spune-mi de ce se încălzește modulul și nu se conectează la rețea?

Alexey 02/01/15

Există mai multe motive pentru aceasta. În primul rând, nutriția este depășită. În al doilea rând, plusul a mers la cel general? Trebuie să te uiți cu atenție la picioarele de putere. În al treilea rând, dacă burta modulului atinge liniile de alimentare. Există mai multe contacte tehnologice pe burtă care trebuie izolate de orice conductor. În al patrulea rând, terminalul antenei nu este scurtcircuitat concluzie generală. Pentru a fi mai precis, trebuie să te uiți la tablă. Trimite-mi taxa pe e-mail și voi vedea dacă e ceva în neregulă acolo.

Serghei 01.02.15

Am placi din fabrica, MasterKit BM8039, si ambele au aceeasi problema... cand introduci o cartela SIM modulul incepe sa se incalzeasca si nu exista retea.

Alexey 02/01/15

Este destul de greu de spus. Circuitul este din fabrică, trebuie să urci pe placă. Din documentație reiese clar că bordul nu are recomandat diode de protectie pentru cartela SIM. Cardul în sine și conectorul au aceiași pini? Modulul 300 este vechi și după părerea mea funcționează doar cu cartelele SIM de 5V, dar acum sunt toate de 3V. Dar aș putea greși. Trebuie să te uiți la placa în sine, este atât de greu să spui ceva. Dacă simptomul este același la ambele, atunci aș cădea în direcția conectorului și a tensiunii cartelelor SIM. Încă o dată, cardurile SIM moderne sunt de 3 volți.

Serghei 01.02.15

Costa sim900D...nu sunt diode cand introduc cardul apare puterea pe modul si incepe sa se incalzeasca, dar de exemplu pe cartela SIM. nu merge de la 9 picioare...

Serghei 01.02.15

Inițial au funcționat bine... apoi ceva a mers prost... Nu pot să-mi dau seama ce...

Serghei 01.02.15

Există vreo modalitate de a verifica modulul fără a-l deslipi?

Alexey 02/01/15

Ce anume a scurtcircuitat? Dacă cartela SIM nu este alimentată, atunci mă tem că linia pentru cartela SIM este moartă. Câte picioare are Simka? 6 sau 8? Pentru a verifica, puteți comunica cu modulul prin magistrala UART 3, 4 picioare fără a introduce o cartelă SIM. Dacă refuză să accepte comenzile AT, atunci cred că îl putem îngropa.

ANONIM 02/01/15

Nu știu exact ce l-a scurtat.. 8 picioare.. dar cum să comunic?

Alexey 02/01/15

Există și 8 pe conector? Luați cipul FT232RL și asamblați adaptorul USB<->TTL, lipire la UART al modulului, lansați un terminal, de exemplu Putty, scrieți AT și apăsați enter. Dacă revine OK, atunci nu totul este pierdut. Dacă e tăcere... La gunoi. Și da, ce fel de LED-uri sunt pe placă? Cum se determină înregistrarea în rețea?

Serghei 02.02.15 03:12

Pe conector sunt si 8...pe placa sunt doua LED-uri, verde si rosu, prezenta unei retele este determinata de lumina verde care clipeste o data la trei secunde...pot sa inserez cumva o poza cu placa ?

Alexey 02.02.15 07:42

E mai ușor să mergi pe forum.

Serghei 02.02.15 14:02

Dacă nu introduceți o cartelă SIM, înseamnă că trebuie să alimentați modulul?

Alexey 02.02.15 15:48

Nu pot citi frunze de ceai. Am nevoie fie de o schemă, fie de o placă. Și ce legătură au alimentarea modulului și cartela SIM cu ea? Cel mai probabil se intersectează cu un alt microcontroler. El furnizează mâncare. În general, aveți nevoie de o diagramă. Și este ca și cum ai face un diagnostic prin telefon.

Serghei 02.02.15 15:56

Unde pe forum pot posta diagrama?

Serghei 02.02.15 15:57

Alimentarea vine la modul numai atunci când introduceți o cartelă SIM

Alexey 02.02.15 19:27

Ei bine, modulul SIM900D nu are asta. Pentru a porni modulul, trebuie să țineți apăsat nivel scăzut pe piciorul 12, apoi ridicați. Cardul SIM nu poate fi introdus sau scos deloc atunci când modulul este pornit, există posibilitatea de a arde portul. Dacă te uiți la documentație, poți găsi acolo recomandări pentru instalarea diodelor de protecție pe linia portului cartelei SIM. Pe forum. Creați un subiect și postați o fotografie.

Evgeniy 09/08/15 12:04

Când aplic tensiune la modul, există un potențial pozitiv pe al 12-lea picior și un potențial pozitiv pe al 5-lea picior (cu condiția ca aceste picioare să atârnă în aer). Vă rog să-mi spuneți, ar trebui să fie un zero pe al 5-lea pas? Daca nu, va rog sa ma corectati.

Alexey 09/08/15 13:21

Al 12-lea picior este includerea modulului. Când se aplică alimentarea, 1 se agăță de el. Pentru a porni modulul, trebuie să apăsați al 12-lea picior pe firul comun timp de câteva secunde, adică să aplicați 0. Când este alimentat modulul 5, piciorul trebuie. să fie tras la firul comun de două rezistențe (acest lucru poate fi văzut din schema de conectare a tranzistorului în modul comutator) și ar trebui să fie 0, deoarece baza trebuie trasă până la zero pentru a închide complet tranzistorul. După apăsarea celui de-al 12-lea picior la zero, 1 ar trebui să apară pe al 5-lea etapă, iar după un timp un meandru care indică starea disponibilității și conexiunii la rețea.

Așadar, după o lungă perioadă de timp de a lumina complexitatea lucrului cu modul GSM SIM900D anuntam primul proiect de lucru care combina un sistem de securitate cu capacitatea telecomandă. Pe scurt, dispozitivul este capabil să trimită SMS-uri de informare dacă senzorul de intruziune este declanșat, să efectueze apeluri pentru a permite monitorizarea audio a camerei, să monitorizeze temperatura și să o trimită prin SMS la cerere, precum și să controleze o anumită încărcare pe baza unei comenzi trimise. prin SMS.

Oricine a urmărit acest subiect știe că am un modul GSM și un modul de control pentru el - două diferite placi, conectat printr-un sandwich (vezi placa cu SIM900D si placa de control). Pe panou de control Pe lângă microcontrolerul ATmega32a, există un modul de putere realizat pe un convertor LM2596 care alimentează circuitul tensiune constantă 3,5 volți. În principiu, orice altă sursă de alimentare va face, principalul lucru este că este capabilă să consume pe scurt până la 2 amperi (acesta este exact consumul modulului GSM în momentul înregistrării).

Din motive de comoditate, la placa de control este conectat un display de la un telefon Nokia3310, metodele de lucru cu care au fost deja descrise de mai multe ori pe acest site. Datorită afișajului, puteți determina rapid starea dispozitivului și valoarea senzorilor.

Ca rezultat, diagrama de conectare rezultată arăta astfel (pe care se poate face clic):

Numerotarea pinilor microcontrolerului din diagramă este dată pentru un pachet DIP, așa că dacă repetați circuitul folosind un microcontroler într-un pachet TQFP, aveți grijă, numerotarea pinii este diferită. Microcontrolerul este tactat de la un cuarț extern la 16 MHz.

Linia Control trecând de la colectorul tranzistorului Q2 la pinul PortD.4 al microcontrolerului a fost adăugat pentru reasigurare și este necesar pentru a monitoriza dacă modulul este pornit. Deoarece pragul de oprire pentru SIM900 este de 3,2 volți, chiar și cu o scădere ușoară de tensiune, modulul se va opri automat, în timp ce microcontrolerul va continua să funcționeze și să execute programul (pragul de resetare pentru ATmega32a este de 2,7 volți). În stare de funcționare, această linie este scăzută. Dacă microcontrolerul detectează asta pe această linie nivel inalt, funcția de repornire a modulului GSM va fi efectuată.

Și așa arată în acțiune în acest moment.

După testarea finală a programului, toate acestea vor fi îndesate în carcasă, iar conexiunile detașabile vor fi sigilate pentru fiabilitate.

Afișajul arată informații de bază despre starea dispozitivului: numele operatorului, calitatea semnalului de comunicare, valoarea temperaturii de la senzorul 18b20, starea ieșirii de sarcină și a senzorului de intruziune, precum și ora și Data.

Video cu activarea modulului

Ora și data sunt preluate de la ceasul încorporat în modulul GSM. Pentru funcționarea lor, este necesar să aveți o baterie de 3 volți conectată la pinul 15 (VRTC). Se recomandă instalarea diodei D1 cu o cădere de tensiune scăzută, de exemplu Schottky. Setarea ceasului și datei se face manual, comenzile fiind descrise mai devreme

Data este afișată pe afișaj în formatul primit de la modul, adică mai întâi anul, apoi luna și data. Nu am schimbat nimic aici încă.

Senzorul DS18B20 este responsabil pentru măsurarea temperaturii; este conectat la pinul PortD.3 al microcontrolerului.

Puteți conecta orice sarcină la PortD.6 și o puteți controla prin comenzi SMS. Acum am un LED agățat - D4 pe diagramă. Dar nimic nu te împiedică să agăți un releu sau un triac aici și să controlezi ceva mai serios.

Din motive de securitate, este planificată utilizarea unui senzor de mișcare HC-SR501, achiziționat de pe E-bay. Dacă este declanșat, la ieșirea senzorului apare unul logic. După ce l-a prins, microcontrolerul îi va da o comandă trimiterea de SMS-uri mesaje la numărul de telefon specificat în program.

Ieșirea senzorului este conectată la pinul PortD.7 al microcontrolerului, în diagramă, senzorul este înlocuit în mod convențional cu un buton;

În locul unui senzor de mișcare, puteți instala orice alte mijloace de detectare a intruziunii - senzori de deschidere a ferestrelor și ușilor, senzori de spargere a geamului, senzori fotoelectrici etc. în general, tot ceea ce este capabilă imaginația ta.

Pentru a preveni trimiterea repetată a SMS-urilor de avertizare în cazul activării unui senzor, a fost introdusă o restricție în program: după primul SMS trimis, se interzice trimiterea ulterioară. Pentru a reactiva trimiterea de mesaje de notificare atunci când un senzor este declanșat, trebuie să trimiteți un SMS cu o comandă specifică către modul. Când trimiterea de SMS-uri este interzisă, pe afișaj va apărea un semn de exclamare lângă starea senzorului.

Lista comenzilor

Și iată lista comenzilor din SMS pe care le procesează modulul. Pentru comoditate și simplitate, comenzile sunt digitale, eventual în versiunile următoare firmware-ul va avea nume de comandă mai semnificative :)

0 – Deconectare de la încărcare (pinul PortD.6 este setat la 0 logic)

1 – Porniți încărcarea (pinul PortD.6 este setat la 1 logic)

2 – După ce a acceptat această comandă, modulul va apela înapoi la cea specificată în program număr de telefon

3 – Solicitați sold și trimiteți-l înapoi prin SMS la numărul specificat. Este unul aici nuanță importantă- răspunsuri la Solicitări USSD trebuie să vină în latină. În caz contrar, în loc de text semnificativ, răspunsul va fi un mesaj în codificare hexazecimală. Trebuie să verificați cu operatorul dumneavoastră cum să convertiți USSD în latină. De exemplu, pe cartela SIM pe care o folosesc de la Smarts, trebuie să introduceți *102*1# (în megafon *105*0#)

4 – Cerere de temperatură. Valoarea temperaturii ne va fi trimisă prin SMS.

5 – Permiteți trimiterea mesajelor dacă senzorul de intruziune este declanșat.

6 – Interzicerea trimiterii de SMS-uri de notificare de la senzorul de intruziune.

? – Cu această comandă, modulul ne va trimite un SMS care conține Informații generale despre dispozitiv, cum ar fi valoarea de la senzorul de temperatură, dacă sarcina este pornită, starea de intrare de la senzorul de intruziune și dacă este permisă trimiterea de SMS-uri de notificare de la acesta. De exemplu, așa ar putea arăta un mesaj: temperatură +24, încărcare oprită, ieșire senzor de mișcare 0, trimiterea SMS dacă este declanșată este interzisă.

Acum, cum să configurați modulul pentru a trimite SMS-uri către numărul dvs. În arhiva cu programul găsim fișierul principal al programului, se numește „program” 🙂 și găsim o constantă în el:

Const Număr de telefon = „+7908390xxxx”

introduceți numărul dvs. de telefon aici, compilați programul și obțineți fișier hex firmware.

Programul, ca întotdeauna, este scris în Bascom-AVR, așa că înțelegerea algoritmului de lucru cu modulul GSM este destul de simplă. Noroc!

Și, în sfârșit, o demonstrație a modului în care modulul procesează comenzile.

Mulțumiri speciale prietenului de lungă durată al site-ului Serghei RD3AVJ pentru participarea și asistența sa în dezvoltare!

UPD: din 31.10.12

Am modificat puțin firmware-ul, acum pentru a seta numărul la care va fi trimis SMS-ul de notificare, nu este nevoie să recompilați programul. Este suficient să trimiți un SMS cu un mesaj către modul „Primul număr”(fără ghilimele) și numărul de la care a fost trimisă această comandă este înregistrat în memoria nevolatilă a microcontrolerului.

Așadar, după o lungă perioadă de timp de înțelegere a complexității lucrului cu modulul GSM SIM900D, anunțăm primul proiect de lucru care combină un sistem de securitate cu posibilitatea de control de la distanță. Pe scurt, dispozitivul este capabil să trimită SMS-uri de informare dacă senzorul de intruziune este declanșat, să efectueze apeluri pentru a permite monitorizarea audio a camerei, să monitorizeze temperatura și să o trimită prin SMS la cerere, precum și să controleze o anumită sarcină pe baza unei comenzi trimise. prin SMS.

Oricine a urmărit acest subiect știe că am un modul GSM și un modul de control pentru el - două plăci diferite conectate printr-un sandwich (vezi placa cu SIM900D și placa de control).Pe placa de control, pe langa microcontrolerul ATmega32a, exista un modul de putere realizat pe un convertor LM2596 care alimenteaza circuitul cu o tensiune constanta de 3,5 volti. În principiu, orice altă sursă de alimentare va face, principalul lucru este că este capabilă să consume pe scurt până la 2 amperi (acesta este exact consumul modulului GSM în momentul înregistrării).

Din motive de comoditate, la placa de control este conectat un display de la un telefon Nokia3310, metodele de lucru cu care au fost deja descrise de mai multe ori pe acest site. Datorită afișajului, puteți determina rapid starea dispozitivului și valoarea senzorilor.

Ca rezultat, diagrama de conectare rezultată arăta astfel (pe care se poate face clic):

Numerotarea pinilor microcontrolerului din diagramă este dată pentru un pachet DIP, așa că dacă repetați circuitul folosind un microcontroler într-un pachet TQFP, aveți grijă, numerotarea pinii este diferită. Microcontrolerul este tactat de la un cuarț extern la 16 MHz.

Linia Control trecând de la colectorul tranzistorului Q2 la pinul PortD.4 al microcontrolerului a fost adăugat pentru reasigurare și este necesar pentru a monitoriza dacă modulul este pornit. Deoarece pragul de oprire pentru SIM900 este de 3,2 volți, chiar și cu o scădere ușoară de tensiune, modulul se va opri automat, în timp ce microcontrolerul va continua să funcționeze și să execute programul (pragul de resetare pentru ATmega32a este de 2,7 volți). În stare de funcționare, această linie este scăzută. Dacă microcontrolerul detectează că această linie este ridicată, modulul GSM va reporni funcția.

Și așa arată în acțiune în acest moment.

După revizuirea finală a programului, toate acestea vor fi băgate în carcasă, iar conexiunile detașabile Vor fi sigilate pentru fiabilitate.

Afișajul arată informații de bază despre starea dispozitivului: numele operatorului, calitatea semnalului de comunicare, valoarea temperaturii de la senzorul 18b20, starea ieșirii de sarcină și a senzorului de intruziune, precum și ora și Data.

Video cu activarea modulului

Ora și data sunt preluate de la ceasul încorporat în modulul GSM. Pentru funcționarea lor, este necesar să aveți o baterie de 3 volți conectată la pinul 15 (VRTC). Se recomandă instalarea diodei D1 cu o cădere de tensiune scăzută, de exemplu Schottky. Setarea ceasului și datei se face manual, comenzile fiind descrise mai devreme

Data este afișată pe afișaj în formatul obținut din modul, adică mai întâi anul, apoi luna și data. Nu am schimbat nimic aici încă.

Senzorul DS18B20 este responsabil pentru măsurarea temperaturii; este conectat la pinul PortD.3 al microcontrolerului.

Puteți conecta orice sarcină la PortD.6 și o puteți controla prin comenzi SMS. Acum am un LED agățat - D4 pe diagramă. Dar nimic nu te împiedică să agăți un releu sau un triac aici și să controlezi ceva mai serios.

Din motive de securitate, este planificată utilizarea unui senzor de mișcare HC-SR501, achiziționat de pe E-bay. Dacă este declanșat, la ieșirea senzorului apare unul logic. După ce l-a prins, microcontrolerul va da o comandă de trimis Mesaje SMS prin numărul de telefon specificat în program.

Ieșirea senzorului este conectată la pinul PortD.7 al microcontrolerului, în diagramă, senzorul este înlocuit în mod convențional cu un buton;

În locul unui senzor de mișcare, puteți instala orice alte mijloace de detectare a intruziunii - senzori de deschidere a ferestrelor și ușilor, senzori de spargere a geamului, senzori fotoelectrici etc. în general, tot ce poate face imaginația ta.

Pentru a preveni trimiterea repetată a SMS-urilor de avertizare în cazul activării unui senzor, a fost introdusă o restricție în program: după primul SMS trimis, se interzice trimiterea ulterioară. Pentru a reactiva trimiterea de mesaje de notificare atunci când un senzor este declanșat, trebuie să trimiteți un SMS cu o comandă specifică către modul. Când trimiterea de SMS-uri este interzisă, pe afișaj va apărea un semn de exclamare lângă starea senzorului.

Lista comenzilor

Și iată lista comenzilor din SMS pe care le procesează modulul. Pentru comoditate și simplitate, comenzile sunt digitale, poate că în viitoarele versiuni de firmware vor exista nume de comenzi mai semnificative :)

0 - Deconectare de la încărcare (Pin PortD.6 este setat la 0 logic)

1 - Porniți încărcătura (Pinul PortD.6 este setat la 1 logic)

2 - După ce a acceptat această comandă, modulul va apela înapoi numărul de telefon specificat în program

3 - Solicitați soldul dvs. și trimiteți-l prin SMS înapoi la numărul specificat. Există o nuanță importantă aici - răspunsurile la solicitările USSD trebuie să vină în latină. În caz contrar, în loc de text semnificativ, răspunsul va fi un mesaj în codificare hexazecimală. Trebuie să verificați cu operatorul dumneavoastră cum să convertiți USSD în latină. De exemplu, pe cartela SIM pe care o folosesc de la Smarts, trebuie să introduceți *102*1# (în megafon *105*0#)

4 - Cerere de temperatură. Valoarea temperaturii ne va fi trimisă prin SMS.

5 - Permiteți trimiterea de mesaje dacă senzorul de intruziune este declanșat.

6 - Interzicerea trimiterii de SMS-uri de notificare de la senzorul de intruziune.

? - La această comandă, modulul ne va trimite un SMS care conține informații generale despre dispozitiv, cum ar fi valoarea de la senzorul de temperatură, dacă sarcina este pornită, starea intrării de la senzorul de intruziune și dacă se trimite SMS de notificare de la acesta este permis.De exemplu, așa ar putea arăta un mesaj: temperatură +24, încărcare oprită, ieșire senzor de mișcare 0, trimiterea SMS dacă este declanșată este interzisă.

Acum, cum să configurați modulul pentru a trimite SMS-uri către numărul dvs. În arhiva cu programul găsim fișierul principal al programului, se numește „program” :) și găsim o constantă în el:

Const Număr de telefon = „+7908390xxxx”

Vă înlocuim numărul de telefon aici, compilăm programul și obținem un fișier firmware hexadecimal.

Programul, ca întotdeauna, este scris în Bascom-AVR, așa că înțelegerea algoritmului de lucru cu modulul GSM este destul de simplă. Noroc!

Și, în sfârșit, o demonstrație a modului în care modulul procesează comenzile.

Mulțumiri speciale prietenului de lungă durată al site-ului Serghei RD3AVJ pentru participarea și asistența sa în dezvoltare!

UPD: din 31.10.12

Am modificat puțin firmware-ul, acum pentru a seta numărul la care va fi trimis SMS-ul de notificare, nu este nevoie să recompilați programul. Este suficient să trimiți un SMS cu un mesaj către modul „Primul număr” (fără ghilimele) și numărul de la care a fost trimisă această comandă este înregistrat în memoria nevolatilă a microcontrolerului.

Experiența de utilizare a SIM900 descrisă mai jos va fi mai utilă celor care au lucrat deja puțin cu modulul. Pentru acei cititori care abia încep să studieze acest microcircuit și intenționează să-l folosească pentru a face schimb de date prin Internet, am pregătit o serie de lecții pe această temă. Aici .

Așadar, SIM900 este un modul GSM de la SIM COM, controlat prin comenzi AT, capabil să trimită SMS-uri, să efectueze apeluri, să organizeze o conexiune directă CSD și să facă schimb de informații prin GPRS.

În mâinile mele era o placă de depanare a scutului SIM900 GPRS comandată din China - compatibilă cu platforma Arduino.

Placa conține cipul SIM900 în sine, conectori pentru microfon și căști, un comutator de alimentare (de la conector extern sau de la Arduino), o antenă, mai multe LED-uri pentru a indica modurile de funcționare, un conector pentru o baterie (dacă aveți nevoie de un ceas în timp real), un buton pornit/oprit. Bună descriere Am gasit producatorul pe wiki . Există, de asemenea, cod pentru controlul modemului în diferite moduri.

După cum ne spune producătorul, placa este perfect compatibilă cu Arduino Uno. Într-adevăr, placa SIM900 se conectează pur și simplu la Uno și începe imediat să funcționeze. Cu toate acestea, după cum sa dovedit, Arduino Uno se poate dovedi a fi „slab” pentru implementarea unor funcții, dar voi vorbi despre asta mai jos.

Placa funcționează cu Arduino Mega cu unele restricții. Acest lucru se datorează faptului că Mega, spre deosebire de Uno, are pinii 7 și 8, care nu sunt disponibili pentru utilizare ca serial software (software USART). Acest lucru poate fi rezolvat prin comutarea interfeței USART la picioarele 0 și 1, în acest scop, jumperii sunt furnizați pe placa SIM900.

În general, placa poate fi conectată la orice controler cu o interfață USART. De exemplu, am încercat să controlez modemul folosind controlerul STM32F4.

SIM900: mesaje SMS și apeluri

Testarea modulului pentru schimbul de mesaje SMS și apeluri a fost un mare succes! Modulul a făcut față acestor sarcini fără probleme speciale, pentru asta tocmai am copiat c acelasi site, a compilat și a afișat acest cod în Arduino Uno:

//Releu serial - Arduino va corela o //legătură serială între computer și scutul GPRS //la 19200 bps 8-N-1 //Computerul este conectat la UART hardware //Scutul GPRS este conectat la UART software #include Software GPRS serial(7, 8); buffer de caracter nesemnat; // matrice de buffer pentru primirea datelor prin portul serial int count=0; // contor pentru matricea tampon void setup() ( GPRS.begin(19200); // rata de transmisie GPRS Serial.begin(19200); // portul serial al vitezei de transmisie Arduino. ) void loop() ( if (GPRS) .available()) // dacă data vine de la portul serial al software-ului ==> datele provin de la gprs shield (în timp ce(GPRS.available()) // citește datele în matrice de caractere (buffer=GPRS.read(); // scrierea datelor în matrice if(count == 64)break ) Serial.write(buffer,count) // dacă nu se termină transmisia de date, scrieți în portul serial hardware clearBufferArray(); / setează contorul buclei while la zero ) if (Serial.available()) // dacă datele sunt disponibile pe portul serial hardware ==> datele provin de la PC sau notebook GPRS.write(Serial .read()); it la scutul GPRS ) void clearBufferArray() // funcția pentru a șterge matricea tampon (pentru (int i=0; i

Pentru a trimite comenzi către modul, acesta trebuie să fie conectat la un computer. Acest lucru se poate face folosind portul USB Arduino. Pe un computer, aveți nevoie de orice monitor de port COM pentru aceasta. Îl poți descărca de aici, sau puteți utiliza monitorul încorporat în Arduino IDE.

Tot ceea ce face programul de firmware Arduino este să „prindă” comenzile utilizatorului și să le trimită la modul, apoi să returneze răspunsurile către SIM900 utilizatorului. Astfel, prin transmiterea manuală a comenzilor AT către modul, am testat recepția și transmiterea mesajelor SMS, iar prin conectarea unui microfon și căști la conectorii corespunzători am folosit modulul SIM900 ca telefon mobil.

Transfer de date prin GPRS folosind SIM900

Am început primele mele experimente în transferul de date prin GPRS folosind platforma Arduino UNO pentru a controla SIM900 (pur și simplu pentru că era la îndemână). Pentru început, am cumpărat găzduire cu un server care rulează Apache și am implementat pe el o aplicație simplă care ar putea răspunde cu pricepere la solicitările GET. S-a întâmplat! Am trimis în continuare comenzi de pe PC către controlerul Arduino, care la rândul său le-a trimis către SIM900.

Totul a funcționat corect atâta timp cât cererile GET au fost suficient de scurte (până la 100 de caractere). Dar de îndată ce cererile au devenit mai lungi, au început eșecuri: cererile nu au fost transmise în totalitate. S-a observat că erorile pot apărea sau dispărea chiar și la creșterea/scăderea programului de control Arduino cu mai multe linii. Ulterior, s-a dovedit că defecțiunile erau legate de software-ul USART, pe care Arduino UNO îl folosește pentru a comunica cu SIM900, deoarece un astfel de USART depinde în întregime de ciclul de program al nucleului controlerului. Dacă cantitatea de date este mică, aceasta are întotdeauna timp să fie transmisă, iar dacă cantitatea acesteia crește, rezultatul transmisiei depinde de durata ciclului programului.

Concluzie din toate cele de mai sus: este IMPOSIBIL să folosiți software-ul USART atunci când comunicați cu SIM900, mai ales când este vorba de o cantitate mare de date transmise.

Arduino Uno are o singură interfață USART „hardware”, care a fost folosită pentru schimb cu un PC, așa că a trebuit să renunțăm la UNO, înlocuindu-l cu Arduino Mega, care nu suferă de lipsa USART-urilor „hardware”. După o astfel de „rocare”, funcționarea dispozitivului a devenit stabilă și corectă.

SIM900: stivă TCP-IP sau HTTP? Ce e mai bine?

În timp ce studiam manualul de gestionare a modemului, am descoperit că există două grupuri de comenzi AT. Primul grup este folosit pentru a transmite date prin stiva TCP-IP încorporată, iar al doilea utilizează protocolul HTTP deja implementat de logica internă a SIM900. Indiferent cât de mult am chinuit Google și Yandex încercând să aflu cum diferă aceste metode, care sunt avantajele și dezavantajele fiecăreia dintre ele, nu am putut găsi nimic, așa că le-am încercat pe amândouă și vă împărtășesc experiența mea practică aici.

Ambele metode funcționează și au dreptul de a exista.

Stiva TCP-IP este puțin mai dificil de inițializat (trebuie trecute mai multe comenzi către modul) și este puțin mai dificil de gestionat. Pentru a trimite o solicitare, trebuie să deschideți o conexiune, să așteptați un răspuns și să o închideți corect.

HTTP este, în termeni simpli, un browser încorporat în SIM900. Este ușor de inițializat pentru a începe să comunicați cu serverul, trebuie să deschideți o sesiune. În același timp, deschiderea și închiderea unei conexiuni cu fiecare cerere și rezolvarea altor „sarcini organizaționale” cad pe umerii SIM900. Acest lucru este convenabil, iar transferul de date în acest fel este oarecum mai rapid, tocmai pentru că SIM900 poate efectua toate „operațiunile auxiliare” mai rapid decât poate face controlerul de control.

Astfel, atunci când am ales metoda de schimb, m-am hotărât în ​​continuare pe protocolul HTTP.

Solicitare GET incorectă către server

La începutul muncii mele de transmitere a datelor prin GPRS, am făcut o greșeală care m-a costat mai mult de o zi de chin. Neavând suficientă experiență în interacțiunea cu serverul prin solicitări GET, eu, dobândind cunoștințe superficiale pe Internet, am compilat o solicitare ca:

GET http://xxx.ru/d_command.php?UC=1111 HTTP/1.1
GAZDA: xxx.ru

Această solicitare nu este corectă, dar a fost perfect „mâncat” de browser și de serverul proxy de la care am trimis solicitări de depanare - de aceea am considerat cererea corectă.

Cel mai surprinzător lucru este că SIM900 a făcut față bine și unei cereri „rele” (și trimiteam cereri prin stiva TCP-IP pe atunci). Cu toate acestea, într-o bună zi, serverul a început să răspundă la astfel de solicitări cu eroarea 404. Acest lucru s-a întâmplat din cauza unor circumstanțe care nu au fost încă clarificate, fie furnizorul de găzduire a schimbat algoritmii de procesare a cererii (el neagă acest lucru), fie operatorul de telefonie mobilă. a facut-o. Dar faptul rămâne un fapt. Apoi am încercat să trimit aceeași cerere prin HTTP - totul a funcționat. Acest lucru se explică prin faptul că protocolul HTTP intern al modulului SIM900 (cum am spus deja, în esență un browser încorporat) este capabil să „analizeze” corect cererile incorecte și să le transmită în rețea în forma corectă. Acesta este un alt avantaj (dubios, desigur) al folosirii HTTP, deoarece permite programatorului unele inexactități. În general, desigur, cererea trebuie să fie scrisă corect și să arate astfel:

GET /d_command.php?UC=1111 HTTP/1.1
GAZDA: xxx.ru

Cu o astfel de solicitare corectă, SIM900 schimbă cu succes atât prin stiva TCP-IP, cât și prin HTTP.

SIM900 îngheață

Uneori, la schimbul prin GPRS, apar situații în urma cărora modulul se poate bloca. Acest lucru s-ar putea datora datelor incorecte care au ajuns prin rețea și au condus SIM900 într-o stupoare, sau interferențe pe linia de schimb a modulului și controlerului, în care SIM900 a primit „nu ceea ce se aștepta” sau o altă problemă necunoscută. Producătorul de cip avertizează că acest lucru se poate întâmpla și sugerează ca, în astfel de cazuri, să reporniți modulul folosind o secvență specială de impulsuri aplicate intrării PWRKEY.

Cu toate acestea, după cum s-a dovedit, acest lucru nu ajută întotdeauna - după o astfel de repornire, modulul s-ar putea „trezi” încă „glitchat”. Și producătorul ne avertizează despre acest lucru dacă citim cu atenție fișa de date pentru modul. Iată ce recomandă documentația:

NOTĂ: Se recomandă să întrerupeți direct sursa de alimentare VBAT în loc să utilizați pinul de resetare extern când SIM900 nu poate răspunde la comanda AT „AT+CPOWD=1” și pinul PWRKEY.

Prin urmare, cel mai corect mod de a reporni modulul este să eliminați complet alimentarea de la acesta (de la pinul VBAT), să așteptați puțin (cel puțin o secundă pentru orice eventualitate) și să reporniți alimentarea. Pentru a reporni modulul, este mai bine să furnizați un releu sau un comutator tranzistor pe placă, controlat de controler.

Concluzie

În viitor, îmi propun să lansez o serie de articole-lecții în care vă voi spune cum să organizați un schimb între o aplicație web server și SIM900, începând cu achiziționarea de găzduire de la un furnizor și terminând cu scrierea codului programului de control.

La revedere! Rămâneți pe fază pentru actualizări despre LAZY SMART .