- Materiales necesarios
- Software utilizado
- Módulo GSM
- Comunicarse con el módulo GSM mediante comandos AT
- Diagrama de circuito de interfaz del módulo GSM ATMega16
- Creando el proyecto para ATmega16 usando CodeVision
- Código y explicación
- Construye el Proyecto
- Sube el código a Atmega16
Los módulos GSM son interesantes de usar especialmente cuando nuestro proyecto requiere acceso remoto. Estos módulos podrían realizar todas las acciones que podría realizar nuestro teléfono móvil normal, como hacer / recibir una llamada, enviar / recibir un SMS, conectarse a Internet mediante GPRS, etc. También puede conectar un micrófono y un altavoz normales a este módulo y conversar en su llamadas móviles. Esto abrirá las puertas a muchos proyectos creativos si se pudiera conectar con un microcontrolador. Por lo tanto, en este tutorial aprenderemos cómo podemos conectar el módulo GSM (SIM900A) con el microcontrolador AVR ATmega16 y lo demostraremos enviando y recibiendo mensajes usando el módulo GSM.
Materiales necesarios
- Atmega16
- Módulo GSM (SIM900 o cualquier otro)
- pantalla LCD
- Apretar botones
- Resistencias de 10k, potenciómetro
- Cables de conexión
- Adaptador 12V
- Programador USBasp
- Cable FRC de 10 pines
Software utilizado
Vamos a utilizar CodeVisionAVR software para escribir nuestro código y SinaProg software para subir a nuestro código ATmega16 utilizando programador USBASP.
Puede descargar estos softwares desde los enlaces dados:
CodeVisionAVR:
SinaProg:
Antes de entrar en los esquemas y códigos, aprendemos sobre el módulo GSM y su funcionamiento.
Módulo GSM
El módulo GSM se puede utilizar incluso sin ningún microcontrolador utilizando el modo de comando AT. Como se muestra arriba, el módulo GSM viene con un adaptador USART que se puede conectar directamente a la computadora usando un módulo MAX232 o los pines Tx y Rx se pueden usar para conectarlo a un microcontrolador. También puede notar los otros pines como MIC +, MIC-, SP +, SP- etc.donde se puede conectar un micrófono o un altavoz. El módulo puede ser alimentado por un adaptador de 12V a través de un conector de barril de CC normal.
Inserte su tarjeta SIM en la ranura del módulo y enciéndalo, debería notar que un LED de encendido se enciende. Ahora espere un minuto más o menos, y debería ver un LED rojo (o de cualquier otro color) parpadeando una vez cada 3 segundos. Esto significa que su Módulo pudo establecer conexión con su tarjeta SIM. Ahora puede proceder a conectar su módulo con el teléfono o cualquier microcontrolador.
Puede crear muchos proyectos interesantes utilizando un módulo GSM como:
- Tablón de anuncios inalámbrico usando GSM y Arduino
- Contestador automático de llamadas usando Arduino y módulo GSM
- Automatización del hogar basada en GSM usando Arduino
- Sensor PIR y sistema de seguridad basado en GSM
Consulte también todos los proyectos relacionados con GSM aquí.
Comunicarse con el módulo GSM mediante comandos AT
Como habrás adivinado, el módulo GSM puede comunicarse a través de la comunicación en serie y puede entender solo un idioma y son los " comandos AT ". Sea lo que sea lo que quiera decirle o preguntarle al módulo GSM, solo debe ser a través de comandos AT. Por ejemplo, si desea saber si su módulo está activo. Debe pedir (enviar) un comando como "AT" y su módulo responderá "OK".
Estos comandos AT están bien explicados en su hoja de datos y se pueden encontrar aquí en su hoja de datos oficial. ¡Bueno! ¡Bueno! Es una hoja de datos de 271 páginas y es posible que tarde días en leerla. Así que le he dado algunos de los comandos AT más importantes a continuación para que pueda ponerlo en funcionamiento pronto.
A |
Responde con OK para reconocimiento |
AT + CPIN? |
Verificar la calidad de la señal |
AT + COPS? |
Buscar el nombre del proveedor de servicios |
ATD96XXXXXXXX; |
Llamar al número específico, termina con punto y coma |
AT + CNUM |
Encuentra el número de tarjeta SIM (puede que no funcione para algunas SIM) |
ATA |
Responder la llamada entrante |
ATH |
Cuelgue la llamada entrante actual |
EN + COLP |
Mostrar número de llamada entrante |
AT + VTS = (número) |
Envíe el número DTMF. Puede utilizar cualquier número en el teclado de su móvil para (número) |
AT + CMGR |
AT + CMGR = 1 lee el mensaje en la primera posición |
AT + CMGD = 1 |
Eliminar mensaje en la primera posición |
AT + CMGDA = "BORRAR TODO" |
Eliminar todos los mensajes de la SIM |
AT + CMGL = "TODOS" |
Leer todos los mensajes de SIM |
AT + CMGF = 1 |
Establecer la configuración de SMS. "1" es para el modo de solo texto |
AT + CMGS = "+91 968837XXXX" > Texto de resumen de circuito
|
Envía SMS a un número particular aquí 968837XXXX. Cuando vea “>” comience a ingresar el texto. Presione Ctrl + Z para enviar el texto. |
AT + CGATT? |
Para comprobar la conexión a Internet en la tarjeta SIM |
AT + CIPSHUT |
Para cerrar la conexión TCP, es decir, desconectarse de Internet |
AT + CSTT = "APN", "nombre de usuario", "Pass" |
Conéctese a GPRS con su APN y contraseña. Puede obtenerse del proveedor de la red. |
AT + CIICR |
Verifique si la tarjeta SIM tiene paquete de datos |
AT + CIFSR |
Obtener IP de la red SIM |
AT + CIPSTART = "TCP", "IP DEL SERVIDOR", "PUERTO" |
Se usa para establecer una conexión TCP IP |
EN + CIPSEND |
Este comando se usa para enviar datos al servidor |
Aquí usaremos el comando AT + CMGF y AT + CMGS para enviar mensajes.
Si ha utilizado el módulo GSM con Arduino, mientras recibe mensajes puede utilizar + CMT: comando para ver el número de móvil y el mensaje de texto en el monitor de serie. El mensaje de texto viene en la segunda línea como se muestra en la imagen.
Escanearemos este comando + CMT: para comprobar si el mensaje está disponible o no.
Diagrama de circuito de interfaz del módulo GSM ATMega16
Las conexiones serán las siguientes
- Tx y Rx del módulo GSM a Rx (Pin14) y Tx (Pin15) de Atmega16 respectivamente.
- Presione los botones para PD5 (Pin19) y PD6 (Pin20).
- Conexiones de LCD:
- RS - PA 0
- R / W - PA1
- ES - PA2
- D4 - PA4
- D5 - PA5
- D6 - PA6
- D7 - PA7
Creando el proyecto para ATmega16 usando CodeVision
Después de instalar los softwares CodeVisionAVR y SinaProg , siga los pasos a continuación para crear un proyecto y escribir código:
Ya subido
Paso 1. Abra CodeVision Haga clic en Archivo -> Nuevo -> Proyecto . Aparecerá el cuadro de diálogo de confirmación. Haga clic en Sí
Paso 2. Se abrirá CodeWizard. Haga clic en la primera opción, es decir, AT90 , y haga clic en Aceptar.
Paso 3: - Elija su chip de microcontrolador, aquí tomaremos Atmega16L como se muestra.
Paso 4: - Haga clic en USART . Seleccione Receptor y transmisor haciendo clic en él. Como se muestra abajo:
Paso 5: - Haga clic en LCD alfanumérico y seleccione Habilitar compatibilidad con LCD alfanumérico .
Paso 6: - Haga clic en Programa -> Generar, guardar y salir . Ahora, más de la mitad de nuestro trabajo está terminado
Paso 7: - Cree una nueva carpeta en el escritorio para que nuestros archivos permanezcan en la carpeta, de lo contrario, estaremos dispersos en toda la ventana del escritorio. Nombra tu carpeta como quieras y sugiero usar el mismo nombre para guardar archivos de programa.
Tendremos tres cuadros de diálogo uno tras otro para guardar archivos.
Haga lo mismo con los otros dos cuadros de diálogo que aparecerán después de guardar el primero.
Ahora, su espacio de trabajo se ve así.
La mayor parte del trabajo se completa con la ayuda del Asistente. Ahora, tenemos que escribir código solo para GSM.
Código y explicación
Todos los archivos de encabezado se adjuntan automáticamente después de crear el proyecto, solo tiene que incluir el archivo de encabezado delay.h y declarar todas las variables. El código completo se proporciona al final de este tutorial.
#incluir
Realice una función para recibir datos del registro UDR. Esta función devolverá los datos recibidos.
unsigned char valor_recibido (void) { while (! (UCSRA & (1 <
Ven al mismo tiempo bucle en el que creamos dos si las declaraciones, uno para enviar el mensaje y otra para recibir. El botón Enviar está conectado con el PIND6 de ATmega y el botón Recibir mensaje con el PIND5.
Cuando se presiona PIND6 (botón Enviar) primero, la instrucción if se ejecutará y todos los comandos para enviar mensajes se ejecutarán uno por uno.
while (1) { // lcd_clear (); lcd_putsf ("Enviar-> bttn 1"); lcd_gotoxy (0,1); lcd_putsf ("Recibir-> buttn 2"); si (PIND.6 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Enviando mensaje…"); para (z = 0; cmd_1! = ''; z ++) { UDR = cmd_1; delay_ms (100); } UDR = ('\ r'); delay_ms (500); para (z = 0; cmd_2! = ''; z ++) { UDR = cmd_2; delay_ms (100); } …..
Si se presiona el botón Recibir mensaje, el ciclo while (b! = '+') Verificará si el comando CMT está presente o no. Si está presente, en segundo lugar , mientras que bucle se ejecutará e ir a la segunda línea de la orden e imprimir el mensaje en una pantalla LCD a uno.
while (PIND.5 == 1) { lcd_clear (); lcd_gotoxy (0,0); lcd_putsf ("Recibiendo Msj…"); b = valor_recibido (); while (b! = '+') { b = valor_recibido (); } b = valor_recibido (); if (b == 'C') { b = valor_recibido (); … ..
Este ciclo lleva el programa a la segunda línea de comando y almacena el mensaje en la matriz.
while (b! = 0x0a) { b = valor_recibido (); } para (b = 0; b <3; b ++) { c = valor_recibido (); msg = c; } .. ..
Este bucle for es mostrar el mensaje en la pantalla LCD.
para (z = 0; z <3; z ++) { a = mensaje; lcd_putchar (a); // IMPRIMIR EN lcd delay_ms (10); }
El código completo con el video de demostración se proporciona a continuación, ahora tenemos que construir nuestro proyecto.
Construye el Proyecto
Haga clic en Crear el icono del proyecto como se muestra.
Después de construir el proyecto, se genera un archivo HEX en la carpeta Debug-> Exe que se puede encontrar en la carpeta que ha creado previamente para guardar su proyecto. Usaremos este archivo HEX para cargar en Atmega16 usando el software Sinaprog.
Sube el código a Atmega16
Conecte sus circuitos de acuerdo con el diagrama dado para programar Atmega16. Conecte un lado del cable FRC al programador USBASP y el otro lado se conectará a los pines SPI del microcontrolador como se describe a continuación:
- Pin1 del conector hembra FRC -> Pin 6, MOSI de Atmega16
- Pin 2 conectado a Vcc de atmega16 es decir Pin 10
- Pin 5 conectado al Reset de atmega16, es decir, Pin 9
- Pin 7 conectado a SCK de atmega16, es decir, Pin 8
- Pin 9 conectado a MISO de atmega16 ie Pin 7
- Pin 8 conectado a GND de atmega16, es decir, Pin 11
Cargaremos el archivo hexadecimal generado anteriormente usando Sinaprog, así que ábralo y elija Atmega16 en el menú desplegable Dispositivo. Seleccione el archivo HEX de la carpeta Debug-> Exe como se muestra.
Ahora, haga clic en Programa y su código se grabará en el microcontrolador ATmega16.
Ha terminado y su microcontrolador está programado. Simplemente presione los botones para enviar y recibir los mensajes del microcontrolador GSM y ATmega16.
El código completo y el video de demostración se proporcionan a continuación.