- Materiali richiesti
- Software utilizzato
- Modulo GSM
- Comunicare con il modulo GSM utilizzando i comandi AT
- Schema del circuito di interfacciamento del modulo GSM ATMega16
- Creazione del progetto per ATmega16 utilizzando CodeVision
- Codice e spiegazione
- Costruisci il progetto
- Carica il codice su Atmega16
I moduli GSM sono interessanti da utilizzare soprattutto quando il nostro progetto richiede l'accesso remoto. Questi moduli possono eseguire tutte le azioni che il nostro normale telefono cellulare potrebbe eseguire, come effettuare / ricevere una chiamata, inviare / ricevere un SMS, connettersi a Internet tramite GPRS ecc. È inoltre possibile collegare un normale microfono e altoparlante a questo modulo e conversare sul proprio chiamate mobili. Questo aprirà le porte a molti progetti creativi se potesse essere interfacciato con un microcontrollore. Quindi in questo tutorial impareremo come possiamo interfacciare il modulo GSM (SIM900A) con il microcontrollore AVR ATmega16 e lo dimostreremo inviando e ricevendo messaggi utilizzando il modulo GSM.
Materiali richiesti
- Atmega16
- Modulo GSM (SIM900 o qualsiasi altro)
- display LCD
- Premi i pulsanti
- Resistenze 10k, Potenziometro
- Cavi di collegamento
- Adattatore 12V
- Programmatore USBasp
- Cavo FRC a 10 pin
Software utilizzato
Useremo CodeVisionAVR software per scrivere il nostro codice e SinaProg software per caricare il nostro codice di Atmega16 utilizzando programmatore USBASP.
Puoi scaricare questi software dai link indicati:
CodeVisionAVR:
SinaProg:
Prima di entrare negli schemi e nei codici, impariamo a conoscere il modulo GSM e il suo funzionamento.
Modulo GSM
Il modulo GSM può essere utilizzato anche senza microcontrollore utilizzando la modalità di comando AT. Come mostrato sopra, il modulo GSM viene fornito con un adattatore USART che può essere interfacciato direttamente al computer utilizzando un modulo MAX232 oppure i pin Tx e Rx possono essere utilizzati per collegarlo a un microcontrollore. Puoi anche notare gli altri pin come MIC +, MIC-, SP +, SP- ecc. Dove è possibile collegare un microfono o un altoparlante. Il modulo può essere alimentato da un adattatore 12V tramite un normale jack barilotto CC.
Inserisci la tua scheda SIM nello slot del modulo e accendilo, dovresti notare un LED di alimentazione che si accende. Ora aspetta circa un minuto e dovresti vedere un LED rosso (o di qualsiasi altro colore) lampeggiare una volta ogni 3 secondi. Ciò significa che il modulo è stato in grado di stabilire una connessione con la scheda SIM. Ora puoi procedere con il collegamento del tuo modulo con il telefono o qualsiasi microcontrollore.
Puoi costruire molti progetti interessanti utilizzando il modulo GSM come:
- Bacheca wireless con GSM e Arduino
- Segreteria telefonica automatica tramite Arduino e modulo GSM
- Domotica basata su GSM con Arduino
- Sensore PIR e sistema di sicurezza basato su GSM
Controlla anche tutti i progetti relativi al GSM qui.
Comunicare con il modulo GSM utilizzando i comandi AT
Come avrete intuito, il modulo GSM può comunicare attraverso la comunicazione Seriale e potrebbe comprendere solo una lingua e cioè i “ comandi AT ”. Qualunque cosa tu voglia dire o chiedere al modulo GSM dovrebbe essere solo tramite comandi AT. Ad esempio, se vuoi sapere se il tuo modulo è attivo. Dovresti chiedere (inviare) un comando come "AT" e il tuo modulo risponderà "OK".
Questi comandi AT sono ben spiegati nella sua scheda tecnica e possono essere trovati qui nella sua scheda tecnica ufficiale. Va bene! Va bene! È un datasheet di 271 pagine e potrebbero essere necessari giorni per leggerli. Quindi ho fornito alcuni comandi AT più importanti di seguito affinché tu possa farlo funzionare presto.
A |
Risponde con OK per il riconoscimento |
AT + CPIN? |
Verificare la qualità del segnale |
AT + POLIZIOTTI? |
Trova il nome del fornitore di servizi |
ATD96XXXXXXXX; |
Chiamata al numero specifico, termina con punto e virgola |
AT + CNUM |
Trova il numero della scheda SIM (potrebbe non funzionare per alcune SIM) |
ATA |
Rispondi alla chiamata in arrivo |
ATH |
Riaggancia la chiamata in arrivo corrente |
AT + COLP |
Mostra il numero della chiamata in arrivo |
AT + VTS = (numero) |
Invia numero DTMF. È possibile utilizzare qualsiasi numero sulla tastiera del cellulare per (numero) |
AT + CMGR |
AT + CMGR = 1 legge il messaggio in prima posizione |
AT + CMGD = 1 |
Elimina messaggio in prima posizione |
AT + CMGDA = "DEL TUTTO" |
Elimina tutti i messaggi dalla SIM |
AT + CMGL = "ALL" |
Leggi tutti i messaggi dalla SIM |
AT + CMGF = 1 |
Imposta la configurazione degli SMS. "1" è per la modalità solo testo |
AT + CMGS = "+91 968837XXXX" > CircuitDigest Text
|
Invia SMS a un numero particolare qui 968837XXXX. Quando vedi ">" inizia a inserire il testo. Premi Ctrl + Z per inviare il testo. |
AT + CGATT? |
Per verificare la connessione a Internet sulla carta SIM |
AT + CIPSHUT |
Per chiudere la connessione TCP, ovvero disconnettersi da Internet |
AT + CSTT = "APN", "username", "Pass" |
Connettiti a GPRS con il tuo APN e pass key. Può essere ottenuto dal provider di rete. |
AT + CIICR |
Controlla se la scheda SIM ha un pacchetto dati |
AT + CIFSR |
Ottieni l'IP della rete SIM |
AT + CIPSTART = "TCP", "SERVER IP", "PORT" |
Utilizzato per impostare una connessione TCP IP |
AT + CIPSEND |
Questo comando viene utilizzato per inviare dati al server |
Qui useremo i comandi AT + CMGF e AT + CMGS per inviare messaggi.
Se hai utilizzato il modulo GSM con Arduino, durante la ricezione dei messaggi puoi utilizzare il comando + CMT: per visualizzare il numero di cellulare e il messaggio di testo sul monitor seriale. Il messaggio di testo viene visualizzato sulla seconda riga come mostrato nell'immagine.
Analizzeremo questo comando + CMT: per verificare se il messaggio è disponibile o meno.
Schema del circuito di interfacciamento del modulo GSM ATMega16
I collegamenti saranno i seguenti
- Tx e Rx del modulo GSM a Rx (Pin14) e Tx (Pin15) di Atmega16 rispettivamente.
- Pulsanti per PD5 (Pin19) e PD6 (Pin20).
- Collegamenti LCD:
- RS - PA 0
- R / W - PA1
- EN - PA2
- D4 - PA4
- D5 - PA5
- D6 - PA6
- D7 - PA7
Creazione del progetto per ATmega16 utilizzando CodeVision
Dopo aver installato i software CodeVisionAVR e SinaProg , seguire i passaggi seguenti per creare il progetto e scrivere il codice:
Già caricato
Passaggio 1. Aprire CodeVision Fare clic su File -> Nuovo -> Progetto . Apparirà la finestra di dialogo di conferma. Fare clic su Sì
Passaggio 2. CodeWizard si aprirà. Fare clic sulla prima opzione, ad esempio AT90 , e fare clic su OK.
Passaggio 3: - Scegli il tuo microcontrollore, qui prenderemo Atmega16L come mostrato.
Passaggio 4: - Fare clic su USART . Seleziona Ricevitore e Trasmettitore facendo clic su di esso. Come mostrato di seguito:
Passaggio 5: - Fare clic su LCD alfanumerico e selezionare Abilita supporto LCD alfanumerico .
Passaggio 6: - Fare clic su Programma -> Genera, salva ed esci . Ora più della metà del nostro lavoro è completato
Passaggio 7: - Crea una nuova cartella sul desktop in modo che i nostri file rimangano nella cartella altrimenti saranno sparsi su tutta la finestra del desktop. Assegna un nome alla cartella come desideri e ti suggerisco di utilizzare lo stesso nome per salvare i file di programma.
Avremo tre finestre di dialogo una dopo l'altra per salvare i file.
Fai lo stesso con altre due finestre di dialogo che appariranno dopo aver salvato la prima.
Ora, il tuo spazio di lavoro ha questo aspetto.
La maggior parte del nostro lavoro viene completato con l'aiuto del mago. Ora dobbiamo scrivere codice solo per GSM.
Codice e spiegazione
Tutti i file di intestazione vengono allegati automaticamente dopo la creazione del progetto, devi solo includere il file di intestazione delay.h e dichiarare tutte le variabili. Il codice completo viene fornito alla fine di questo tutorial.
#includere
Crea una funzione per ricevere dati dal registro UDR. Questa funzione restituirà i dati ricevuti.
char unsigned ricevuto_value (void) { while (! (UCSRA & (1 <
Vieni al ciclo while in cui creiamo due istruzioni if , una per l'invio del messaggio e l'altra per la ricezione. Il pulsante di invio è collegato con PIND6 di ATmega e il pulsante di ricezione del messaggio con PIND5.
Quando si preme prima PIND6 (pulsante di invio), l' istruzione if verrà eseguita e tutti i comandi per inviare il messaggio verranno eseguiti uno per uno.
while (1) { // lcd_clear (); lcd_putsf ("Invia-> bttn 1"); lcd_gotoxy (0,1); lcd_putsf ("Receive-> buttn 2"); if (PIND.6 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Invio messaggio…"); per (z = 0; cmd_1! = ''; z ++) { UDR = cmd_1; delay_ms (100); } UDR = ('\ r'); delay_ms (500); per (z = 0; cmd_2! = ''; z ++) { UDR = cmd_2; delay_ms (100); } …..
Se viene premuto il pulsante Ricevi messaggio, il ciclo while (b! = '+') Verificherà se il comando CMT è presente o meno. Se presente, il secondo ciclo while verrà eseguito e andrà alla seconda riga del comando e stamperà il messaggio sul display uno per uno.
while (PIND.5 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Ricezione Msg…"); b = valore_ricevuto (); while (b! = '+') { b = valore_ricevuto (); } b = valore_ricevuto (); se (b == 'C') { b = valore_ricevuto (); … ..
Questo ciclo porta il programma alla seconda riga di comando e memorizza il messaggio nell'array.
mentre (b! = 0x0a) { b = valore_ricevuto (); } per (b = 0; b <3; b ++) { c = valore_ricevuto (); msg = c; } .. ..
Questo per loop serve per visualizzare il messaggio sul display LCD.
for (z = 0; z <3; z ++) { a = msg; lcd_putchar (a); // PRINT IN lcd delay_ms (10); }
Di seguito viene fornito il codice completo con Demo Video, ora dobbiamo costruire il nostro progetto.
Costruisci il progetto
Fare clic su Crea l' icona del progetto come mostrato.
Dopo aver costruito il progetto, viene generato un file HEX nella cartella Debug-> Exe che si trova nella cartella che hai creato in precedenza per salvare il tuo progetto. Useremo questo file HEX per caricare in Atmega16 utilizzando il software Sinaprog.
Carica il codice su Atmega16
Collega i tuoi circuiti secondo lo schema dato per programmare Atmega16. Collega un lato del cavo FRC al programmatore USBASP e l'altro lato si connetterà ai pin SPI del microcontrollore come descritto di seguito:
- Pin1 del connettore femmina FRC -> Pin 6, MOSI di Atmega16
- Pin 2 collegato a Vcc di atmega16 ovvero Pin 10
- Pin 5 collegato a Reset di atmega16, ovvero Pin 9
- Pin 7 collegato a SCK di atmega16, ovvero Pin 8
- Pin 9 collegato a MISO di atmega16 ovvero Pin 7
- Pin 8 collegato a GND di atmega16, ovvero Pin 11
Caricheremo il file Hex generato sopra utilizzando Sinaprog, quindi aprilo e scegli Atmega16 dal menu a discesa Dispositivo. Seleziona il file HEX dalla cartella Debug-> Exe come mostrato.
Ora, fai clic su Programma e il tuo codice verrà masterizzato nel microcontrollore ATmega16.
Hai finito e il tuo microcontrollore è programmato. Basta premere i pulsanti per inviare e ricevere i messaggi dal microcontrollore GSM e ATmega16.
Di seguito sono riportati il codice completo e il video dimostrativo.