Circuits4you.com

Los teléfonos módem GSM proporcionan un canal de comunicación inalámbrico de bajo costo y largo alcance para aplicaciones integradas basadas en microcontroladores que necesitan conectividad en lugar de altas velocidades de datos. Maquinaria como refrigeradores industriales, congeladores, HVAC, máquinas expendedoras y de monitoreo, servicio de vehículos, sistema de advertencia, sistema de seguridad, control remoto, etc. podría beneficiarse de estar conectado a un módem GSM.

Este tutorial describe cómo usar un AVR para controlar un módem GSM utilizando comandos AT. La interfaz entre el módem y el host es un protocolo de texto llamado AT-Commands. Estos comandos permiten configurar el módem GSM, marcar, enviar mensajes de texto, etc. Esta aplicación en particular conecta un módulo AVR ATmega8 y SIM300, SIM900 mediante una conexión RS232. La mayoría de los módems GSM tienen los mismos comandos AT.

Contenido

* Puntos a tener en cuenta al elegir módem GSM
• Interfaz con módems GSM.
* Implementación del conjunto AT-Command.
* Compresión y descompresión de cadenas de PDU.
* Transmisión de SMS, cómo enviar y recibir.

Tipos de módems GSM

Hay muchos módems GSM disponibles en el mercado Simcom SIM300, SIM900 y Quectel M10. revisemos sus características

Puntos a considerar al elegir el módem GSM

Hay módems GSM disponibles en el mercado, estos son SIM300, SIM900 y SIM900A, Quectel M10 es mucho más confiable y un poco costoso. SIM300 es un módem más antiguo que ahora se está convirtiendo en absoluto.

  1. Requisito de fuente de alimentación
  2. Interfaz disponible UART (TTL) o RS232
  3. Tamaño
  4. Precio
  5. Interfaz de audio (MIC / SPK)

Requisito de fuente de alimentación

La mayoría de los módems GSM requieren 4.2 V para funcionar y son compatibles con 5V y 3.3 V algunos módems también están disponibles en 3.3 V. dependiendo de los requisitos de su microcontrolador, elija el módem correcto. El módem GSM requiere más corriente al enviar SMS, hacer llamadas y durante el registro en la red. Recuerde usar siempre una fuente de alimentación de 2 amperios. La mayoría de las personas nuevas cometen errores al seleccionar la fuente de alimentación correcta, esto causará problemas o restablecimiento del módem al enviar SMS.

Interfaz disponible UART (TTL) o RS232

Como estamos utilizando AVR ATmega8, preferimos la interfaz UART TTL. La mayoría de los módems GSM tienen interfaz RS232 y UART (TTL).

Pocos módems GSM vienen con interfaz USB también, cuando está interconectando el módem GSM con la interfaz USB de uso de PC. Elimina la necesidad de convertidor USB a serie y pocos módems son alimentados por USB, por lo que no es necesario una fuente de alimentación externa.

Tamaño, Precio

El tamaño y el precio de cada módem varían según el uso de componentes externos por parte del fabricante.

Interfaz de audio (MIC/SPK)

Se requiere una interfaz de audio si está utilizando un módem GSM para realizar llamadas o para interactuar con el decodificador DTMF para hacer un sistema IVRS.

Interfaz de módem GSM

Antes de conectar ATmega8 con módem GSM, echemos un vistazo a varios módems GSM. Todos estos módem GSM tienen capacidad GPRS no hay necesidad de módem GPRS separado.

Como puede ver en este módem Quectel M10 GSM, no tenemos acceso a la conexión TTL (Rx, Tx), necesitamos un convertidor de nivel RS232 construido con MAX232.

Quectel M10
Quectel M10

SIM300 es absoluta, no podemos obtener en este mercado. Utiliza un regulador lineal LM317 para hacer su fuente de alimentación, es mejor tener un convertidor CC-CC o un regulador de conmutación para obtener mejores resultados.

 Módem SIM300
Módem SIM300

Vamos a utilizar este módem GSM. Tiene salida TTL Rx, Tx . La interfaz de módem GSM con microcontrolador es simplemente conectar estas líneas Rx, Tx con microcontroladores UART.

Módem SIM900A GSM
Módem SIM900A GSM

Conexiones de módem GSM con ATmega8

Interfaz de módem GSM
Interfaz de módem GSM

Comandos AT

El protocolo utilizado por los módems GSM para la configuración y el control se basa en el conjunto de comandos AT. Los comandos específicos del módem GSM se adaptan a los servicios ofrecidos por un módem GSM, como: mensajes de texto, llamadas a un número de teléfono determinado, eliminación de ubicaciones de memoria, etc. Dado que el objetivo principal de este tutorial es mostrar cómo enviar y recibir mensajes de texto, solo se debe implementar un subconjunto del conjunto AT-Command. El GSM 07.05 del Instituto Europeo de Normas de Telecomunicaciones (ETSI) define la interfaz AT-Command para módems compatibles con GSM. En este tutorial se eligen algunos comandos seleccionados, que se presentan brevemente en esta sección. Este subconjunto de comandos permitirá al módem enviar y recibir mensajes SMS.

Los comandos se pueden probar conectando un módem GSM a uno de los puertos COM del PC. Utilice hyper terminal o cualquier software de Terminal Serie para dar comandos AT al módem GSM.

