Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Recenzii
  • Experiență cu GSM-modem SIM900. Control de la distanță al dispozitivelor prin SMS

Experiență cu GSM-modem SIM900. Control de la distanță al dispozitivelor prin SMS

Recent, au apărut multe variante diferite de scheme de dispozitive de semnalizare GSM. Dacă în această schemă se folosește un modul GSM, atunci în majoritatea cazurilor este un modul larg răspândit fabricat de compania chineză SimCom SIM300. Acest modul s-a dovedit a fi pe partea bună, atât în ​​ceea ce privește fiabilitatea, cât și costul redus.
Este prezentată descrierea dispozitivului de semnalizare GSM bazat pe modulul SIM300, dezvoltat de autor. Conține, de asemenea, desene ale plăcilor de circuite imprimate și o versiune complet funcțională a firmware-ului microcontrolerului. Pentru acest sistem de alarmă au fost dezvoltate și diverse module de expansiune, telecomenzi, unități de control cu ​​tastatură, surse de alimentare...
Producătorul a anunțat însă că de la sfârșitul anului 2010 se va întrerupe producția de module GSM ale liniei SIM3xx. În schimb, se recomandă utilizarea unui nou modul de la același producător - SIM900. Mai mult, așa cum a fost anunțat, SIM900 va fi mult mai funcțional decât „strămoșul” său și, care este unul dintre cele mai importante criterii pentru noi, va fi mai ieftin.

Ceva despre SIM900...

Deci, ce este exact modulul SIM900? Să luăm o fișă tehnică în mâinile noastre și să încercăm să o citim.
Modulul SIM900 este un dispozitiv quad-band GSM/GPRS care funcționează la frecvențe de 850/900/950/1900 MHz, conceput pentru a transmite voce, date, mesaje SMS etc.
Principalele caracteristici tehnice ale modulului:
Gama de frecventa:
GSM850, EGSM900, DCS1800, PCS1900
Cu Compatibil cu GSM faza 2/2+.
Putere radiata:
clasa 4 (2W / 900 MHz)
clasa 1 (1W / 1800 MHz)

Control: Comenzi AT (GSM 07.10)
Tensiunea de alimentare a modulului: 3,4 - 4,5 V
Curent de consum:
în modul de repaus - 1,5 mA
în modul transmisie - până la 500 mA
maxim - 1,8 A
Temperatura de lucru: -30 ... +80 С
dimensiuni: 24x24x3 mm
Greutate: 3,4 g
După cum puteți vedea, acest modul diferă ca dimensiuni față de predecesorul său, modulul SIM3xx, de aproximativ o dată și jumătate. Dar în ceea ce privește parametrii și funcționalitatea, este și un ordin de mărime superior.


Figura 1 - Vedere externă a modulului GSM SIM900



Figura 2 - Atribuirea pinului modulului SIM900

Aspectul modulului este prezentat în Fig. 1, iar alocarea pinului este în Fig. 2. Din cifre, se poate determina că, pe lângă setul de interfață standard inerent modelelor anterioare (porturi UART pentru schimbul de date, ieșirea stării modulului STATUS, ieșirile interfeței cartelei SIM etc.), au fost mai multe noi adăugat (ieșiri de conectare a tastaturii KBR / KBC, ieșire PWM PWM, pin de resetare al modulului NRESET).
Datorită faptului că acest modul la momentul scrierii acestei scrieri nu a fost încă pe deplin „testat” în vastitatea Ucrainei, se fac în mod constant îmbunătățiri ale software-ului, sunt posibile modificări în descriere care nu înrăutățesc munca în ansamblu.

Parametrii de bază ale dispozitivului

Acest dispozitiv este o continuare a liniei de dispozitive de alarmă GSM dezvoltate de autor. Prin urmare, parametrii sunt în mare parte identici.
Monitorizarea stării a patru bucle de alarmă (AL) în toate modurile de funcționare, cu excepția modului „Programare”, și afișarea stării buclelor cu ajutorul indicatoarelor LED situate pe panoul frontal al dispozitivului (indicator luminos - „buclă în mod normal stare”, în caz contrar este prezent circuit deschis sau scurtcircuit al buclei de alarmă).
Buclele de alarmă pot include:
> dispozitive de semnalizare prin contact magnetic (întrerupătoare lamelă SMK, SOMK);
> detectoare precum „Folie”, „Fereastră”;
> detectoare de incendiu (IP-104, IP-105);
> senzori de mișcare, volum, ritm;
> alți senzori cu ieșire închisă în stare normală și întreruperea contactelor în caz de încălcare.
Panoul de control acceptă următoarele tipuri de zone de alarmă (bucle):
„Normal” (semnalul „Alarmă” este generat imediat după primirea unui semnal de încălcare a integrității buclei de alarmă, bucla nu este restabilită după declanșare);
„Cu întârziere” (utilizatorului i se acordă timp să iasă și să intre, astfel încât să aibă timp să pornească dispozitivul și să părăsească unitatea, sau să deschidă instalația și să oprească dispozitivul);
„Coridor” (când o zonă este declanșată și apoi revine la starea ei normală, acest tip de zonă este din nou armat);
„Non-stop, foc” (bucla de alarmă este în mod constant armată, dezarmarea și armarea se efectuează folosind o comandă specială SMS);
„Non-stop, buton de panică” (bucla de alarmă este armată în mod constant, dezarmarea și armarea se efectuează folosind o comandă SMS specială, atunci când bucla este declanșată, se efectuează doar un apel, este trimis un mesaj SMS despre sabotaj, sirena nu se aprinde);
„Dezactivat” (sistemul nu reacționează la nicio modificare la intrarea AL).
Activarea modului „Securitate” folosind un buton „ascuns” sau „secret”, un comutator „secret” (în locul căruia o tastatură cu contacte de închidere, precum „Satel”), o telecomandă, o cheie TouchMemory (Dallas) sau se poate folosi o tastatură suplimentară, în funcție de firmware-ul controlerului. Firmware-ul descris aici folosește doar un comutator „secret”, alte versiuni vor fi discutate mai târziu.
Sunt acceptate două moduri de operare ale dispozitivului:
semnalizare GSM (terminalul GSM este conectat și schimbul de date se realizează cu acesta);
sistem de alarmă autonom (terminalul GSM nu participă la funcționarea sistemului, dispozitivul funcționează ca un sistem de alarmă autonom).
Dezarmare și armare prin intermediul unui apel de la un anumit telefon (poate fi dezactivat) cu transmiterea unui SMS corespunzător despre starea sistemului.
Trimiterea unui sms-mesaj de confirmare când obiectul este armat (poate fi dezactivat).
Formarea semnalului „Alarmă” (pornirea sirenei, transmiterea datelor „alarma” către telefonul mobil) în cazul încălcării integrității („deschis” sau „scurtcircuit”) a cel puțin uneia dintre buclele de alarmă.
Trimiterea de mesaje SMS și apelarea automată la trei numere de telefon mobil sau fix (dacă operatorul acceptă funcții SMS).
Trecerea dispozitivului în modul „Dezarmat” folosind doar telecomanda, tastatura, prin primirea unui mesaj SMS de la numărul de telefon mobil 1 și (sau) formarea de la acest număr (poate fi dezactivat), precum și un comutator „secret”, în funcție de pornit de la firmware-ul controlerului.
Posibilitatea de control de la distanță a dispozitivului prin trimiterea de mesaje SMS cu un anumit conținut (pot fi dezactivate).
Programarea principalelor funcții și parametri ai dispozitivului (numere de telefon, timp de întârziere, timp de funcționare a sirenei etc.) cu ajutorul programului de calculator Lite Programmer în modul „Programare” al dispozitivului. În acest caz, ieșirea portului COM al computerului (pinii RxD și TxD) este conectată la conectorul corespunzător al dispozitivului de alarmă folosind un cablu special.
Dispozitivul trimite utilizatorului un semnal specific despre lipsa fondurilor pe contul de card mobil.
Dispozitivul trimite un anumit semnal utilizatorului despre absența unui semnal de comunicare cu stația mobilă.
Transmiterea unui semnal SMS în cazul unei pene de curent (220V) în modul „Guard” (poate fi dezactivat).
Utilizarea modemului GSM încorporat vă permite să faceți fără blocaje și conexiuni inutile, precum și să creșteți compatibilitatea și stabilitatea conexiunii canalului GSM.
Reacția programată a puterii de ieșire: activarea ieșirii numai în modul „Alarmă” pentru un timp stabilit de utilizator (de la 60 la 240 de secunde).
Utilizarea protocolului original pentru transmiterea datelor de radiații infraroșii de către telecomandă pentru a controla dispozitivul și controlul de la distanță a emisiilor radio, precum și codificarea originală a datelor primite de la tastatură.
Este posibilă monitorizarea tensiunii de alimentare a rețelei și a tensiunii bateriei de către dispozitiv, în timp ce în cazul unei defecțiuni și apariției unei tensiuni de rețea, sunt trimise mesaje SMS corespunzătoare. De asemenea, atunci când tensiunea de alimentare a sursei de rezervă (bateria) scade sub un nivel prestabilit (8-9V), este trimis un mesaj, după care dispozitivul intră în modul „sleep”, a cărui ieșire este posibilă numai atunci când sursa de alimentare (rețea sau baterie) este restabilită.
Trimiterea unui mesaj SMS către numărul de telefon mobil 1 când sunt primite apeluri, indicând numărul primit (poate fi dezactivat).
Aparatul permite comutarea semnalizatoarelor externe de sunet sau lumini (clopot, sirena, lampă) cu o tensiune de funcționare de 12V și un consum de curent de până la 1,25A.
Firmware-ul microcontrolerului descris în acest articol este conceput pentru a opera dispozitivul împreună cu un comutator „secret”, precum și pentru a activa/dezactiva dispozitivul prin formarea și trimiterea de mesaje SMS. Alte versiuni ale dispozitivului vor fi descrise în materialele următoare, dacă există, desigur, interesul cititorului.

