- Materials necessaris
- Programari utilitzat
- Mòdul GSM
- Comunicació amb mòdul GSM mitjançant comandes AT
- Diagrama de circuits d’interfície del mòdul GSM ATMega16
- Creació del projecte per a ATmega16 mitjançant CodeVision
- Codi i explicació
- Construeix el projecte
- Pengeu el codi a Atmega16
Els mòduls GSM són interessants d’utilitzar sobretot quan el nostre projecte requereix accés remot. Aquests mòduls poden fer totes les accions que el nostre telèfon mòbil normal podria fer, com fer / rebre una trucada, enviar / rebre un SMS, connectar-se a Internet mitjançant GPRS, etc. També podeu connectar un micròfon i un altaveu normals a aquest mòdul i conversar al vostre telèfon. trucades mòbils. Això obrirà les portes a molts projectes creatius si es pogués connectar amb un microcontrolador. Per tant, en aquest tutorial aprendrem com podem fer la interfície del mòdul GSM (SIM900A) amb el microcontrolador AVR ATmega16 i ho demostrarem enviant i rebent missatges mitjançant el mòdul GSM.
Materials necessaris
- Atmega16
- Mòdul GSM (SIM900 o qualsevol altre)
- Pantalla LCD
- Polsadors
- Resistències de 10 k, potenciòmetre
- Connexió de cables
- Adaptador de 12V
- Programador USBasp
- Cable FRC de 10 pins
Programari utilitzat
Utilitzarem el programari CodeVisionAVR per escriure el nostre codi i el programari SinaProg per penjar el nostre codi a Atmega16 mitjançant el programador USBASP.
Podeu descarregar aquests programes des dels enllaços indicats:
CodeVisionAVR:
SinaProg:
Abans d’entrar en els esquemes i codis, coneixem el mòdul GSM i el seu funcionament.
Mòdul GSM
![]()
El mòdul GSM es pot utilitzar fins i tot sense cap microcontrolador mitjançant el mode d’ordres AT. Com es mostra més amunt, el mòdul GSM inclou un adaptador USART que es pot connectar directament a l'ordinador mitjançant un mòdul MAX232 o es poden utilitzar els pins Tx i Rx per connectar-lo a un microcontrolador. També podeu notar els altres pins com MIC +, MIC-, SP +, SP-, etc., on es pot connectar un micròfon o un altaveu. El mòdul es pot alimentar mitjançant un adaptador de 12V mitjançant una presa normal de barril de CC.
Introduïu la targeta SIM a la ranura del mòdul i engegueu-la, ja que notareu que s’encén un LED d’alimentació. Ara espereu un minut més o menys i hauríeu de veure un LED vermell (o qualsevol altre color) que parpellegi una vegada cada 3 segons. Això significa que el vostre mòdul va poder establir connexió amb la vostra targeta SIM. Ara podeu continuar connectant el mòdul amb el telèfon o qualsevol microcontrolador.
Podeu construir molts projectes interessants mitjançant el mòdul GSM com:
- Tauler d’anuncis sense fils mitjançant GSM i Arduino
- Contestador automàtic de trucades que utilitza el mòdul Arduino i GSM
- Domòtica basada en GSM mitjançant Arduino
- Sensor PIR i sistema de seguretat basat en GSM
Consulteu també tots els projectes relacionats amb GSM aquí.
Comunicació amb mòdul GSM mitjançant comandes AT
Com ho hauríeu imaginat, el mòdul GSM pot comunicar-se mitjançant la comunicació en sèrie i només pot entendre un idioma, és a dir, “ ordres AT ”. Qualsevol cosa que vulgueu dir-li o demanar-li al mòdul GSM només hauria de ser mitjançant ordres AT. Per exemple, si voleu saber si el vostre mòdul està actiu. Haureu de demanar (enviar) una ordre com "AT" i el vostre mòdul respondrà "D'acord".
Aquestes ordres AT estan ben explicades al seu full de dades i es poden trobar aquí al seu full de dades oficial. Bé! Bé! És un full de dades de 271 pàgines i és possible que trigueu dies a llegir-les. Per tant, he donat algunes de les ordres AT més importants a continuació perquè pugueu posar-ho en funcionament aviat.
|
AT |
Respon amb OK per Acceptació |
|
AT + CPIN? |
Comproveu la qualitat del senyal |
|
AT + COPS? |
Cerqueu el nom del proveïdor de serveis |
|
ATD96XXXXXXXX; |
La trucada al número específic acaba amb punt i coma |
|
AT + CNUM |
Cerqueu el número de targeta SIM (és possible que no funcioni en algunes SIM) |
|
ATA |
Respon a la trucada entrant |
|
ATH |
Pengeu la trucada entrant actual |
|
AT + COLP |
Mostra el número de trucada entrant |
|
AT + VTS = (nombre) |
Envia el número DTMF. Podeu utilitzar qualsevol número del teclat del mòbil per a (número) |
|
AT + CMGR |
AT + CMGR = 1 llegeix el missatge a la primera posició |
|
AT + CMGD = 1 |
Esborra el missatge a la primera posició |
|
AT + CMGDA = "DEL ALL" |
Suprimeix tots els missatges de la SIM |
|
AT + CMGL = "TOTS" |
Llegiu tots els missatges des de la SIM |
|
AT + CMGF = 1 |
Estableix la configuració de SMS. "1" és per al mode només de text |
|
AT + CMGS = "+91 968837XXXX" > CircuitDigest Text
|
Envia SMS a un número concret aquí 968837XXXX. Quan vegeu ">" comenceu a introduir el text. Premeu Ctrl + Z per enviar el text. |
|
AT + CGATT? |
Per comprovar si hi ha connexió a Internet a la targeta SIM |
|
AT + CIPSHUT |
Per tancar la connexió TCP, és a dir, desconnectar d'Internet |
|
AT + CSTT = "APN", "nom d'usuari", "Pass" |
Connecteu-vos a GPRS amb la vostra clau APN i Pass. Es pot obtenir al proveïdor de xarxa. |
|
AT + CIICR |
Comproveu si la targeta SIM té paquet de dades |
|
AT + CIFSR |
Obteniu l'adreça IP de la xarxa SIM |
|
AT + CIPSTART = "TCP", "SERVER IP", "PORT" |
S'utilitza per establir una connexió IP TCP |
|
AT + CIPSEND |
Aquesta ordre s'utilitza per enviar dades al servidor |
Aquí utilitzarem les ordres AT + CMGF i AT + CMGS per enviar missatges.
Si heu utilitzat el mòdul GSM amb Arduino, mentre rebeu missatges, podeu utilitzar l' ordre + CMT: per veure el número de mòbil i el missatge de text al monitor sèrie. El missatge de text apareix a la segona línia tal com es mostra a la imatge.