Comando Descripción
EN Comprobar si la interfaz serial y módem GSM está trabajando.
ATE0 Desactive echo, menos tráfico en la línea serie.
AT + CMTI Visualización de nuevos SMS entrantes.
AT + CPMS Selección de memoria SMS.
AT + CMGF Formato de cadena SMS, cómo se comprimen.
AT + CMGR Leer un mensaje nuevo desde una ubicación de memoria determinada.
AT+CMGS Enviar mensaje a un destinatario determinado.
AT+CMGD Eliminar mensaje.

Status (AT)

El comando «AT» es una solicitud de estado que se utiliza para comprobar si un módem compatible está conectado y si la interfaz serie funciona correctamente.

Comando: «AT»
Respuesta: «OK»
Conectado y funcionando
Respuesta: «ERROR»
Error de módem aceptar línea serie

Echo off (ATE0)

El comando «ATE0» se utiliza para configurar la comunicación. De forma predeterminada, los módems GSM se configuran para hacer eco de cualquier comando recibido con un acuse de recibo.

Con echo apagado, «ATE0″, el módem habría respondido» OK «al ejecutar»AT». El comando echo off reducirá el tráfico en la línea serie. El comando» ATE1 » activará de nuevo echo.

ATE0

Mantenga siempre echo apagado «ATE0» para simplificar la comunicación en serie con el controlador.

AT+CMGF Seleccionar formato de mensaje SMS

El comando «AT+CMGF» se utiliza para establecer el formato de entrada y salida de los mensajes SMS. Hay dos modos disponibles:

* Modo PDU: la lectura y el envío de SMS se realizan en un formato codificado especial.

* Modo de texto: la lectura y el envío de SMS se realizan en texto plano.

Siempre Configúrelo en modo texto para simplificar

AT + CMGF=1

0 es modo PDU, 1 es modo texto.

Mensaje de lectura(AT+CMGR)

El comando «AT+CMGR» se utiliza para leer un mensaje desde una ubicación de memoria determinada. La ejecución de «AT + CMGR» devuelve un mensaje en de la memoria seleccionada .

Por ejemplo, leer desde la ubicación 1

AT+CMGR=1

Escribir mensaje en memoria(AT+CMGW)

Este comando permite al usuario enviar mensajes SMS.

AT + CMGW = 1 / / Escribe mensaje en la ubicación 1

Enviar mensaje SMS Desde el almacenamiento (AT+CMSS)

Envía sms almacenados.

AT+CMSS=1 //Envía SMS desde la ubicación 1

Envío de SMS usando Código de Microcontrolador AVR

en tu subrutina principal() inicializa serie y llama a SendSMS() para enviar SMS

void sendSMS(){ senddata("AT+CMGD=1"); USART_Transmit(13); USART_Transmit(10); delay_ms(1000); senddata("AT+CMGF=1"); USART_Transmit(13); USART_Transmit(10); delay_ms(1000); senddata("AT+CMGW="); USART_Transmit(34); senddata("+919812345678"); //Enter Your Mobile number USART_Transmit(34); USART_Transmit(13); USART_Transmit(10); delay_ms(1000); senddata("Alert: Fire Detected"); USART_Transmit(13); USART_Transmit(10); delay_ms(1000); USART_Transmit(26); //Cntrl+Z delay_ms(1000); delay_ms(1000); senddata("AT+CMSS=1"); USART_Transmit(13); USART_Transmit(10); delay_ms(1000);}void delay_ms(unsigned int de){unsigned int rr,rr1; for (rr=0;rr<de;rr++) { for(rr1=0;rr1<30;rr1++) //395 { asm("nop"); } }}void USART_Transmit(char data ){ UDR = data; /* Wait for empty transmit buffer */ while ( !( UCSRA & (1<<UDRE)) ) ; /* Put data into buffer, sends the data */}void senddata(char string){ int len,count; len = strlen(string); for (count=0;count<len;count++) { USART_Transmit(string); }}void USART_Init(){/* Set baud rate */ UBRRH = 0x00; //12, 9600 Baud At 1MHz UBRRL =12; //Set double speed enabled UCSRA |= (1<<U2X);/* Enable receiver and transmitter */ UCSRB = (1<<RXEN)|(1<<TXEN);/* Set frame format: 8data, 2stop bit */ UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);//Set interrupt on RX// UCSRB |= (1<<RXCIE);}

Envío de SMS usando Arduino

void setup() { Serial.begin(9600);}void loop() { sendSMS(); //Send SMS delay(5000); //Wait for few seconds}void sendSMS(){ Serial.println("AT+CMGD=1"); //Delete privious sent SMS delay(1000); Serial.println("AT+CMGF=1"); //Set SMS configuration delay(1000); Serial.print("AT+CMGW="); //Write New SMS Serial.write(34); //Double quotes ASCII Code Serial.print("+9198--------"); //Enter Your Mobile number Serial.write(34); Serial.println(); //Send Crrige return delay(1000); Serial.println("Your message here"); //SMS Message to be sent delay(1000); Serial.write(26); //Cntrl+Z character code delay(1000); delay(1000); Serial.println("AT+CMSS=1"); //Send SMS from memory location 1 delay(4000);}

Ahora está claro que ahora puede enviar SMS mediante microcontrolador Arduino y AVR con interfaz serie simple con módem GSM.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.