Specificații

Numărul de bucle de alarmă este 4.
Rezistența elementului de la distanță (terminal), kOhm - 2,7.
Rezistența maximă a buclei de securitate fără a ține cont de rezistența elementului de la distanță, Ohm - 750.
Consumul de curent de la o sursă de curent continuu (fără senzori de alarmă activi conectați), la o tensiune de 12,6 V, în următoarele moduri de funcționare, nu mai mult de:
- „ofițer de serviciu”, fără utilizarea unui modul GSM - 0,16 A;
- „ofițer de serviciu”, la utilizarea unui modul GSM - 0,23 A;
- „securitate”, la utilizarea unui modul GSM - 0,28 A;
- „alarma”, la utilizarea unui modul GSM și a unei sirene dezactivate - 0,34 A;
- consum maxim (de impuls) - 1,8 A.
Standarde GSM acceptate: 850/900/1800/1900 MHz.
Limite de stabilire a timpului:
- Timp de întârziere la intrare - 0 ... 150 secunde;
- Timp de întârziere de ieșire - 0 ... 250 secunde;
- Timpul de funcționare al sirenei este de 30 ... 250 de secunde.

Descrierea circuitului

Schema electrică a unității principale este prezentată în Fig. 3. Precizez - „unitatea principală”, deoarece pentru aceste sisteme de alarmă a fost dezvoltat suplimentar un set mare de periferice: aici sunt diverse panouri de control, unități de expansiune etc.
În comparație cu versiunea anterioară, circuitul a suferit modificări calitative: pe lângă utilizarea unui alt modul GSM, așa cum sa menționat mai sus, releul este de asemenea exclus (în loc de acesta, se folosește un IC - un set de chei puternice pentru tranzistori) și unitatea de conversie RS232-UART este exclusă (după cum a arătat practica, programarea nu se face foarte des, iar pentru aceasta se utilizează în principal un laptop, în care portul RS232 este adesea pur și simplu absent).



Figura 3 - Schema electrică

Principalul element de control al dispozitivului este un microcontroler ATmega168 produs de Atmel. Microcontrolerul monitorizează stările buclelor de alarmă conectate la intrările ADC și, în funcție de modul de funcționare, efectuează acțiuni ulterioare, cum ar fi formarea și trimiterea de mesaje SMS, pornirea sirenei etc.
Intrările ADC PC0-PC3 sunt concepute pentru a monitoriza starea buclelor de alarmă, MC măsoară tensiunea la aceste borne și, în funcție de tensiune, generează un semnal „deschis”, „normal” sau „scurtcircuit”. PC5, PC6 sunt alimentate cu tensiuni de la ieșirea sursei de alimentare pentru a-și controla valorile. Apropo, dacă acești pini nu sunt conectați, dispozitivul nu va porni!
Circuitul folosește LED-uri de control: LED1 - controlul modulului GSM (dacă există comunicare și modulul funcționează, clipește cu o frecvență de 1 clipire timp de 2-3 secunde, în alte cazuri apar probleme cu comunicarea sau cu modulul în sine), LED2 - controlul sistemului (în modurile de funcționare clipește cu o frecvență de 3-5 ori pe secundă, în modul de programare se aprinde cu o lumină constantă). În plus, LED-urile pentru monitorizarea stării buclelor de semnalizare LED4… LED7 sunt conectate la pinii IND1… IND4. KEY_S este de fapt butonul sau comutatorul „secret”. SPEAKER este un conector pentru conectarea unui difuzor, poate fi de orice rezistenta, puterea nu este mai mica de 0,25 W.

Despre sursa de alimentare a dispozitivului. Acest dispozitiv necesită o tensiune de alimentare în intervalul 10 - 18 V, cu un curent de până la 2 A. Este recomandabil să construiți o sursă de alimentare în așa fel încât tensiunea de alimentare să nu dispară chiar dacă rețeaua este pierdută, adică furnizați o baterie. Se recomandă utilizarea sursei de alimentare utilizate în versiunile anterioare ale dispozitivului descris. De asemenea, descrie conectarea sursei de alimentare la dispozitivul de alarmă.

Programarea funcțiilor de bază ale dispozitivului

Programarea principalelor funcții ale dispozitivului se realizează folosind un program special - Lite Programmer. Cea mai recentă versiune a programului poate fi oricând descărcată de pe site-ul autorului. În principiu, în loc de un computer pentru a programa dispozitivul, este posibil să folosiți un telefon mobil conectat la dispozitiv printr-un port de date sau un port infraroșu, dar pentru aceasta trebuie să scrieți cel puțin un midlet java și datorită lipsa timpului liber, autorul pur și simplu nu are timp să facă acest lucru, iar programarea cu un laptop este încă în regulă. Dacă există cei dispuși să abordeze această problemă - scrieți autorului prin e-mail, toată documentația va fi prezentată.
Dispozitivul este conectat la un port COM liber al unui computer printr-un convertor special RS232-UART sau la un port USB printr-un adaptor USB-UART. Doar nu încercați să vă conectați direct, fără un adaptor (acum există astfel de meșteri)! Acest lucru amenință cu moartea microcontrolerului sau a portului computerului!
Cum se trece la modul de programare:
1. Apăsați butonul S1 timp de cel puțin 2 secunde și așteptați ca indicatorul de stare de funcționare al modulului 2HL1 să înceteze să clipească (de obicei nu mai mult de 10 secunde)
2. Deconectați dispozitivul.
3. Setați jumperul J1 prin comutarea dispozitivului în modul „Programare”.
4. Conectați cablul pentru a conecta dispozitivul la computer.
5. Stabiliți o comunicare cu dispozitivul și programul (descris mai jos).
6. Deconectați dispozitivul.
7. Deconectați cablul de conectare la PC și scoateți jumperul J1.
8. Programarea este completă, puteți porni alimentarea și utilizați dispozitivul.
Forma principală a programului este standard, fără bibelouri și „clopote și fluiere”. În partea dreaptă a formularului, este setat numărul portului COM, precum și viteza de transmisie și recepție a datelor (pentru cazul nostru - 115200 baud), pentru a comuta dispozitivul în modul de programare, selectați în cadrul „Acțiune” ( în colțul din dreapta jos) - „stabiliți conexiunea”, în acest caz, LED-ul 1LED1 se va aprinde cu o lumină constantă. Poti programa!



Figura 4 - Forma principală a Lite Programmer

Lucrul cu programul pentru un utilizator, cel puțin o dată în viață, nu prezintă dificultăți deosebite. În plus, totul este descris în detaliu în instrucțiunile de operare și programare menționate de mai multe ori. Pe scurt: setați parametrii de care aveți nevoie, asigurați-vă că în a treia coloană apare în roșu inscripția „Schimbare”, selectați elementul „Programare” în cadrul „Acțiune”, apăsați butonul „Execută” și gata. Dacă parametrul este programat, atunci în coloana a cincea va apărea mesajul „Programat”; în caz de erori, programul va afișa și un mesaj corespunzător.

Câteva nuanțe de programare.

O atenție deosebită trebuie acordată procesului de programare, deoarece funcționarea dispozitivului în ansamblu depinde de acesta. După cum a arătat practica, principala greșeală este făcută la setarea numărului centrului SMS al operatorului de telefonie mobilă. Dacă nu cunoașteți acest număr sau nu sunteți sigur, atunci este mai bine să nu îl programați deloc. În acest caz, software-ul modulului GSM va determina independent numărul.
De asemenea, aveți grijă să setați numărul de solicitare USSD pentru soldul fondurilor, dacă intenționați să îl utilizați. Inițial, dispozitivul a fost dezvoltat pentru utilizatorii ucraineni, astfel încât soldul minim este de la una până la nouă ruble grivne. Există două opțiuni pentru a alege o instalație. Prima este selectarea operatorului necesar, iar programul va seta automat numărul necesar și suma minimă a soldului egală cu două grivne. A doua opțiune este să selectați elementul TUNE USSD din meniul derulant pentru selectarea operatorului de solicitare USSD, apoi completați parametrii necesari în formularul care apare: suma minimă (de la una la nouă ruble), rubla- separator copeck (unii operatori folosesc semne de separare diferite, de exemplu, un punct, virgulă, două puncte).
Programul de până acum acceptă doar alfabetul latin atunci când introduceți mesaje text SMS, deoarece această funcție este acceptată și de programul microcontrolerului. În prezent, se lucrează la includerea alfabetului chirilic.

Ghid de operare scurt.