Escanejarem aquesta ordre + CMT: per comprovar si el missatge està disponible o no.
Diagrama de circuits d’interfície del mòdul GSM ATMega16

Les connexions seran les següents
- Tx i Rx del mòdul GSM a Rx (Pin14) i Tx (Pin15) d'Atmega16 respectivament.
- Premeu els botons a PD5 (Pin19) i PD6 (Pin20).
- Connexions LCD:
- RS - PA 0
- R / W - PA1
- EN - PA2
- D4 - PA4
- D5 - PA5
- D6 - PA6
- D7 - PA7

Creació del projecte per a ATmega16 mitjançant CodeVision
Després d'instal·lar els programes CodeVisionAVR i SinaProg , seguiu els passos següents per crear el codi i escriure el projecte:
Ja penjat
Pas 1. Obriu CodeVision Feu clic a Fitxer -> Nou -> Projecte . Apareixerà el quadre de diàleg de confirmació. Feu clic a Sí

Pas 2. S'obrirà CodeWizard. Feu clic a la primera opció, és a dir, AT90 , i feu clic a D'acord.

Pas 3: - Trieu el vostre xip de microcontrolador, aquí agafarem Atmega16L com es mostra.

Pas 4: - Feu clic a USART . Seleccioneu Receptor i transmissor fent-hi clic. Com es mostra a continuació:

Pas 5: - Feu clic a LCD alfanumèric i seleccioneu Activa el suport de LCD alfanumèric .

Pas 6: - Feu clic a Programa -> Generar, desar i sortir . Ara, més de la meitat del nostre treball ha finalitzat

Pas 7: - Feu una carpeta nova a l'escriptori de manera que els nostres fitxers quedin a la carpeta, en cas contrari, estarem dispersos en tota la finestra de l'escriptori. Anomeneu la vostra carpeta com vulgueu i us suggereixo que feu servir el mateix nom per desar els fitxers del programa.
Tindrem tres quadres de diàleg un darrere l’altre per desar fitxers.

