Modulul GSM este utilizat în multe dispozitive de comunicații care se bazează pe tehnologia GSM (Global System for Mobile Communications). Este folosit pentru a interacționa cu rețeaua GSM utilizând un computer. Modulul GSM înțelege numai comenzile AT și poate răspunde corespunzător. Cea mai de bază comandă este „AT”, dacă GSM răspunde OK, atunci funcționează bine, altfel răspunde cu „EROARE”. Există diverse comenzi AT, cum ar fi ATA pentru a răspunde la un apel, ATD pentru a forma un apel, AT + CMGR pentru a citi mesajul, AT + CMGS pentru a trimite sms etc. Comenzile AT ar trebui să fie urmate de Carriage return ie \ r (0D în hex), cum ar fi „AT + CMGS \ r”. Putem folosi modulul GSM folosind aceste comenzi.
Interfață GSM cu 8051
În loc să folosim computerul, putem folosi microcontrolere pentru a interacționa cu modulul GSM și LCD pentru a obține răspunsul de la modulul GSM. Deci vom interfața GSM cu un microcontroler 8051 (AT89S52). Este foarte ușor să interfațați GSM cu 8051, trebuie doar să trimitem comenzi AT de la microcontroler și să primim răspuns de la GSM și să îl afișăm pe LCD. Putem folosi portul serial al microcontrolerului pentru a comunica cu GSM, înseamnă a folosi PIN 10 (RXD) și 11 (TXD).
Mai întâi trebuie să conectăm LCD la 8051, puteți afla acest lucru de aici: Interfață LCD cu microcontroler 8051. Atunci trebuie să conectăm modulul GSM la 8051, acum ar trebui să acordăm o atenție deosebită. Mai întâi trebuie să verificați dacă modulul dvs. GSM este capabil să funcționeze la logica TTL sau poate funcționa doar cu RS232. Practic, dacă modulul dvs. are pini RX și TX (cu GND) la bord, acesta poate funcționa pe logica TTL. Și dacă nu are pin RX, TX și are doar un port RS232 (port serial cu 9), atunci trebuie să utilizați MAX232 IC pentru a conecta portul serial la microcontroler. Practic MAX232folosit pentru a converti date seriale în logică TTL, deoarece microcontrolerul poate funcționa numai pe logică TTL. Dar dacă modulul GSM are pini RX, TX, atunci nu este nevoie să utilizați MAX232 sau orice convertor serial, puteți conecta direct RX GSM la TX (PIN 11) din 8051 și TX din GSM la RX (PIN 10) din 8051 În cazul nostru am folosit modulul SIM900A și are pini RX, TX, așa că nu am folosit MAX232.
Diagrama circuitului pentru interfața GSM cu microcontrolerul AT89S52 este prezentată în figura de mai sus. Acum, după conexiune, trebuie doar să scriem un program pentru a trimite comenzi AT către GSM și pentru a primi răspunsul său pe LCD. Există multe comenzi AT descrise mai sus, dar scopul nostru al acestui articol este doar să interfațăm GSM cu 8051, așa că vom trimite doar comanda „AT” urmată de „\ r” (0D în hex). Acest lucru ne va oferi un răspuns „OK”. Dar puteți extinde acest program pentru a utiliza toate facilitățile GSM.
Explicarea codului
Pe lângă toate funcțiile legate de LCD, aici am folosit portul serial și registrul modului temporizator (TMOD). Puteți afla despre funcțiile LCD și alte coduri accesând secțiunea noastră de proiecte 8051, aici vă explic despre funcțiile de cod legate de comunicarea în serie:
Funcția GSM_init ():
Această funcție este utilizată pentru a seta Baudrate pentru microcontroler. Baudrate nu este altceva decât Bits / second transmis sau primit. Și trebuie să potrivim rata de transmisie de 8051 la rata de transmisie a modulului GSM, adică 9600. Am folosit Timerul 1 în modul 2 (modul de reîncărcare automată pe 8 biți) setând registrul TMOD la 0X20 și octetul superior al temporizatorului 1 (TH1) la 0XFD pentru a obține rata de transmisie de 9600. De asemenea, registrul SCON este utilizat pentru a seta modul de comunicare serial, am folosit Mode1 (8-bit UART) cu recepție activată.
Funcția GSM_write:
SBUF (serial buffer special function register) este utilizat pentru comunicarea serială, ori de câte ori dorim să trimitem orice octet către dispozitivul serial, punem acel octet în registrul SBUF, când octetul complet a fost trimis, atunci bitul TI este setat de hardware. Trebuie să-l resetăm pentru a trimite următorul octet. Este un steag care indică faptul că octetul a fost trimis cu succes. TI este al doilea bit al registrului SCON. Am trimis „AT” folosind această funcție.
Funcția GSM_read:
La fel ca și trimiterea, ori de câte ori primim orice octet de pe dispozitivul extern care octetul este pus în registrul SBUF, trebuie doar să-l citim. Și ori de câte ori octetul complet a fost primit bitul RI este setat de hardware. Trebuie să-l resetăm pentru a primi următorul octet. RI este primul bit de registru SCON. Am citit răspunsul „OK” folosind această funcție.