Înainte de a-l instala în dispozitivul de alarmă, ar trebui să „pregătiți” cartela SIM într-un fel, și anume: dezactivați parola. Se recomandă utilizarea cartelei SIM a aceluiași operator de telefonie mobilă ca și telefoanele cu apelare din dispozitiv. Cel puțin, probabilitatea livrării SMS-urilor va crește de multe ori.
După alimentare și pornire, dispozitivul va emite un bip lung din difuzorul intern, apoi se stabilește comunicarea cu modulul, la finalizarea căreia se aud trei bipuri scurte. Aparatul este gata de utilizare.
În continuare, vom vorbi despre utilizarea dispozitivului ca dispozitiv de alarmă antiefracție pentru clădiri, etc. Pentru a utiliza dispozitivul ca alarmă auto sau alte funcții, în primul rând, este necesar un alt firmware pentru microcontroler, iar acest lucru depășește domeniul de aplicare al acestui articol . Acesta este subiectul publicațiilor ulterioare.
Pentru a arma dispozitivul, închideți comutatorul KEY_S. Apropo, în locul acestui comutator, puteți folosi orice tastatură cu contacte de închidere, de exemplu Satel SW02. După aceea, centrala va începe să numere timpul de ieșire (timpul este setat în timpul programării), timp în care este necesar să părăsești obiectul păzit. Dacă, după expirarea întârzierii de ieșire, toate buclele sunt asamblate, centrala comută în modul armat. În cazul în care, după expirarea timpului de intrare, cel puțin una dintre bucle este deschisă sau scurtă, centrala emite un sunet intermitent timp de 100-140 de secunde, se trimite un mesaj despre obiectul nearmat la numărul 1 (dacă programat), după care trece în modul alarmă cu trimiterea tuturor mesajelor și apelarea. De asemenea, este posibilă armarea centralei prin formarea de la numărul programat mai întâi sau prin trimiterea unui mesaj SMS cu textul „START” de la același număr. Trebuie reținut că în această versiune de firmware nu se recomandă utilizarea întrerupătorului „secret” și a funcțiilor GSM împreună la armare, pentru a exclude influența lor reciprocă. Când sunt utilizate împreună, prioritatea va fi pe partea laterală a comutatorului, funcțiile GSM nu vor funcționa!
În modul armat, dispozitivul monitorizează constant starea tuturor buclelor de alarmă, precum și starea modulului GSM. În acest caz, dacă bucla este declanșată, se trimit mesaje SMS și se efectuează un apel, în conformitate cu cartela de programare. Apelul se face până când abonatul ridică receptorul, dar nu mai mult de opt ori. De asemenea, in modul de securitate este monitorizata alimentarea retelei de 220V si a bateriei de rezerva. În același timp, cu fiecare defecțiune de 220V și apariția sa ulterioară, se transmite mesajul SMS corespunzător (această funcție poate fi dezactivată în timpul programării).
Pentru a dezarma dispozitivul, este necesar să deschideți obiectul și să deschideți contactele comutatorului în timpul ieșirii. Dacă acest lucru nu se face, dispozitivul intră în modul alarmă. Sau dezarmați obiectul înainte de a-l deschide sunând prin telefon sau trimițând un mesaj SMS „STOP” de la primul număr.
În modul standby, dispozitivul monitorizează și starea buclelor de alarmă, precum și modulul GSM. Dacă comunicarea cu modulul este pierdută sau rețeaua este pierdută, cinci sunete scurte se aud la fiecare 2-4 minute. De asemenea, la fiecare 30-40 de minute are loc un sondaj al stării contului numărului de mobil. În acest caz, se aud zece semnale sonore de scurtă durată ("trill") și un mesaj SMS ("NO MONEY !!") este trimis la numărul 1.
Tabelul prezintă mesajele de service pe care dispozitivul le poate trimite atunci când apar anumite evenimente (când funcția de trimitere este dezactivată, în timpul programării, aceste mesaje nu sunt trimise!):

Text SMS

Descriere

Notă

Stai garda!

Confirmare dezarmare a sistemului

Mod de asteptare

OPRIRE !!!

Defecțiune sau absența tensiunii de rețea de 220 V

Numai în modul armat

Aprinde

Apariția tensiunii de rețea 220V (după absență)

TOATE PUTERILE OFF!!!

Toate tensiunile de alimentare sunt sub normal. După un timp, dispozitivul va intra în modul de repaus.

În toate modurile de funcționare

Începe după ce ai dormit

Reluarea dispozitivului după o pană de curent

FARĂ BANI !!!

Suma minimă de fonduri în cont. Trebuie să vă încărcați contul!

Acest dispozitiv are un mare potential in ceea ce priveste imbunatatirea si modernizarea, putand fi folosit nu doar ca alarma, ci si ca orice dispozitiv de achizitie si transmisie de date, configurand programul microcontrolerului pentru fiecare caz concret.

Concluzie

Dispozitivul descris a trecut testul inițial în laboratorul autorului și a arătat rezultate bune. Modulul SIM900 a arătat o funcționare stabilă la controlul comenzilor AT standard, nu au fost observate reclamații speciale. În curând, plăcile de circuite imprimate ale acestui dispozitiv vor fi dezvoltate și documentația corespunzătoare va fi pregătită. O versiune demo a firmware-ului microcontrolerului este atașată acestui articol. O versiune complet funcțională a firmware-ului microcontrolerului dispozitivului este oferită oricui în mod gratuit. Pentru a face acest lucru, ar trebui să trimiteți o solicitare adecvată la e-mailul autorului sau prin ICQ. De asemenea, sunt luate în considerare orice propuneri de organizare a producției dispozitivului de alarmă descris și a dispozitivelor periferice.
În viitor, este planificată să se asigure compatibilitatea dispozitivului cu toate dispozitivele periferice destinate versiunii anterioare a dispozitivului de alarmă GSM de D. Dmitrenko. Iată completările la articol pentru diverse aplicații private.

Toate firmware-urile sunt în prezent complet funcționale, cu excepția firmware-urilor care acceptă tastele iButton, există restricții privind numărul maxim de taste utilizate - de la una la trei.

1. Folosind tasta TouchMemory pentru a controla dispozitivul

În prezent, firmware-ul microcontrolerului a fost dezvoltat pentru a funcționa cu tastele TouchMemory. Pentru a face acest lucru, este necesar să completați dispozitivul cu un dispozitiv simplu format din două rezistențe, o capacitate și o diodă zener. Și, bineînțeles, folosiți firmware-ul pentru acest tip de dispozitiv.
Un exemplu de utilizare a unui astfel de dispozitiv este descris clar în articolul Semnalizarea GSM folosind tastele iButton. În același loc, pe schema electrică este prezentată conexiunea unui dispozitiv suplimentar, sunt prezentate desenele plăcii de circuit imprimat.
Firmware-ul poate fi descărcat [se caută un dispozitiv DDN Research HG45Q]


Salut!
Aici a apărut sarcina de a administra o casă de țară, de a monitoriza temperatura, ușile, ferestrele. Și atunci a apărut întrebarea despre mediul de transmisie a datelor. Ei bine, firele și canalul radio dispar din cauza costului mare, FOCL este doar un vis, dar GSM este ceea ce ai nevoie. În primul rând, ochii a căzut pe vechile telefoane „Motorola”, „Nokia”, „SonyEricsson”. S-a uitat, a întors-o și s-a răzgândit. În primul rând, nu am vrut să mă lipim de contactele butonului și nici nu a existat niciun feedback. În al doilea rând, să te ocup de software-ul telefonului, ei bine, nu este deloc în casierie. În general, în gândurile creative și plutind în vastitatea rețelei mondiale, prinzând câțiva viruși, s-a găsit un compromis. Și lucrează cu software și fără butoane. Toate acestea sunt oferite de modul SIM900D... Deci i-a plăcut de mine.
- 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, versurile sunt suficiente, e timpul să lucrăm.
Acest modul arată așa.

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

După cum puteți vedea, nimic complicat. Acum să vorbim despre schema electrică a acestui miracol. Ne uităm la manual. Și vedem pinout-ul.

Da, sunt multe lucruri, dar nu le vom folosi pe toate. Primul lucru pe care trebuie să-l facem este să legăm toți pinii „GND”. Dacă vă uitați la colțul din dreapta sus, veți observa trei ace separate. Două „GND” și „ANT”. Acești știfturi sunt poziționați astfel pentru un motiv. Să aruncăm o privire în documentație pentru o imagine a conexiunii antenei.

Pinii 59 și 61 ar trebui să fie cât mai aproape de cablul antenei. Sunt necesare circuite suplimentare evidențiate printr-o linie punctată pentru a conecta antenele cu un 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 antena pe un cablu de 3 metri și într-un loc de recepție foarte slabă, am strâns 13 puncte. din 31 din modul.Conectorul este vizibil in poza de mai sus. Mai precis, picioarele din el)) Conectorul în sine este pe cealaltă parte. În acest caz, contactele 59 și 61, parcă, îmbrățișează 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 pentru pinout-ul cartelelor SIM. Pe care să-l folosești? Nu voi introduce intrigi, dar de dragul simplității, vă prezint pinout-ul acestui conector. Vedere de sus.

Dar asta nu este tot. Dacă te uiți la diagrama de conectare a cartelei SIM din manual, 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 o poți pune, dar apoi ai grijă și nu atinge contactele cu degetele !!! Ca persoană păcătoasă, nu pot garanta pentru mine, așa că am lipit mikruhu-ul. Și aici este circuitul în sine.