Feu el mateix amb altres dos quadres de diàleg que apareixeran després de desar el primer.
Ara, el vostre espai de treball té aquest aspecte.

La major part del treball es completa amb l'ajut de l'assistent. Ara hem d’escriure codi només per a GSM.
Codi i explicació
Tots els fitxers de capçalera s'adjunten automàticament després de crear el projecte, només heu d'incloure el fitxer de capçalera delay.h i declarar totes les variables. Es dóna un codi complet al final d’aquest tutorial.
#incloure
Feu una funció per rebre dades del registre UDR. Aquesta funció retornarà les dades rebudes.
no signat caràcter rebut_valor (buit) { while (! (UCSRA & (1 <
Vine a l' mateix temps bucle en el qual vam crear 2 si les declaracions, un per enviar el missatge i una altra per rebre. El botó Enviar està connectat amb PIND6 de ATmega i el botó de missatge de recepció amb PIND5.
Quan es prem PIND6 (botó d'enviament) primer si s'executarà la sentència i totes les ordres per enviar el missatge s'executaran una per una.
while (1) { // lcd_clear (); lcd_putsf ("Envia-> bttn 1"); lcd_gotoxy (0,1); lcd_putsf ("Rebre-> buttn 2"); if (PIND.6 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("S'està enviant un missatge…"); per a (z = 0; cmd_1! = "; z ++) { UDR = cmd_1; delay_ms (100); } UDR = ('\ r'); delay_ms (500); per a (z = 0; cmd_2! = ""; z ++) { UDR = cmd_2; delay_ms (100); }…..
Si es prem el botó Rebre missatge, mentre el bucle (b! = '+') Comprovarà si l'ordre CMT és present o no. Si està present, en segon lloc , mentre que bucle s'executarà i anar a la segona línia de l'ordre i imprimir el missatge en una pantalla LCD a un.
while (PIND.5 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Recepció de missatges…"); b = valor_ rebut (); while (b! = '+') { b = valor_recepte (); } b = valor_ rebut (); if (b == 'C') { b = valor_recepte (); ... ..
Aquest bucle porta el programa a la segona línia d'ordres i emmagatzema el missatge a la matriu.
mentre que (b! = 0x0a) { b = valor_ rebut (); } per a (b = 0; b <3; b ++) { c = valor_recepte (); msg = c; } .. ..
Això per al bucle és mostrar el missatge a la pantalla LCD.
for (z = 0; z <3; z ++) { a = msg; lcd_putchar (a); // PRINT IN lcd delay_ms (10); }
A continuació es mostra el codi complet amb Demo Video, ara hem de construir el nostre projecte.
Construeix el projecte
Feu clic a Crea la icona del projecte com es mostra.

Després de construir el projecte, es genera un fitxer HEX a la carpeta Debug-> Exe que es pot trobar a la carpeta que heu creat anteriorment per desar el projecte. Utilitzarem aquest fitxer HEX per carregar-lo a Atmega16 mitjançant el programari Sinaprog.
Pengeu el codi a Atmega16
Connecteu els vostres circuits segons el diagrama donat al programa Atmega16. Connecteu un costat del cable FRC al programador USBASP i l'altre costat es connectarà als pins SPI del microcontrolador tal com es descriu a continuació:

- Pin1 del connector femella FRC -> Pin 6, MOSI d'Atmega16
- Pin 2 connectat a Vcc de atmega16, és a dir, Pin 10
- Pin 5 connectat a Restabliment de atmega16, és a dir, Pin 9
- Pin 7 connectat a SCK de atmega16, és a dir, Pin 8
- Pin 9 connectat a MISO de atmega16, és a dir, Pin 7
- Pin 8 connectat a GND de atmega16, és a dir, Pin 11
Carregarem el fitxer Hex generat anteriorment amb Sinaprog, així que obriu-lo i trieu Atmega16 al menú desplegable Dispositiu. Seleccioneu el fitxer HEX a la carpeta Depuració> Exe com es mostra.

Ara feu clic a Programa i el vostre codi es gravarà al microcontrolador ATmega16.
Ja heu acabat i el microcontrolador està programat. Simplement premeu els botons per enviar i rebre els missatges del microcontrolador GSM i ATmega16.
A continuació es mostra el codi complet i el vídeo de demostració.
