
Objetivo:
Enviar un SMS (Short Message Service), es decir, un mensaje de texto de alerta de activación de una alarma a uno o varios números de celular. El problema detectado es la falta de aviso inmediato de la activación de una alarma de un usuario, independientemente de donde se encuentra este.
Este problema se resuelve mediante un sistema electrónico formado por un circuito integrado programable (PIC) y un módulo GSM (Global System for Mobile) que se conecta con la red de una compañía de telefonía celular y es el encargado de hacer efectivo el envío del mensaje de texto a los números que se hayan guardado en el PIC.
Descripción:
El proyecto consiste en un sistema compuesto por un circuito electrónico conectado a una o varias alarmas que alerta a una persona ubicada en un determinado punto geográfico distante, la activación de su alarma mediante un mensaje de texto (SMS) al celular del usuario, indicando cualquier tipo de alteración que se llegue a detectar en la alarma.
Además se realiza el envío de un correo electrónico a las direcciones que se deseen, y la publicación de un tuit en una cuenta de Twitter.


Este sistema de alerta notifica a través de un SMS la activación de una alarma.
Componentes:
Módulo GSM SIM900 EVB KIT.
PIC16f877A.
Cristal Oscilador 4Mhz.
IC HIN232 (equivalente al IC MAX232).
Alimentación:
El módulo requiere una alimentación de 5V. Es importante destacar que la fuente de alimentación a utilizar debe ser capaz se suministrar por lo menos 2,5A ya que en momentos de operación el módulo puede tener este pico de consumo.
Mientras que el PIC también necesita de 5v de alimentación. El consumo de corriente del microcontrolador para su funcionamiento depende del voltaje de operación, la frecuencia y de las cargas que tengan sus pines. En este caso se puede utilizar una misma fuente para ámbos dispositivos.
PIC16f877A:
Este PIC utilizado cuenta con un puerto USART (Universal Synchronous Asynchronous Receiver Transmitter) por el cual se conecta al módulo GSM mediante un adaptador de niveles (MAX232 - HIN232). El PIC debe tener la programación adecuada para interpretar la activación de la alarma y enviar comandos AT (Hayes) al módulo para hacer efectivo el envío del SMS.
El módulo GSM se maneja por medio de comandos AT que son los enviados por el PIC y se encargan de hacer efectivo las funciones que posea el módulo, por ejemplo la de realizar llamadas, enviar SMS, consultar los
parámetros del módulo, medir la señal y realizar todas las configuraciones del SIM900.

Para el envío de los comandos AT se debe tener en cuenta que se debe esperar la respuesta de uno antes de enviar el próximo. Es por esto que en la programación se deja un tiempo de espera luego de enviar un comando AT (dependiendo del comando) para enviar el próximo.Se utiliza un MAX232 ó su equivalente HIN232 para adaptar los niveles del PIC y el del puerto serie del módulo GSM, ya que el microcontrolador trabaja con tecnología TTL y el segundo se rige bajo la norma RS232 (serial).

El siguiente código es el programa para el PIC16F877A.
#include // incluimos nuestro PIC a utilizar
#use delay(clock = 20000000) // usamos un reloj de 20 Mhz
#fuses HS,NOWDT,NOLVP // HS: high speed adecuado para reloj de 20 Mhz
#use fast_IO(B) // declaramos los registro TRIS y PORT del puerto B
#use RS232(BAUD=9600,BITS=8,PARITY=N,XMIT=PIN_C6,RCV=PIN_C7)
void main () // funcion principal
{
set_tris_B(0x00) ; // Configuramos los pines del puerto B como salida
// output = 0 (salida) , input = 1 (entrada)
while(true) // bucle infinito donde haremos parpadear al LED
{
if(input(PIN_A0) == 0){
output_high(pin_B0) ; // ponemos en alto(5V) el pin B0
// Seleccionor modo texto
printf("AT+CMGF=1\r\n");
delay_ms(500);
// Enviar SMS al numero
printf("AT+CMGS=\"3704252003\"\r\n");
delay_ms(500);
// Con el texto
printf("ATENCION se ha activado la alarma.\r\n");
delay_ms(500);
// Se envia el SMS
putchar(0x1a);
delay_ms(500);
printf("\r\n");
output_low(pin_B0); // ponemos en 0 (0V) el pin B0
delay_ms(1000);
output_high(pin_B0) ; // ponemos en alto(5V) el pin B0
// Comienza envio de correo
printf("AT+CGATT=1\r\n");
delay_ms(5500);
printf("AT+CGDCONT=1,\"IP\",\"igprs.claro.com.ar\"\r\n");
delay_ms(5500);
printf("AT+CSTT=\"igprs.claro.com.ar\",\"clarogprs\",\"clarogprs999\"\r\n");
delay_ms(5500);
printf("AT+CIICR\r\n");
delay_ms(5500);
printf("AT+CIFSR\r\n");
delay_ms(3500);
printf("AT+CIPSTATUS\r\n");
delay_ms(3500);
printf("AT+CIPHEAD=1\r\n");
delay_ms(3500);
printf("AT+CIPSTART=\"TCP\",\"www.lunite.net\",\"80\"\r\n");
delay_ms(9500);
printf("AT+CIPSEND\r\n");
delay_ms(4000);
printf("GET /b.php HTTP/1.1\r\n");
delay_ms(2000);
printf("Host: www.lunite.net\r\n");
delay_ms(2000);
printf("Connection: Keep-Alive\r\n");
delay_ms(2000);
printf("User-Agent: 01b4F\r\n");
delay_ms(2000);
printf("Accept: */*\r\n");
delay_ms(2000);
printf("Accept-Language: en-us\r\n\r\n");
delay_ms(3500);
putchar(0x1a);
delay_ms(1000); // Le indicamos que este en 5V durante 1000mseg = 1seg
output_low(pin_B0); // ponemos en 0 (0V) el pin B0
delay_ms(1000);
}
} // Fin del bucle
} // Fin del programa
Programa en PIC C COMPILER para el envio del SMS y la conexión al archivo b.php del servidor (localhost) que se encarga del envío del correo y la publicación de un tuit.
El archivo b.php en cuestión que envía el correo electrónico y la publicación de un tuit en una cuenta de twitter.
Comentarios