Este, desigur, dat pentru o cartelă SIM cu 8 pini, dar pentru o cartelă cu 6 pini va fi la fel. Există într-adevăr două ambuscade cu acest microcircuit. Primul este acolo unde îi vei găsi iadul. Și a doua este că dimensiunea ei... Când am primit comanda și am pus-o pe masă... Pe scurt, în a doua poză de mai sus, este lipit între cartela SIM și baterie. Pentru comparație, rezistențele 0805. Ei bine, în dreapta este un tranzistor într-un pachet SOT-23. Ei bine, oarecum am înțeles cu cartela SIM, să mergem mai departe. Și apoi ingineria luminii. În general, acest lucru nu este pentru toată lumea. Deoarece toate aceste semnale pot fi aduse direct în MK și lasă-l să-și dea seama el însuși. Le-am scos pe toate dintr-un sentiment de frumusețe. Deci decideți singuri.
- Primul este semnalul dacă modulul este pornit sau nu (STARE) log 1 - Al doilea este semnalul de înregistrare în rețea (NETLIGHT) log 1/0 (clipește) Dacă clipește cu aceeași frecvență, înseamnă că nu a înregistrat în rețea Dacă există o perioadă lungă de timp, înseamnă că există o conexiune la rețea ... - Al treilea este un jurnal de semnal de apel/sms (RING) 0 Se aprinde dacă primește un apel și clipește când se primește un mesaj SMS. Primele două semnale trebuie conectate printr-un 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 fără ea). Asta ne oferă manualul.

Adică, log 1 a fost aplicat 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, nu-i așa? Bine, hai să mergem mai departe. Modulul este alimentat de un arc de la 3 la 4,8 volți. Se pare că totul este simplu, dar nu așa. La momentul unui apel, transmitere sms, căutare în rețea, modulul poate necesita până la 2A. Cum. Deci fanii LM7805 și KRENok ar putea fi supărați. Din fericire, manualul conține două circuite pe microcircuite MIC29302 (nu l-am găsit niciodată la vânzare) și LM2596 (pe acesta îl puteți cumpăra). Dar sunt leneș și pur și simplu nu am vrut să adun hrana cu atâtea curele. Am căutat pe internet și l-am găsit. Există un stabilizator atât de bun pentru procesoare precum „Stump”, „AMD” pentru 3,3V și până la 7,5A. În, cred că asta este ceea ce aveți nevoie și ARM poate fi alimentat și modulul. Iată o diagramă a acestui miracol.

Și iată cum arată când este asamblat.

Am pus caloriferul de frica, in principiu, microcircuitul nu se incalzeste nici in timpul unui apel. Iar ultimul lucru la care trebuie să acordați atenție 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 cumva cam mari, dar sub forma unei tablete 2032 3v, de asta aveți nevoie. Din fericire, nu sunt scumpe și puteți lipi compartimentele 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ă mizerie împreună și în stare de funcționare.

În articolul următor vă voi spune cum am spart acest modul, dar deja programatic prin terminal folosind comenzi AT.
Prezentarea diagramelor în PCAD-2006
Arhivă cu fișiere modul GSM.
Arhiva cu dosare ale unitatii de stabilizare.
Continuarea seriei de articole despre modulul GSM.
Comenzi AT.
Comunicarea modulului cu ATmega8515.
Placă de depanare bazată pe SIM900D


Foli 14/03/13

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

Alexey 15.03.13

Mă ocup de comenzile AT. Nu vreau să expun jumătate din lucrare, deoarece există câteva întrebări. Și cu UART și CVAVR totul este simplu acolo. De îndată ce mă ocup de comenzile AT, voi stabili imediat ce comenzi și cum să le trimit de la CVAVR.

Anatok 04.11.13

Toate acestea sunt frumoase. 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 vor să aibă un astfel de aparat.

Alexey 11/04/13

Modulul GSM consumă până la 2A atunci când vă înregistrați în rețea sau efectuați un apel sau o comunicare GPRS. Pentru astfel de resurse este nevoie de o baterie bună, iar la -30 bateria nu va rezista mult. Chiar și în stațiile meteo, se recomandă utilizarea unor baterii simple pe senzorii de exterior.

Ursuleț 11/11/13

Dacă este încă relevant și interesant... verificați EAT pentru SIM900. În interiorul ARM, există un SDK în care poți descărca aplicații pe SIM900 din care poți face o mulțime de lucruri... de exemplu, trimite aceleași comenzi AT... + tastatură + afișaj SPI... + 2 ADC-uri :) Seara nu plictisitoare :)

Ursuleț 11/11/13

Și, la urma urmei, este foarte frumos pentru el să facă putere pentru el pe L5973D. Da, aproximativ 2A este scris î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 în sine este alimentat de la portul USB (care are un curent de 0,5 A)

Alexei 11.11.13

Aceasta este prinderea. Am alimentat și de la 7805 la început, totul a funcționat, apoi bam ... Și când sunt conectat la rețea, totul se stinge și apoi se repornește. Se pare că câinele de pază repornește după o confiscare de mâncare. Și cu L7953D va fi frumos, dar de unde să-l iau și va costa osprey :) Așa că am trecut la IRU1075

Alexei 11.11.13

Îmi cer scuze pentru greșeli, acest nenorocit de GUDROYD sculptează sclavi pentru mine. El crede mai inteligent. Nu voi edita, să îi fie rușine lui Google de munca lor.

unchiul Misha 24.12.13

Când mă înregistrez în rețeaua atmega, repornesc. Deși există un impuls dcdc. Condensatori pentru 200 microfarad. Uneori funcționează stabil. Eram deja epuizat.

Alexey 25.12.13

Schemă în studio. Din cuvinte, este destul de greu de înțeles problema.

unchiul Misha 25.12.13
unchiul Misha 25.12.13

Http://ybex.com/d/tk7kgiefpklpeujb1zbl4lo5 mrkf7ayvci04ouq3.html MK este alimentat de la 2.8 (chiar încercat 3.7) Volți, pentru a nu bloca convertorul de nivel.

Alexey 25.12.13
sergey 19.07.14

Salut Alexey! ai placi gata facute cu sim900, pot sa cumpar?

Alexey 19.07.14

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

Andrei 28.09.14

Din câte am înțeles, acesta este un prototip al eșarfei pe care abia aștept. Doar în versiunea comercială a fost căsătorită cu o sursă de alimentare și înnobilată cu ieșiri audio. Ce bum mare.

Alexey 28.09.14

De fapt este. Tocmai am ucis câteva păsări dintr-o singură piatră. S-a rezolvat problema veche cu potrivirea puterii și a nivelului pe UART. Și a adăugat audio și ieșire pentru șic. Un telefon mobil chiar terminat.

Andrei 28.09.14

Aș dori să vă prezint Ratsuha pentru viitor. de fapt, această placă este o unitate completă. Și poate fi folosit practic într-un produs finit. cu toate acestea, există un DAR. Cu un baldachin mezon, este mai bine să îl puneți deasupra (conector de antenă, acces la cartela SIM), prin urmare, este destul de recomandabil să lăsați găuri pentru aceiași pini paralele cu toți pinii pentru „periferie” cu posibilitatea de a lipindu-le în direcția „în jos”. Acestea. Am vrut să pun acest dispozitiv pe placa de microcontroler, să-l răspândesc sub a ta, să lipim conectorii de împerechere în el și să-l andocam. De asemenea, cu

Andrei 28.09.14

Am înghițit jumătate de mesaj, dar sper că înțelegeți ideea-)

Alexey 28.09.14
Serghei 02.01.15

Spune-mi de ce modulul se încălzește și nu prinde rețeaua?

Alexey 02/01/15

Există mai multe motive pentru aceasta. În primul rând, mâncarea a fost depășită. În al doilea rând, plusul nu l-a lovit pe cel general. Trebuie să aruncați o privire atentă la picioarele de putere. În al treilea rând, dacă burta atinge liniile de alimentare către modul. Există mai multe contacte de proces pe burtă care trebuie izolate de orice conductor. În al patrulea rând, cablul antenei este scurtcircuitat la cablul comun. Pentru a fi mai precis, este necesar să ne uităm la tablă. Pune-mi o taxă pe e-mail și voi vedea dacă ceva nu este în regulă acolo.

Serghei 02.01.15

Am plăci din fabrică, MasterKit BM8039 și ambele au aceeași problemă.. introduci cartela SIM, modulul începe să se încălzească și nu există rețea.

Alexey 02/01/15

Destul de greu de spus. Circuit de fabrică, trebuie să urci pe placă. Din documentatie se vede ca placa nu are diodele de protectie recomandate pentru cartela SIM. Cardul în sine și conectorul de pe pini coincid? Modulul 300 este vechi și după părerea mea funcționează doar cu cartelele SIM de 5 volți, dar acum sunt toate la 3v. Dar aș putea greși. Trebuie să te uiți la tabla în sine, este atât de greu să spui ceva. Dacă simptomul pe ambele este același, atunci aș fi apărut în direcția conectorului și a tensiunii cartelelor SIM. Încă o dată, carduri SIM moderne pentru 3 volți.

Serghei 02.01.15

Costa sim900D...nu sunt diode.Cand introduc cardul imi apare putere pe modul si incepe sa se incalzeasca dar pe cartela SIM de exemplu. cu 9 picioare nu merge ..

Serghei 02.01.15

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

Serghei 02.01.15

Cum pot verifica modulul fără să dezlipesc?

Alexey 02/01/15

Și ce anume a fost scurt? Dacă cartela SIM nu se pornește, atunci mă tem că linia pentru cartela SIM este moartă. Și câte picioare? 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 poți îngropa.

ANONIM 02/01/15

Nu știu exact ce a fost scurt .. piciorul 8 .. dar cum să comunic atunci?

Alexey 02/01/15

