Il modulo GSM è utilizzato in molti dispositivi di comunicazione basati sulla tecnologia GSM (Global System for Mobile Communications). Viene utilizzato per interagire con la rete GSM utilizzando un computer. Il modulo GSM comprende solo i comandi AT e può rispondere di conseguenza. Il comando più semplice è "AT", se il GSM risponde bene allora funziona bene altrimenti risponde con "ERRORE". Ci sono vari comandi AT come ATA per rispondere a una chiamata, ATD per comporre una chiamata, AT + CMGR per leggere il messaggio, AT + CMGS per inviare l'sms, ecc. I comandi AT dovrebbero essere seguiti da Carriage return ie \ r (0D in esadecimale), come "AT + CMGS \ r". Possiamo utilizzare il modulo GSM utilizzando questi comandi.
Interfaccia GSM con 8051
Invece di utilizzare il PC, possiamo utilizzare microcontrollori per interagire con il modulo GSM e LCD per ottenere la risposta dal modulo GSM. Quindi interfacciamo il GSM con un microcontrollore 8051 (AT89S52). È molto facile interfacciare il GSM con l'8051, dobbiamo solo inviare comandi AT dal microcontrollore e ricevere la risposta dal GSM e visualizzarlo sul display LCD. Possiamo usare la porta seriale del microcontrollore per comunicare con il GSM, significa usare PIN 10 (RXD) e 11 (TXD).
Per prima cosa dobbiamo collegare l'LCD all'8051, puoi imparare questo da qui: Interfacciamento LCD con il microcontrollore 8051. Quindi dobbiamo collegare il modulo GSM all'8051, ora qui dovremmo prestare un po 'di attenzione. Per prima cosa devi verificare se il tuo modulo GSM è in grado di funzionare in logica TTL o può funzionare solo con RS232. Fondamentalmente se il tuo modulo ha pin RX e TX (con GND) a bordo, allora può funzionare con logica TTL. E se non ha pin RX, TX e ha solo una porta RS232 (porta seriale con 9), è necessario utilizzare l'IC MAX232 per collegare la porta seriale al microcontrollore. Fondamentalmente MAX232utilizzato per convertire i dati seriali in logica TTL perché il microcontrollore può funzionare solo con logica TTL. Ma se il modulo GSM ha RX, pin TX, non è necessario utilizzare MAX232 o alcun convertitore seriale, è possibile collegare direttamente RX del GSM a TX (PIN 11) di 8051 e TX di GSM a RX (PIN 10) di 8051 Nel nostro caso ho usato il modulo SIM900A e ha pin RX, TX quindi non ho usato MAX232.
Lo schema del circuito per l'interfacciamento GSM con il microcontrollore AT89S52 è mostrato nella figura sopra. Ora dopo la connessione, non ci resta che scrivere il programma per inviare comandi AT al GSM e ricevere la sua risposta su LCD. Ci sono molti comandi AT come descritto sopra, ma il nostro scopo di questo articolo è solo quello di interfacciare il GSM con l'8051, quindi invieremo semplicemente il comando "AT" seguito da "\ r" (0D in esadecimale). Questo ci darà una risposta "OK". Ma puoi estendere questo programma per utilizzare tutti i servizi del GSM.
Spiegazione del codice
Oltre a tutte le funzioni relative al display LCD, qui abbiamo utilizzato la porta seriale e il registro della modalità timer (TMOD). Puoi conoscere le funzioni LCD e altro codice passando attraverso la nostra sezione dei progetti 8051, qui sto spiegando le funzioni del codice relative alla comunicazione seriale:
Funzione GSM_init ():
Questa funzione viene utilizzata per impostare il Baudrate per il microcontrollore. Baudrate non è altro che i bit / secondo trasmessi o ricevuti. E abbiamo bisogno di far corrispondere il baudrate di 8051 al Baud rate del modulo GSM, cioè 9600. Abbiamo usato il Timer 1 in Mode 2 (modalità di ricarica automatica a 8 bit) impostando il registro TMOD su 0X20 e Higher byte del Timer 1 (TH1) a 0XFD per ottenere il baud rate di 9600. Anche il registro SCON viene utilizzato per impostare la modalità di comunicazione seriale, abbiamo utilizzato Mode1 (8 bit UART) con ricezione abilitata.
Funzione GSM_write:
SBUF (serial buffer special function register) viene utilizzato per la comunicazione seriale, ogni volta che vogliamo inviare un byte al dispositivo seriale mettiamo quel byte nel registro SBUF, quando il byte completo è stato inviato, il bit TI viene impostato dall'hardware. Dobbiamo resettarlo per inviare il prossimo byte. È un flag che indica che il byte è stato inviato con successo. TI è il secondo bit del registro SCON. Abbiamo inviato "AT" utilizzando questa funzione.
Funzione GSM_read:
Come per l'invio, ogni volta che riceviamo un byte da un dispositivo esterno quel byte viene inserito nel registro SBUF, dobbiamo solo leggerlo. E ogni volta che viene ricevuto il byte completo, il bit RI viene impostato dall'hardware. Dobbiamo resettarlo per ricevere il byte successivo. RI è il primo bit del registro SCON. Abbiamo letto la risposta "OK" utilizzando questa funzione.