Lunite / Sistema de alerta de activación de alarmas

Sistema de alerta de activación de alarmas

Agregado el 12 de agosto de 2013 / Por José Silva
http://www.lunite.net/images/post/saaa_desc.png

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.


http://www.lunite.net/images/post/saaa_diagrama_de_bloques.png

http://www.lunite.net/images/post/saaa_proto.png
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.

http://www.lunite.net/images/post/saaa_PIC16F874A_PIC16F877A.png
Configuración de pines del PIC16F877A

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).

http://www.lunite.net/images/post/saaa_circuito.png
Conexiones finales (circuito).
Serial Port Main (2: Pin 2 TXD / 1: Pin 3 RXD) del SIM900.


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 (lunite.net) 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 (1)
Sandra dijo el 30-Nov-16 17:04 #1
Hola excelente post, pero tengo una duda cual es el pin 2 y 3 del sim900? porque yo tengo es este modulo :http://electropro.pe/image/cache/data/imgProductos/049. Módulo GSM SIM900 Quad Band Shield/1-1000x1000.jpg pero no se como conectarlo... puedes ayudarme? he intentado pero no me manda mensajes de texto el modulo