Există și 8 pe conector? Luăm microcircuitul FT232RL, asamblam adaptorul USB<->TTL, lipit 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ă tăcerea... În coșul de gunoi. Și da, ce sunt LED-urile de 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 verzi si rosii, prezenta retelei este determinata prin clipirea verde 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, atunci trebuie să alimentați modulul?

Alexey 02.02.15 15:48

Nu pot citi zatul de cafea. Am nevoie fie de o schemă, fie de o placă. Și unde are legătură cu alimentarea modulului și a cartelei SIM? Acolo, cel mai probabil, se intersectează și cu un fel de microcontroler. El furnizează energie. În general, este necesară o diagramă. Și așa este ca și cum ai face un diagnostic prin telefon.

Serghei 02.02.15 15:56

Unde pot posta o diagrama pe forum?

Serghei 02.02.15 15:57

Alimentarea modulului vine doar atunci când introduceți o cartelă SIM

Alexey 02.02.15 19:27

Ei bine, nu există așa ceva pentru modulul SIM900D. Pentru a porni modulul, trebuie să mențineți nivelul scăzut pe pinul 12 și apoi să îl ridicați. O cartelă SIM nu poate fi introdusă sau scoasă deloc 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 o temă și încărcați o fotografie.

Evgeniy 09.08.15 ora 12:04

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

Alexey 09/08/15 13:21

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

Vassilis serasidis

Dispozitivul este proiectat pentru controlul de la distanță a puterii diferitelor dispozitive (de exemplu, modemuri ADSL, computere personale, iluminatul camerei, diverse dispozitive de uz casnic) și poate, de asemenea, să monitorizeze starea a opt linii digitale și apoi să informeze utilizatorul despre starea acestor linii. , adică poate fi folosit ca un fel de sistem de securitate. Utilizatorul este controlat și informat prin SMS.

Principalele caracteristici ale dispozitivului:

  • control a 4 relee (pornit/oprit);
  • capacitatea de a monitoriza starea releului și 8 intrări digitale pentru trimiterea ulterioară a SMS-urilor către utilizator pentru a informa despre starea curentă;
  • circuit simplu, un număr mic de componente utilizate;
  • control prin SMS. Comenzile de control sunt protejate prin parolă (pot fi modificate de utilizator) pentru a preveni declanșarea falsă.

Schema schematică a dispozitivului este prezentată în Fig. unu.

Baza dispozitivului este un microcontroler ATtiny2313 Corporation și un modul GSM fabricat de companie.

Microcontrolerul IC2 funcționează la 4 MHz, care este setat de cristalul extern X1.



Fig. 2 Vedere exterioară a modulului GSM GM-47

Pentru ca modulul GSM să funcționeze, este necesară o cartelă SIM, care este conectată direct la modul folosind un suport special. Microcontrolerul și modulul GSM sunt alimentate de la regulatorul IC1 LM1117T 3.3 cu o tensiune de ieșire de 3,3 V. În general, microcontrolerul rămâne operațional între 2,7 V - 5,5 V (la o frecvență de funcționare de până la 10 MHz), prin urmare, pentru asigurați-vă că nivelurile logice ale modulului GSM și ale microcontrolerului sunt potrivite, alimentați-l de la IC1.

Comunicarea cu modulul GSM se realizează la o viteză de 9600 bps folosind comenzi AT. Este de remarcat faptul că nivelurile de tensiune pentru această comunicare sunt de 3,3 V de la microcontrolerul AVR și de 2,75 V de la modulul GSM. Prin urmare, a fost folosit un tranzistor T5 BC547 pentru a adapta nivelurile.

Modulul este conectat folosind un conector PCB.



Fig. 3 Placă de circuit imprimat cu conector instalat pentru modulul GM-47

Cartela SIM este conectată folosind slotul K15, care are încorporat un comutator de limită SW pentru detectarea prezenței unui card în suport.

Releul este controlat prin intermediul tastelor realizate pe tranzistoarele BC547


Fig. 4 Vedere exterioară a plăcii de circuit imprimat cu modulul instalat

LED-ul D6 este conceput pentru a indica starea conexiunii la rețea, iar dacă clipește, înseamnă o conexiune reușită la rețeaua GSM celulară, care este suportată de cartela SIM. Dacă LED-ul este aprins constant, înseamnă că modulul nu se poate conecta la rețeaua celulară.

Modulul GSM are intrări/ieșiri digitale și analogice, dar în acest proiect autorul nu le-a folosit pentru a exclude pericolul deteriorării modulului.

Ce sarcini îndeplinește microcontrolerul AVR?

După pornirea plăcii, microcontrolerul așteaptă până când are loc inițializarea modulului GSM, adică. modulul trebuie să citească cartela SIM și să se conecteze la rețeaua GSM pe care o acceptă.

După inițializarea cu succes, microcontrolerul trimite o comandă AT, ceea ce înseamnă că memoria modulului este selectată ca stocare SMS. Trebuie să existe un răspuns din partea modulului la această comandă, altfel comanda este trimisă din nou.

După selectarea memoriei, microcontrolerul trimite următoarea comandă. Această comandă îi spune modulului că mesajele vor fi citite în format text (nu în format PDU, care este și suportat de modul).

Urmează apoi o comandă, datorită căreia unele informații vor fi eliminate din textul mesajului SMS, de exemplu, numărul serverului SMS, data și ora. Acest lucru se face pentru a reduce SMS-urile și a simplifica munca microcontrolerului cu acestea.

Următoarea comandă este destinată citirii SMS-urilor stocate la prima adresă din memoria modulului.

Dacă există un text SMS, microcontrolerul îl citește și verifică parola corectă. Parola implicită este 1234, care poate fi apoi schimbată de utilizator. După verificarea parolei, se verifică prezența simbolului „*”, ceea ce înseamnă că parola a fost schimbată în 4 cifre (litere) după simbolul „*”.

După aceea, SMS-ul este procesat în continuare pentru a detecta o comandă rezervată unde X- înseamnă numărul releului (1-4), Y- comanda pornire/oprire. releu, poate lua valori 1 (pornit) sau 0 (oprit). De exemplu, comanda Relay2 = 1 înseamnă activarea releului #2.

După aceea, microcontrolerul procesează SMS-ul în continuare pentru prezența comenzii stare, iar dacă este disponibil, citește starea a opt linii digitale și starea tuturor releelor ​​și trimite un SMS cu un mesaj text despre starea liniilor monitorizate către numărul de la care a fost trimisă comanda SMS. În același timp, nu uitați că trebuie să existe fonduri pe cartela SIM pentru a trimite SMS-uri.

După toate aceste operațiuni, microcontrolerul șterge mesajul SMS aflat la prima adresă din memoria modulului și trece la așteptarea următorului mesaj SMS.

Trimiterea comenzilor prin SMS de pe un telefon mobil se realizează în conformitate cu o anumită sintaxă. Să o luăm în considerare folosind exemplul de comenzi:

  1. Echipă:1234 * 5678 Releu1 = 1 Releu2 = 0 Releu3 = 1 Releu4 = 1 Stare
    Avem cea mai bogată echipă aici. În primul rând, trimitem parola (1234) și indicăm că aceasta va fi schimbată (*) în 5678. Apoi pornim releele # 1, 3, 4 și oprim releul # 2. În plus, apoi prin trimiterea unei comenzi, solicităm informații despre starea a 8 senzori și a tuturor releelor.
  2. Echipă:1234 Releu1 = 1 Releu2 = 0 Releu3 = 1 Releu4 = 1 Stare
    În această comandă SMS, pornim releele # 1, 3, 4, oprim releul # 2 și solicităm informații despre starea senzorilor și releelor.
  3. Echipă: 1234 1 = 1 2 = 0 3 = 1 4 = 1 Stare
    Această comandă este similară cu comanda considerată 2), aici am omis cuvintele.
  4. Echipă:1234 Stare
    Cu ajutorul, solicităm doar informații despre starea senzorilor și releelor.
  5. Echipă:1234 Releul2 = 0
    În această comandă, după cum puteți vedea, oprim doar releul nr. 2

Schemă schematică, desen PCB, cod sursă (asamblator AVR) -.

