gsm
Dependencies: DebouncedIn mbed
Fork of CLASEDELGSM1 by
Diff: main.cpp
- Revision:
- 4:0b889f7a8eba
- Parent:
- 2:0377af333c98
- Child:
- 5:dbb0384120e0
diff -r 0377af333c98 -r 0b889f7a8eba main.cpp --- a/main.cpp Mon Nov 02 03:25:09 2015 +0000 +++ b/main.cpp Sun May 08 08:56:40 2016 +0000 @@ -1,10 +1,40 @@ -// Programa para enviar desde la FRDMKL25Z un mensaje de texto en formatp PDU -// Como modem usa un celular SIEMENS a56i -// ENVIAR -----la palabra "ALARMA 1" -// - +/*************************Alarma Contra Robo********************************************************* +Como modem usa un celular SIEMENS a56i +Envia el mensaje intruso y otras cosas (mire el codigo de abajo) +Como modem GSM usa un celular SIEMENS A56i +El conector se distingue asi: +Cable verde es RX conectelo a PTE0 cable blanco es TX conectelo a PTE1 +La alarma se dispara segun la señal digital de entrada de un sensor PIR que se le filtra el ruido por medio de +una validacion por retardo +La alarma puede hacer accionamientos como: +Accionamiento Permanente de una sirena +Accionaminto temporizado de una sirena +Accionamiento de un Mensaje de voz reperido y temporizado con un modulo de voz parallax +puede marcar un telefono fijo y uno de celular e inyectar audio, como voz robotizada a la linea de audio +usando un modulo GSM/GPRS SIM900 para arduino con entradas y salidas de audio +puede leer coordenadas de gps y enviarlas con el link de googlemaps. // OJO CON ESTO // conector del siemens cable verde es RX conectelo a PTE0 cable blanco es TX conectelo a PTE1 + +ESTA ALARMA SE PUEDE PROBAR DE LA SIGUIENTE FORMA +LOS TELEFONOS ESTAN PREGRAVADOS O CON UN CAMBIO SIMPLE EN EL PROGRAMA EL SISTEMA PUEDE CONTESTAR +CON EL TELEFONO QUE LO LLAMO +EN EL CASO DE RASTREADORES +HAY UN SUICHE QUE SE LLAMA PIR UBICADO EN PTA13..SI SE PULSA POR UN INSTANTE DE TIEMPO +EL LED VERDE DESTELLA INDICANDO QUE SE ENVIO EL MENSAJE AL NUMERO CODIFICADO EN LA CADENA SEGUN LAS TRAMAS PDU +ENVIA EL MENSAJE "HAY INTRUSOS EN LA FINCA...." + +EN EL CASO DE ENVIAR ORDENES SE DISEÑARON DOS +SI SE ENVIA UN MENSAJE CON Alarma1 prende el led azul 5 segundos y retorna a verde +SI se envia el mensaje con Alarma2 prende el led rojo 5 segundos y retorna a verde +si el telefono falla da indicacion con rojo +el sistema reintenta de forma infinita la configuracion hasta que lo logra +*****se verifico que no se de bloqueo y asi resulto bajo intensas pruebas******** +este sistema detecta el mensaje, el tamaño del mensaje y el numero telefonico de quien llama pero etos parametros no se estan usando +se podrian usar en programas mas complejos como rastreadores satelitales o sistemas de monitoreo de variablees fisicas +que se consultan por medio de ordenes previas segun algun Mensaje corto. + +*/ #include "mbed.h" #include "DebouncedIn.h" #include "stdio.h" @@ -13,6 +43,7 @@ DigitalOut LedVerde(LED2); DigitalOut LedRojo(LED1); DigitalOut LedAzul(LED3); +DebouncedIn PIR(PTA13); //señal que inicia el envio del mensaje DebouncedIn button1(PTC12); //señal que inicia el envio del mensaje Serial GSM(PTE0,PTE1); //Configura puerto UART de la FRDMKL25Z Serial pc(USBTX,USBRX);//Configura puerto USB a la consola serial del PC conectado. @@ -267,68 +298,63 @@ return 0; } //************************************************************************************ +//*****************SE INICIA EL PROGRAMA PRINCIPAL******************************************************* +int main() { + //configuramos los puertos seriales + GSM.baud(9600);//configura los baudios de la FRDMKL25Z en 9600 + GSM.format(8,Serial::None,1); //configura el formato de los datos de la UART + LedVerde=1; //APAGO LOS LEDS + LedRojo=1; + LedAzul=1; + LedRojo=0; // PRENDO EL LED ROJO + //quito el eco del modem + +//****************CONFIGURAMOS EL MODEM GSM (TELEFONO CELULAR SIEMENS A56i) +inicio1: + ret = init(); + if(ret==0){ + LedRojo=1; + LedVerde=0; + } + else{ + wait(5); + goto inicio1; + } //RUTINA PRINCIPAL******************************************************************************************* -int main(void) - { - //configuramos los puertos seriales - GSM.baud(9600);//configura los baudios de la FRDMKL25Z en 9600 - GSM.format(8,Serial::None,1); //configura el formato de los datos de la UART - //apagamos los 3 leds - LedVerde=1; - LedRojo=1; - LedAzul=1; - //quito el eco del modem - GSM.printf("ATE0\r\n"); - pc.printf("ATE0\r\n"); - for(i=0;i<6;i++){ - GSM.printf("AT+CMGD=%d\r\n",i); - wait(0.2); - } - //cleanBuffer(buffer,10); - //definicion de algunas variables - lenpack=6; //tamaño de "ALARMA" - //Configuro el Modem, le doy solo 10 intentos si esos fracasan se bloquea y prende intermitente el led rojo -inicio:if(init()<0){ - intentos++; - if (intentos==10){goto loop1;} - goto inicio; - } - //cleanBuffer(buffer,50); - //inicia el programa ciclico - //esperar señales de alarma por boton1 - //se envia "Alarma1" - //al telefono que envio mensaje antes - + //********************************************************************************************************************* while(1){ - if (button1.falling()) + //***************ALARMA POR ACTIVACION PIR*************************************************** + if (PIR.falling()) { - wait(2); - if (!button1) + wait(1); + if (!PIR) { - //inicia el envio de un sms - index=19; - GSM.printf("AT+CMGS=%d\r\n",index); - wait(0.2); - GSM.printf("0011000A91"); - GSM.printf("%s",tel); - GSM.printf("0000AA07417658DE0EC7"); - GSM.printf("\r\n"); - wait(0.2); - GSM.putc(0x1A); //el mensaje ya fue enviado con esto - for(i=0;i<6;i++){ + +//**********se envia la palabra "Hay Intrusos En La Finca de Rionegro" +//******Gustavo + GSM.printf("AT+CMGS=50\n\r"); + wait_ms(200); + GSM.printf("0011000A9113223717370000AA2A21970B19CE83926EBABC3E7FCF41453788190699D3EE7118442E83A4E9B7BB7C96BF5DAE10"); + wait_ms(200); + GSM.putc((char)0x1A); + for(i=0;i<6;i++){ LedVerde=1; - wait(0.5); + wait(0.2); LedVerde=0; - wait(0.5); - } - } - } - + wait(0.2); + } + } + } +// **************apartir de aca se pueden escribir mas alarmas o mensajes de salida activar leds salidas o generar respuestas + + - //inicia la recepcion de un mensaje de texto +//***************inicia la recepcion de un mensaje de texto********************************** +//la comparacion de estos mensajes constituye generar accionamiento abrir o cerrar circuitos o contestar mensajes + if (GSM.readable()) { readBuffer(buffer,100); pc.printf("%s\r\n",buffer); @@ -361,11 +387,12 @@ pc.printf("%s-\r\n",tam); //leer mensaje for(i=0;i<14;i++){ - msg[i]=buffer[i+70]; + msg[i]=buffer[i+70]; //OJO SE LEE EL MENSAJE APARTIR DE LA POSICION 70 } pc.printf("%s-\r\n",msg); //decodificar mensaje //comparar mensaje + deleteSMS(1);//se borra el bufer por medio de una funcion if(strcmp("417658DE0EC700",msg) == 0){ //COMPARA resp con "417658DE0EC700" que es Alarma1 LedVerde=1; LedAzul=0; @@ -382,7 +409,7 @@ } - //ejecurar orden + //ejecurar orden si esta es mas que prender leds cleanBuffer(buffer,100); } @@ -399,4 +426,15 @@ wait(0.3); goto loop1; -} \ No newline at end of file +} + +/* +si se manda para enviar mensaje +AT+CMGS=20 + //un salto de linea y el simbolo mayor +> + + + + +*/ \ No newline at end of file