El módulo GSM se utiliza en muchos dispositivos de comunicación que se basan en la tecnología GSM (Sistema global para comunicaciones móviles). Se utiliza para interactuar con la red GSM utilizando una computadora. El módulo GSM solo comprende los comandos AT y puede responder en consecuencia. El comando más básico es "AT", si GSM responde bien, entonces está funcionando bien, de lo contrario responde con "ERROR". Hay varios comandos AT como ATA para responder una llamada, ATD para marcar una llamada, AT + CMGR para leer el mensaje, AT + CMGS para enviar el sms, etc. Los comandos AT deben ir seguidos de retorno de carro, es decir, \ r (0D en hexadecimal), como "AT + CMGS \ r". Podemos usar el módulo GSM usando estos comandos.
Interfaz GSM con 8051
En lugar de usar una PC, podemos usar microcontroladores para interactuar con el módulo GSM y la pantalla LCD para obtener la respuesta del módulo GSM. Así que vamos a conectar GSM con un microcontrolador 8051 (AT89S52). Es muy fácil conectar GSM con 8051, solo necesitamos enviar comandos AT desde el microcontrolador y recibir respuesta de GSM y mostrarla en la pantalla LCD. Podemos usar el puerto serie del microcontrolador para comunicarnos con GSM, significa usar PIN 10 (RXD) y 11 (TXD).
Primero necesitamos conectar LCD a 8051, puede aprender esto desde aquí: Interfaz de LCD con microcontrolador 8051. Entonces necesitamos conectar el módulo GSM al 8051, ahora aquí debemos prestar algo de atención. Primero debe verificar si su módulo GSM es capaz de funcionar con lógica TTL o solo puede funcionar con RS232. Básicamente, si su módulo tiene pines RX y TX (con GND) a bordo, entonces puede funcionar en lógica TTL. Y si no tiene pines RX, TX y solo tiene un puerto RS232 (puerto serie con 9), entonces necesita usar MAX232 IC para conectar el puerto serie al microcontrolador. Básicamente MAX232Se utiliza para convertir datos en serie en lógica TTL porque el microcontrolador solo puede funcionar en lógica TTL. Pero si el módulo GSM tiene pines RX, TX, entonces no necesita usar MAX232 o cualquier convertidor serial, puede conectar directamente RX de GSM a TX (PIN 11) de 8051 y TX de GSM a RX (PIN 10) de 8051 En nuestro caso he usado el módulo SIM900A y tiene pines RX, TX por lo que no he usado MAX232.
El diagrama de circuito para la interfaz GSM con el microcontrolador AT89S52 se muestra en la figura anterior. Ahora, después de la conexión, solo necesitamos escribir un programa para enviar comandos AT a GSM y recibir su respuesta en la pantalla LCD. Hay muchos comandos AT como se describió anteriormente, pero nuestro alcance de este artículo es simplemente conectar GSM con 8051, por lo que solo enviaremos el comando "AT" seguido de "\ r" (0D en hexadecimal). Esto nos dará una respuesta "OK". Pero puede ampliar este programa para utilizar todas las facilidades de GSM.
Explicación del código
Además de todas las funciones relacionadas con la pantalla LCD, aquí hemos utilizado el puerto serie y el registro de modo de temporizador (TMOD). Puede obtener información sobre las funciones de LCD y otros códigos en nuestra sección de proyectos 8051, aquí estoy explicando las funciones de código relacionadas con la comunicación en serie:
Función GSM_init ():
Esta función se utiliza para configurar la velocidad en baudios del microcontrolador. La velocidad en baudios no es más que los Bits / segundo transmitidos o recibidos. Y necesitamos hacer coincidir la velocidad en baudios de 8051 con la velocidad en baudios del módulo GSM, es decir, 9600. Hemos utilizado el temporizador 1 en el modo 2 (modo de recarga automática de 8 bits) configurando el registro TMOD en 0X20 y un byte superior del temporizador 1 (TH1) a 0XFD para obtener la velocidad en baudios de 9600. Además, el registro SCON se usa para establecer el modo de comunicación en serie, hemos usado Mode1 (UART de 8 bits) con la recepción habilitada.
Función GSM_write:
SBUF (registro de función especial de búfer en serie) se usa para la comunicación en serie, siempre que queremos enviar cualquier byte al dispositivo en serie, colocamos ese byte en el registro SBUF, cuando se ha enviado el byte completo, el hardware establece el bit TI. Necesitamos restablecerlo para enviar el siguiente byte. Es una bandera que indica que el byte se envió correctamente. TI es el segundo bit del registro SCON. Hemos enviado “AT” usando esta función.
Función GSM_read:
Al igual que enviar, cada vez que recibimos cualquier byte de un dispositivo externo, ese byte se coloca en el registro SBUF, solo necesitamos leerlo. Y siempre que se ha recibido el byte completo, el hardware establece el bit RI. Necesitamos restablecerlo para recibir el siguiente byte. RI es el primer bit del registro SCON. Hemos leído la respuesta "OK" usando esta función.