Pentru a comenta materialele de pe site și pentru a obține acces deplin la forumul nostru, aveți nevoie Inregistreaza-te .

  • se poate folosi un telefon mobil in locul modulului GM-47, dupa parerea mea un telefon mobil este mai usor de achizitionat si mai ieftin
  • Nu există astfel de module de vânzare. Și deci un dispozitiv interesant. În general, multe lucruri interesante sunt tipărite aici, dacă toate acestea ne-ar fi disponibile...
  • Controlul prin SMS este posibil folosind un modem GSM sau un telefon folosit ca modem conectat la un computer. Sunteți interesat de detaliile implementării? Sau această opțiune folosind un computer este prea greoaie pentru tine!? Puteți folosi un micro PC sau un controler de tip compatibil cu un modul GSM, această opțiune este mai compactă. Deci, dispozitivele specializate menționate mai sus, acesta este în esență un modem GSM + computer, pot fi implementate independent de componentele disponibile pe scară largă.
  • Puteți, cred, să utilizați module compatibile, care au același sistem de comandă...
  • În modulele GSM și telefoanele mobile, pentru control și monitorizare sunt utilizate comenzi AT specializate, al căror set este practic același pentru diferiți producători și diferite dispozitive similare și, în funcție de specializarea dispozitivului și de caracteristicile setului de comenzi, sunt incluse comenzi speciale suplimentare. Acest dispozitiv poate fi convertit în aproape orice modul GSM sau telefon mobil. Facem un conector de control pe placă, care se realizează printr-o interfață UART cu 2 fire, în loc de 20 - 40 de picioare pentru un modem și corectăm ușor codul sursă ASM, care ne este disponibil (care poate nici măcar nu este necesar!) Ei bine, desigur, pentru un nou proiect, un nou aspect al PCB. Și obținem un dispozitiv universal de control și monitorizare.
  • Iată o opțiune de implementare pentru controlul de la distanță pe un modul GSM accesibil SIM300D - http://electromost.com/index/mnogofu...kontrolja/0-35 Când utilizați SMS, există un punct - livrarea SMS-ului de către operator nu este standardizată în timp. Prin urmare, nu este recomandat să gestionați dispozitivele critice în acest mod. În plus, este imperativ să urmăriți confirmarea comenzii executate - altfel SMS-ul a fost „declanșat” și nu se știe dacă comanda a fost executată sau nu :). Prin urmare, atunci când utilizați comunicația celulară, este necesar să gestionați încărcăturile în „timp real” cu confirmarea comenzilor executate. De exemplu, utilizați GPRS. Sau cel puțin DTMF - ca în dispozitiv, linkul către care a fost dat mai sus.
  • Domnilor, tot timpul bun al zilei! A încercat cineva să monteze acest dispozitiv? Încercările mele cu modulul Neoway M590 nu au avut succes. După citirea SMS-ului primit, microcontrolerul se întrerupe pentru câteva secunde, apoi îl șterge din memorie și continuă să trimită comanda AT către modul într-un ciclu. În acest caz, nu au loc modificări ale stării releului și nici trimiterea unui mesaj prin comanda „Stare”. Are cineva vreo părere despre asta?
  • Cusutul dispozitivului este inoperant. De asemenea, am asamblat un astfel de dispozitiv pe o placă cu cablajul original și cu GR-47. Reacția este aceeași cu a ta. Am citit și pe un forum occidental despre o problemă similară cu acest dispozitiv. Pentru a nu alege listarea pe ASM, am rescris AVR în CodeVision, în același timp am introdus optimizarea: nu conduceți constant ciclul de sondare, dar la începutul lucrului cu modemul, trimiteți o comandă pentru a emite un mesaj SMS la terminal și apoi analizați SMS-ul după primirea mesajului.
  • Așa că am scotocit prin aproape tot Internetul în căutarea adevărului și chiar i-am scris autorului Serasidis Vasilis cu o solicitare să-l ajut (în engleză, desigur), dar nu am reușit nimic. Mi se pare că ambuscadă aici constă în diferența dintre numerele noastre de telefon și cele străine. Din lista programului se poate observa că au acest număr încă o cifră, respectiv, este necesar să se ajusteze peste tot parametrul de registru „No_Of_ignore_bytes” (R25). Deși, aș putea greși. Pe unul din site-urile de specialitate s-a pus problema asta exact ca a noastra, si se pare ca acolo s-a rezolvat cu succes, dar in ce fel, din pacate, tace. De asemenea, este imposibil să vă înregistrați pe acest site pentru a comunica cu participanții la subiect - aceștia pornesc fără explicații, chiar în faza de înregistrare. Iată linkul: http://www.edaboard.com/thread290544.html Dragă max7780, dacă dispozitivul tău funcționează, poți partaja programul? V-as fi foarte recunoscator, pentru ca cunostintele mele de programare nu imi permit sa scriu de la zero un program atat de complex nici in ASM, nici in SI, si doar mi-am rupt creierul ca sa-l aleg pe cel existent in doua luni.
  • Am adunat aparatul acum 5 ani, daca il gasesc probabil maine voi posta sursa. Dar nu toate funcțiile sunt implementate acolo, de exemplu, nu am făcut comanda de stare, care citește stările intrărilor și nu există nicio garanție că programul va funcționa cu modemul dvs., poate că există unele diferențe în răspunsurile la comenzi sau în comenzile în sine. De asemenea, în codul sursă original nu există o analiză a răspunsului modulului, modemul poate raporta o eroare, iar programul va continua să emită comenzi sau modemul se poate bloca, iar microcontrolerul pur și simplu nu îl poate reporni, deoarece originalul placa nu are control PowerPin al modulului. Voi analiza fișa de date pentru modulul dvs. și voi ajuta cât de mult pot. Aș vrea să mai spun că 590th este un gunoi rar, am cumpărat trei module, doar unul a funcționat bine fără probleme. La relucrarea software-ului, sarcina nu era de a asigura funcționarea fără defecțiuni a dispozitivului pentru o lungă perioadă de timp, ci doar porniți piesa de hardware, există și o mulțime de coduri neoptimale, mai bine v-aș trimite acest lucru program prin e-mail.
  • Din cele două modemuri achiziționate din anii 590, doar unul dintre cele două modemuri achiziționate din anii 590 mi-a funcționat și el bine, al doilea trimite la emisiune orice gunoi care se vede pe terminal. Am încercat să iau viteza - este inutil. Și al doilea funcționează clar la o viteză de 9600, dar din anumite motive nu vrea să fie prieten cu microcontrolerul, deși, aici am aflat deja că punctul este cel mai probabil în programul în sine. Cu toate acestea, pentru mine rămâne încă un mister de ce funcționează pentru unii și nu pentru alții. Se pare că GM47 și NEOWAY au aceleași protocoale de comandă AT, singura diferență este că Neoway nu are port pentru microfon, prin urmare, este imposibil să implementați un apel vocal. Aveți același circuit și controler sau s-au schimbat? Da, mă voi bucura de orice, chiar și de o soluție „brută”, pentru că atunci poate fi deja finalizată conform așteptărilor. Principalul lucru este fundația. Așa că vă voi fi extrem de recunoscător dacă veți trimite programul la adresă [email protected], atunci va fi deja posibil să merg mai departe în această direcție, pentru că acum tocmai am ajuns într-o fundătură...

Poate fi utilizat în dispozitive în care este necesară comunicarea la distanță lungă. De exemplu, un bărbat controlează un robot în Moscova în timp ce stă în Krasnodar! Sau un fermier pornește o pompă de apă într-un câmp de orez din casa lui la câțiva kilometri de câmp! Există mai multe opțiuni pentru comunicarea cu dispozitivul:

Comunicare simplă bazată pe mesaje SMS:
Porniți / opriți dispozitivul folosind comenzi simple prin SMS. Orice telefon mobil poate fi folosit pentru a controla dispozitivul.
Alarma antiefractie/incendiu care anunta proprietarul unei situatii de urgenta in casa prin SMS.

Comunicare pe bază de apel:
Alarme inteligente anti-efractie/incendiu care cheama politia sau pompierii si raporteaza o situatie de urgenta folosind mesaje vocale pre-inregistrate.

Comunicare prin Internet (GPRS):
Utilizatorul poate controla dispozitivul de pe orice PC/tabletă/telefon mobil conectat la Internet. De exemplu, afișajele de informații instalate pe autostrăzi sunt controlate dintr-o cameră de control centrală.
Robot controlat de internet. Un astfel de robot este accesibil de pe orice dispozitiv conectat la Internet de oriunde în lume.
Dispozitive portabile instalate în vehicule care se conectează la Internet folosind modulul SIM300 GPRS și adaugă poziția curentă (folosind GPS (Global Positioning System)) la server. Aceste date sunt salvate cu o bază de date pe server împreună cu ID-ul vehiculului. Pentru a vizualiza traseul vehiculului, vă puteți conecta la server de pe computer utilizând World Wide Web.

Beneficiile utilizării modulului SIM300

Kitul SIM300 este un modul complet independent cu slot pentru cartela SIM, sursa de alimentare etc. Acest modul poate fi ușor interfațat cu microcontrolere ieftine AVR / PIC / 8051. Comunicarea cu microcontrolerul se face printr-un port serial asincron. Acesta este tipul de bază de comunicație serială care este suportat în hardware de majoritatea microcontrolerelor. Datele sunt transferate bit cu bit și colectate în octeți. La un nivel înalt, arată ca un simplu flux de text. Există două fluxuri în total: unul de la microcontroler la SIM300 și celălalt de la SIM300 la microcontroler. Comenzile sunt trimise ca text simplu.

Dacă nu ați folosit niciodată transmisia de date în serie sau nu ați auzit despre ea, atunci este recomandabil să înțelegeți cum funcționează și să exersați cu exemple mai simple.

Comunicare cu modulul SIM300 folosind AVR UART

Partea hardware a microcontrolerului folosită pentru comunicarea serială se numește UART și o folosim pentru a comunica cu modulul SIM300 (poate fi folosit și pentru a comunica cu alte dispozitive precum cititoare RFID, module GPS, scanere de amprente etc.). UART este o metodă de comunicare foarte comună în lumea electronică, am scris o bibliotecă curată și simplă pentru aceasta, pe care o folosim în toate proiectele noastre folosind UART.

Deoarece un octet de la SIM300 poate ajunge la microcontroler în orice moment, ce se întâmplă dacă microcontrolerul este ocupat cu altceva? Pentru a rezolva această problemă, am implementat tamponarea datelor primite pe bază de întrerupere. Buffer-ul se află în memoria RAM a microcontrolerului. Are o funcție pentru a determina numărul de octeți din coadă.

Următoarele sunt funcțiile bibliotecii AVR USART:

void USARTInit (uint16_t ubrrvalue)

