Como enviar mensaje con el módulo GSM A6
Materiales Utilizados:
- Modulo A6
- Tarjeta Arduino Mega 2560
- Sim card de Claro "para Colombia". Si esta en un país distinto, puedes probar con distintas sim card y ver con cual funciona bien.
- Tres resistencia de 220 ohmio.
- Tres led del color rojo, verde y azul.
- Adaptador de 5V 3A.
Circuito
El módulo A6 se alimenta con 5V, trae un circuito de regulación acompañado de un integrado de 5V.
Descripción del Código
En este video tutorial se aprenderá a utilizar cuales son los comandos AT para realizar la configuración referente al envió de mensaje de texto, realmente este proceso es similar a las configuraciones que se han realizado con el modulo sim800l y sim900, el comando AT es el mismo y su configuración es de la siguiente manera:
AT+CMGF=1, permite configurar la visualización de mensaje en formato texto.
AT+CMGF=0, permite configurar la visualización de mensaje en formato PDU.
Definir el móvil al cual se va enviar el mensaje
AT+CMGS=+57313XXXXXXX donde +57313XXXXXXX es el número al cual se va enviar el mensaje, se puede enviar utilizando el código del país, por ejemplo (+57) para Colombia, o solo basta con el número móvil 313XXXXXXX.
Para enviar el mensaje se debe escribir un "ctrl+z", que se puede realizar con cualquiera de los dos siguiente comandos:
0x1A, por ejemplo Serial.write(0x1A);
(char)26, por ejemplo Serial.write((char)26);
En esta práctica el envió de mensaje se realiza a un número móvil o a varios números, para el envió de mensaje a un solo número, se utiliza la función sendAMessage(), donde se defina el formato de envió del mensaje, el número de destino, el cuerpo del mensaje y finalmente se enviar el ctrl+z.
void sendAMessage(){
Serial.println("Enviando SMS...");
//Se establece el formato de SMS en ASCII
Serial.write("AT+CMGF=1\r\n");
delay(1000);
//Enviar comando para un nuevos SMS al numero establecido
Serial.write("AT+CMGS=\"+57313XXXXXXX\"\r\n");
delay(1000);
//Enviar contenido del SMS
Serial.write("Hola bienvenidos a su canal: Diseno Electronico A2P");
delay(1000);
//Enviar Ctrl+Z
Serial.write((char)26);
//Serial.write(0x1A);
delay(5000);
Serial.println("\nMensaje enviado!");
}
Para el envió de mensajes a varios números móviles con el A6, se tiene la función sendMultiplesMessage(), en esta función se tiene un ciclo for() que permite recorrer los distintos números que se tiene en el Array de String numMovil[], este ciclo va desde una posición inicial 0 hasta la cantidad de números que tiene el array, que se calcula así:
#define GetSize(numMovil) (sizeof(numMovil)/sizeof(*(numMovil)))
int canMovil=GetSize(numMovil);
Donde:
sizeof(numMovil): devuelve el número de bytes del arrays o matriz.
sizeof(numMovil)/sizeof(*(numMovil)): se obtiene la cantidad de elementos del arrays o matriz.
String numMovil[] = {"+57313XXXXXXX","+57313XXXXXXX","57313XXXXXXX"};
void sendMultiplesMessage(){
Serial.println("Configuración del modo SMS...");
Serial.println("AT+CMGF=1");
Serial.println("Enviando SMS...");
int canMovil=GetSize(numMovil);
for (int i = 0; i<canMovil; i++) {
Serial.println("AT+CMGS=\""+numMovil[i]+"\""); // Numero para enviar mensaje
delay(500);
Serial.write("Hola suscribete a tu canal: Diseno Electronico A2P...!"); // Mensaje a enviar
Serial.println();
delay(1000);
Serial.write((char)26); //ctrl+z
delay(9000);
}
}
En el loop() se tiene una condición que se ejecuta cada cierto tiempo, que se controla con la variable measurementTime, que tiene un valor de 60000, equivalente a 1 minuto.
Se debe tener en cuenta que en el loop() se ejecuta solo una función para el envió de mensaje: sendMultiplesMessage(), si se quiere enviar un solo mensaje, se debe cambiar a la función: sendAMessage(), o en efecto utilizar ambas funciones y se ejecutará ambas funciones.
Tips para realizar las pruebas
- El módulo A6 es bastante estables, no se suele tener tanto inconveniente al momento de trabajar con el, pero si se recomienda tener en cuenta las siguiente pautas para su correcto funcionamiento.
- No se recomienda hacer las conexiones sobre protoboard, porque se crean falsos contactos que impide la circulación fluida de la corriente, en lo posible realice las conexiones con cables de un calibre grueso, especialmente los de la alimentación (Vcc y GND), si es posible, soldar los cables.
- Fijar la frecuencia del módulo en 115200 bps "Serial.begin(115200)" y "Serial1.begin(115200)", por lo que la mayoría de los módulos son muy estables a esa frecuencia.
- Cuando se disponga a subir el código a la tarjeta de Arduino Mega, tener presente que la conexión con los pines de trasmisión TX1 y RX1, deben estar desconectado para que no se tenga error por conexión, luego conectar nuevamente para las pruebas.
Códigos Fuentes Utilizados
En el siguiente enlace, puedes encontrar el repositorio con los códigos fuentes que se utilizaron en las pruebas.
0 Comentarios