Inițializare hardware AVR USART. Valoarea parametrului ubrrvalue este setată viteza de transmisie dorită. Rata de transmisie implicită pentru SIM300 este de 9600 bps. Pentru un microcontroler AVR care funcționează la 16 MHz, valoarea ubrrvalue pentru această viteză ar trebui să existe 103 .

char UReadData ()

Citirea unui caracter din coadă. Dacă nu există nimic în coadă, atunci răspunsul este 0.

void UWriteData (date char)

Scrie un octet de date pe linia Tx folosind funcția UWriteString ().

uint8_t UDataAvailable ()

Raportează cantitatea de date din coada FIFO.

void UWriteString (car * str)

Scrie un șir în stil C terminat cu nul pe linia Tx.
Exemplul 1: UWriteString ("Bună ziua, lume!");
Exemplul 2: numele caracterului = "Avinash!"; UWriteString (nume);

void UReadBuffer (void * buff, uint16_t len)

Copiază conținutul FIFO în memoria specificată de buff, cantitatea de date copiată este determinată de parametrul len. Dacă au ajuns mai puține date în tamponul FIFO prin UART (în conformitate cu parametrul len), atunci spațiul rămas va fi umplut cu zerouri.

char gsm_buffer;
UReadBuffer (gsm_buffer, 16);

Exemplul de mai sus va citi 16 octeți de date (dacă există) din FIFO într-o variabilă gsm_buffer... Rețineți că gsm_buffer a alocat o matrice de 128 de octeți, deoarece este posibil să avem nevoie de mai mult de 16 octeți mai târziu. Astfel, acest buffer poate fi folosit pentru a citi până la 128 de octeți în viitor.

Funcția de mai sus este utilizată de obicei împreună cu UDataAvailable ().

în timp ce (UDataAvailable ()<16)
{
// Nu face nimic
}

char gsm_buffer;
UReadBuffer (gsm_buffer, 16);

Fragmentul de cod afișat mai sus așteaptă ca 16 octeți de date să se acumuleze în buffer, apoi îi citește.

void UFlushBuffer ()

Anulează așteptarea datelor de către bufferul FIFO. Înainte de a trimite o nouă comandă către modulul GSM, anulați mai întâi așteptarea datelor de către bufferul FIFO.

Funcțiile de mai sus sunt folosite pentru a trimite și primi comenzi text de la modulul GSM SIM300.

Set de comandă AT pentru SIM300

Acum că sunteți familiarizat cu elementele de bază ale bibliotecii AVR USART și utilizarea acesteia pentru a inițializa USART, trimite și primi date, este timpul să învățați comenzile modulului SIM300 și cum să trimiteți și să primiți răspunsuri. SIM300 are mai multe funcții: trimiterea unui mesaj text, efectuarea unui apel etc. Fiecare dintre aceste funcții este executată după o comandă specifică, iar SIM300 are propriul set de comenzi.

Toate comenzile SIM300 încep cu un prefix AT + si sfarsit Retur transport(abreviat ca retur transport). Cod ASCII CR - 0x0D (zecimal 13). Toate comenzile pe care le trimiteți către SIM300 vor fi returnate pe linia TX a SIM300. Adică, dacă trimiteți o comandă de 7 octeți (inclusiv CR final), atunci veți primi imediat acești 7 octeți în buffer prin UART. Dacă nu l-ați primit, atunci ceva nu este în regulă!

Prima funcție pe care o vom învăța va fi SIM300Cmd (const char * cmd), face următoarele:

  • Scrie comenzile date de parametru cmd.
  • Adaugă CR după comandă.
  • Așteaptă ca comanda să revină și, dacă vine înainte de expirarea timpului, răspunde SIM300_OK(constantă definită în sim300.h). Dacă au așteptat prea mult pentru o întoarcere, dar nu a existat întoarcere, răspunde ea SIM300_TIMEOUT.

Notă: Toate funcțiile dependente de SIM300 sunt stocate în fișierul sim300.c. Probele și constantele sunt stocate în sim300.h

Lucrul cu SIM300Cmd ()

Int8_t SIM300Cmd (const char * cmd) (UWriteString (cmd); // Trimiteți comanda UWriteData (0x0D); // CR uint8_t len ​​​​= strlen (cmd); len ++; // Adăugați 1 pentru CR final adăugat la toate comenzi uint16_t i = 0; // Așteptați ecou în timp ce (i< 10*len) { if(UDataAvailable() < len) { i++; _delay_ms(10); continue; } else { //We got an echo //Now check it UReadBuffer(sim300_buffer,len); //Read serial Data return SIM300_OK; } } return SIM300_TIMEOUT; }

Comanda este de obicei urmată de un răspuns. Forma răspunsului este următoarea:
LF- Line Feed, codul său ASCII 0x0A (10 în zecimală)

Astfel, în timp ce așteptați un răspuns după trimiterea unei comenzi, se pot întâmpla trei lucruri:

  • Niciun răspuns pentru o lungă perioadă de timp. Motivul probabil ar putea fi acela că SIM300 nu este conectat la microcontroler.
  • Răspuns primit, dar nu cum era de așteptat. Acest lucru se poate datora unei linii seriale proaste, unei rate de transmisie incorectă sau unui microcontroler care rulează la o frecvență greșită.
  • Răspuns corect primit.

De exemplu, comanda Obțineți înregistrarea în rețea(Înregistrarea în rețea) se face după cum urmează: șir de comandă: " AT + CREG?"

Raspuns(Răspuns): + CREG:, O.K

Vedeți că răspunsul corect este de 20 de octeți. Adică după trimiterea comenzii „AT + CREG?” este necesar să așteptați până când sunt primiți 20 de octeți sau până când a trecut un anumit timp. A doua condiție este îndeplinită pentru a evita înghețarea dacă SIM300 este defect. Adică, în loc să așteptați mereu un răspuns, va fi emisă o eroare dacă SIM300 răspunde prea mult timp (aceasta se numește timeout)

Dacă se primește răspunsul corect, atunci analizăm variabila pentru a obține informații despre înregistrarea în rețea.

În funcție de starea actuală de înregistrare în rețea, valoarea poate fi: 0 - Neînregistrat, acum SIM300 nu caută un nou operator pentru a se înregistra. 1 - Înregistrat în rețeaua de domiciliu. 2 - Neînregistrat, acum SIM300 caută un nou operator pentru a se înregistra. 3 - Înregistrare refuzată. 4 - Necunoscut. 5 - Înregistrat, roaming.

Lucrul cu SIM300GetNetStat ()

Int8_t SIM300GetNetStat () (// Trimiteți comanda SIM300Cmd ("AT + CREG?"); // Acum așteptați răspunsul uint16_t i = 0; // răspunsul corect are o lungime de 20 de octeți // Așteptați până când avem 20 de octeți // în tampon. în timp ce (i<10) { if(UDataAvailable()<20) { i++; _delay_ms(10); continue; } else { //We got a response that is 20 bytes long //Now check it UReadBuffer(sim300_buffer,20); //Read serial Data if(sim300_buffer=="1") return SIM300_NW_REGISTERED_HOME; else if(sim300_buffer=="2") return SIM300_NW_SEARCHING; else if(sim300_buffer=="5") return SIM300_NW_REGISTED_ROAMING; else return SIM300_NW_ERROR; } } //We waited so long but got no response //So tell caller that we timed out return SIM300_TIMEOUT; }

Funcția este implementată în același mod: int8_t SIM300IsSIMIinserat ()

Pentru alte tipuri de răspunsuri, nu știm dinainte dimensiunea exactă a răspunsului ca în comanda de mai sus. De exemplu, aceasta este comanda Get Service Provider Name, unde lungimea numelui operatorului nu este cunoscută în avans. Poate fi MTS, Beeline etc. Pentru a rezolva această problemă, folosim faptul că înainte și după răspunsul este CR LF... Astfel, pur și simplu scriem în buffer toate personajele până ne întâlnim CR, ceea ce înseamnă sfârșitul răspunsului.

Pentru a simplifica procesarea unor astfel de comenzi, am realizat funcția
SIM300WaitForResponse (uint16_t timeout)

Această funcție așteaptă un răspuns de la SIM300 (sfârșitul răspunsului este notat cu CR) și raportează dimensiunea răspunsului, în timp ce răspunsul în sine este copiat într-o variabilă globală sim300_buffer.

Dacă nu se primește niciun răspuns înainte de expirare, atunci răspunsul este 0. Timpul de expirare în milisecunde poate fi setat cu parametrul pauză... Nu contorizează LF-urile întârziate sau ultimele OK-uri, acestea rămân în buffer-ul UART FIFO. Prin urmare, înainte de a reveni, folosim comanda UFlushBuffer () pentru a le elimina din clipboard.

Lucrul cu SIM300WaitForResponse (uint16_t timeout)

Int8_t SIM300WaitForResponse (uint16_t timeout) (uint8_t i = 0; uint16_t n = 0; while (1) (while (UDataAvailable () == 0 && n

Lucrul cu SIM300GetProviderName (car * nume) Funcția face următoarele:

  1. Șterge memoria tampon USART pentru a elimina orice erori sau răspunsuri.
  2. Trimite comanda „AT + CSPN?” utilizarea funcției SIM300Cmd ("AT + CSPN?");
  3. Apoi așteaptă un răspuns folosind funcția SIM300WaitForResponse ().
  4. Dacă obținem un răspuns diferit de zero, îl analizează pentru a obține numele operatorului.

Următoarele funcții sunt implementate în mod similar:

  • uint8_t SIM300GetProviderName (car * nume)
  • int8_t SIM300GetIMEI (char * emei)
  • int8_t SIM300GetManufacturer (char * man_id)
  • int8_t SIM300GetModel (model caracter *)
uint8_t SIM300GetProviderName (char * nume) (UFlushBuffer (); // Trimiteți comanda SIM300Cmd ("AT + CSPN?"); uint8_t len ​​​​= SIM300WaitForResponse (1000); dacă (len == 0) returnează SIM300_TIMEOUT; char * start, * end ; start = strchr (sim300_buffer, "" "); start ++; final = strchr (start," ""); * final = "\ 0"; strcpy (nume, start); return strlen (nume); )

SIM300 și ATmega32. Partea hardware

Pentru a demonstra comunicarea cu un SIM300 folosind un AVR ATmega32, avem nevoie de următoarele componente:
- ATmega32 cu legare - resetare registru, pini ISP, quartz 16 MHz.
- + Alimentare 5V pentru alimentarea ATmega32 și LCD.
- LCD cu caractere 16x2 pentru indicarea rezultatelor.
- Modul SIM300.

Am folosit placa de depanare Xboard, deoarece are un ATmega32 cu fir, alimentare de + 5V și un afișaj LCD.

Cod sursă demonstrativ pentru AVR și SIM300

Codul sursă demo este scris în C și compilat folosind compilatorul gratuit AVR-GCC, folosindu-l pe acesta din urmă. Proiectul este împărțit în următoarele module:

  • Biblioteca LCD
    - Fișiere lcd.c, lcd.h, myutils.h, custom_char.h
    - Sarcina ei este să controleze un LCD standard 16x2.
    - Mai multe informații pot fi găsite la link.
  • Biblioteca USART
    - Fișiere usart.c, usart.h
    - Sarcina ei este să controleze microcontrolerul hardware USART AVR. Include funcții pentru inițializarea USART, trimiterea / primirea caracterelor, trimiterea / primirea șirurilor.
  • Biblioteca SIM300
    - Fișiere sim300.c, sim300.h

Configurarea unui proiect AS6 pas cu pas

Creați un nou proiect AS6 numit „Sim300Demo”.
Folosind exploratorul de soluții (arborele de proiect) creați un folder numit „lib” în folderul curent.
În folderul „lib”, creați folderele „LCD”, „USART” și „SIM300”.
Copiați fișierele (folosind Windows Explorer) lcd.c, lcd.h, myutils.h, custom_char.h în folderul lcd.
Copiați fișierele (folosind Windows Explorer) usart.c, usart.h în folderul USART
Copiați fișierele (folosind Windows Explorer) sim300.c, sim300.h în folderul SIM300.
Adăugați fișiere lcd.c, lcd.h, myutils.h, custom_char.h la proiect folosind exploratorul de soluții (arborele de proiect).
Adăugați filesusart.c, usart.h la proiectul dvs. folosind exploratorul de soluții (arborele de proiecte).
Adăugați fișiere sim300.c, sim300.h la proiect folosind exploratorul de soluții (arborele de proiect).
Definiți valoarea F_CPU = 16.000.000 folosind AS6.
Copiați și inserați fișierul principal Sim300Demo.c în program.
Compilați proiectul pentru a obține un fișier hex.
Flash-ul Xboard folosind un programator USB.
Dacă utilizați un microcontroler ATmega32 nou, setați LOW FUSE la 0xFFși HIGH FUSE activată 0xC9.

Ce face demo-ul?

Inițializează LCD și modulul SIM300.
Verifică dacă modulul SIM300 este conectat la USART și răspunde conform așteptărilor.
Afișează IMEI al modulului SIM300.
Afișează ID-ul producătorului
Verifică prezența unui card SIM.
Caută o rețea GSM și stabilește o conexiune. Aceasta necesită o cartelă SIM activă.
Afișează numele operatorului, de exemplu MTS sau Megafon.

Posibile probleme

Nicio imagine pe LCD

Asigurați-vă că proiectul dvs. AVR Studio este setat la 16 MHz (16000000Hz)
Reglați contrastul cu potențiometrul.
Apăsați butonul de resetare de mai multe ori.
Porniți / opriți dispozitivul de mai multe ori.
Conectați LCD-ul numai așa cum se arată în diagramă.

În timpul inițializării SIM300, apare eroarea „Fără răspuns”.

Verificați integritatea liniilor Rx, Tx și GND între SIM300 și Xboard.
Asigurați-vă că microcontrolerul rulează la 16 MHz.
Instalați siguranțele exact așa cum este descris mai sus.

Erori de compilator

Mulți oameni folosesc programe deja scrise și compilate. Ei nu au experiență și nu sunt familiarizați cu elementele de bază ale programării și compilării. Familiarizarea cu compilatoarele și modul în care acestea funcționează pe diferite platforme (PC / MAC / Linux) este un început excelent. Sistemele încorporate nu sunt potrivite pentru învățarea elementelor de bază. Sunt destinate celor care au aceste abilități și pur și simplu le folosesc.
Asigurați-vă că toate fișierele bibliotecii LCD sunt adăugate la proiect.
Asigurați-vă că AVR-GCC este instalat. (Distribuția Windows se numește WinAVR)
Asigurați-vă că AVR GCC este listat în proiectul AVR Studio.

Sfaturi generale pentru începători

Utilizați plăci de dezvoltare și programatori gata făcute.
Încercați să învățați din articole și tutoriale.

Lista radioelementelor

Desemnare Un fel Denumirea Cantitate NotăScorCaietul meu
U1 MK AVR pe 8 biți

ATmega32

1 În blocnotes
U2 Regulator liniar

LM7805

1 În blocnotes
D1 Dioda redresoare

1N4007

1 În blocnotes
D2 Dioda electro luminiscenta 1 În blocnotes
C1, C2 Condensator22 pF2 În blocnotes
C3, C4, C6 Condensator0,1 uF3

Așadar, după ce am luminat mult timp complexitățile 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 informative în cazul declanșării unui senzor de penetrare, să efectueze un apel pentru a permite monitorizarea audio a camerei, să monitorizeze temperatura și să o trimită prin SMS la cerere, precum și să gestioneze orice încărcare pe un comanda trimisă prin SMS.

Cine a urmărit acest subiect este conștient 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 lângă microcontrolerul ATmega32a, există un modul de putere realizat pe convertorul LM2596, acesta alimentează circuitul cu o tensiune constantă de 3,5 volți. În principiu, orice altă sursă de alimentare este potrivită, principalul lucru este că poate consuma 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ă a apărut astfel (pe care se poate face clic):

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

Linia Control trecând de la colectorul tranzistorului Q2 la pinul PortD.4 al microcontrolerului este 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ă un nivel ridicat pe această linie, va fi îndeplinită funcția de repornire a modulului GSM.

Și așa arată la locul de muncă în acest moment.

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

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 de activare a modulului

Ora și data sunt preluate din ceasul încorporat în modulul GSM. Pentru funcționarea lor, este necesară o baterie de 3 volți conectată la borna 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 același format ca cel 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, acesta 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 - D4 pe diagramă. Dar nimic nu te împiedică să agăți o relyuha sau un triac aici și să gestionezi ceva mai serios.

Din motive de securitate, este planificată utilizarea senzorului de mișcare HC-SR501 achiziționat de pe E-bay. În cazul declanșării, la ieșirea senzorului apare o unitate logică. După ce l-a prins, microcontrolerul va da o comandă pentru a trimite un mesaj SMS 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 pune orice alte mijloace de detectare a intruziunii - senzori pentru deschiderea ferestrelor și ușilor, senzori de spargere a geamului, senzori fotoelectrici etc., în general, tot ceea ce este capabilă imaginația.

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

Lista de comenzi

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

0 - Deconectați sarcina (Logic 0 este setat pe pinul PortD.6)

1 - Pornirea încărcăturii (Logica 1 este setat pe pinul PortD.6)

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

3 - Solicitare sold și trimiterea acestuia prin SMS înapoi la numărul specificat. Există o nuanță importantă aici - răspunsurile la solicitările USSD trebuie trimise în alfabet latin. În caz contrar, în loc de un text semnificativ, un mesaj în codificare hexazecimală va fi trimis ca răspuns. Cum să traduceți USSD în latină, trebuie să verificați cu operatorul dvs. 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 trimiterea de mesaje în cazul activării senzorului de intruziune.

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, precum valoarea de la senzorul de temperatură, dacă sarcina este pornită, starea la intrarea de la senzorul de intruziune și dacă este permisă pentru a trimite SMS de notificare de la acesta.De exemplu, așa ar putea arăta un astfel de mesaj: temperatura este +24, sarcina este oprită, ieșirea senzorului de mișcare este 0, trimiterea de SMS-uri în caz de declanșare este interzisă.

Acum, cum să configurați modulul pentru a trimite sms la numărul dvs. În arhiva cu programul, găsim fișierul de program principal, se numește „programul” :) și găsim o constantă în el:

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

înlocuim numărul nostru de telefon aici, compilam programul și obținem fișierul hex al firmware-ului.

Programul, ca întotdeauna, este scris în Bascom-AVR, prin urmare, este destul de ușor de înțeles algoritmul pentru lucrul cu modulul GSM. Noroc!

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

Mulțumiri speciale lui Sergey RD3AVJ, un vechi prieten al site-ului, pentru participare și ajutor î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.

Top articole similare