![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
gsm
Dependencies: DebouncedIn mbed
Fork of CLASEDELGSM1 by
Diff: main.cpp
- Revision:
- 6:4cece0df6a3b
- Parent:
- 5:dbb0384120e0
- Child:
- 7:08dac00ecff7
--- a/main.cpp Tue May 10 10:08:40 2016 +0000 +++ b/main.cpp Tue May 10 12:52:36 2016 +0000 @@ -1,9 +1,9 @@ -/*************************Alarma Contra Robo********************************************************* -Como modem usa un celular SIEMENS a56i +/*************************Alarma Contra Robo*******ver:01.may 10 2016 ************************************************** +Como modem usa un celular SIEMENS a56i (ver compatibilidad mandos AT otros modems) 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 +Cable verde es RX conectelo a PTE0 cable blanco es TX conectelo a PTE1 (placa FRDMKL25Z de NXP antes freescale) 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: @@ -42,11 +42,15 @@ Timer t; DigitalOut LedVerde(LED2); DigitalOut LedRojo(LED1); -DigitalOut camara(PTE5 ); +DigitalOut camara(PTE20 ); +DigitalOut sirena(PTE21 ); +DigitalOut luces(PTE22 ); +DigitalOut audio(PTE23 ); 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 GSM(PTE0,PTE1); //Configura puerto UART1 de la FRDMKL25Z +Serial voz(PTA2,PTA1); //Configura puerto UART0 de la FRDMKL25Z Serial pc(USBTX,USBRX);//Configura puerto USB a la consola serial del PC conectado. void Rx_interrupt(); int position=0; @@ -254,10 +258,10 @@ if (0 != sendCmdAndWaitForResp("AT+CMGF=0\r\n", "OK", 3)){ return -1; } - if (0 != sendCmdAndWaitForResp("AT+CBST=0,0,1\r\n", "OK", 3)){ + if (0 != sendCmdAndWaitForResp("AT+CBST=7,0,1\r\n", "OK", 3)){ //velocidad fija a 9600, modem asincronico no transparente return -1; } - if (0 != sendCmdAndWaitForResp("ATE\r\n", "OK", 3)){ + if (0 != sendCmdAndWaitForResp("ATE\r\n", "OK", 3)){ //se le quita el eco al modem GSM return -1; } LedVerde=0; @@ -301,6 +305,17 @@ sendCmd(cmd); return 0; } +//********Esta funcion devuelve la confirmacion del mensaje a quien lo envio************************** +int recibe_ok(){ + GSM.printf("AT+CMGS=32\n\r"); + pc.printf("AT+CMGS=32\n\r"); + wait_ms(200); + GSM.printf("0011000A91%s0000AA15CDB27B1E569741F2F2382D4E93DFA0E7321402",tel); + pc.printf("0011000A91%s0000AA15CDB27B1E569741F2F2382D4E93DFA0E7321402",tel); + wait_ms(500); + GSM.putc((char)0x1A); + return 0; + } //************************************************************************************ //*****************SE INICIA EL PROGRAMA PRINCIPAL******************************************************* int main() { @@ -396,8 +411,11 @@ pc.printf("%s-\r\n",msg); //decodificar mensaje //comparar mensaje - deleteSMS(1);//se borra el bufer por medio de una funcion + deleteSMS(1);//se borra los mensajes por medio de una funcion + readBuffer(buffer,200); + readBuffer(buffer,200); if(strncmp("417658DE0EC700",msg,14) == 0){ //COMPARA resp con "417658DE0EC700" que es Alarma1 + recibe_ok(); LedVerde=1; LedAzul=0; wait(15); @@ -405,6 +423,7 @@ LedVerde=0; } if(strncmp("417658DE0ECB00",msg,14) == 0){ //COMPARA resp con "417658DE0ECB00" que es Alarma2 + recibe_ok(); LedVerde=1; LedRojo=0; wait(15); @@ -412,16 +431,40 @@ LedVerde=0; } if(strncmp("C3703B2C0F83DE6E",msg,16) == 0){ //COMPARA resp con "417658DE0ECB00" que es Camara on + recibe_ok(); camara=1; } if(strncmp("C3703B2C0F83DE66",msg,16) == 0){ //COMPARA resp con "417658DE0ECB00" que es Camara of + recibe_ok(); camara=0; } if(strncmp("D3B4BCEC0E83DE6E",msg,16) == 0){ //COMPARA resp con "D3B4BCEC0E83DE6E" que es Sirena on - camara=0; + recibe_ok(); + sirena=1; + wait(30); //prende la sirena 30 segundos + sirena=0; + } +/* if(strncmp(" ",msg,16) == 0){ //COMPARA resp con " " que es luz on + recibe_ok(); + luces=1; + wait(30); //prende la luz 30 segundos + luces=0; } + if(strncmp(" ",msg,16) == 0){ //COMPARA resp con "" que es Msg1 + recibe_ok(); + } + if(strncmp(" ",msg,16) == 0){ //COMPARA resp con "" que es Msg2 + recibe_ok(); + } + if(strncmp(" ",msg,16) == 0){ //COMPARA resp con "" que es Msg3 + recibe_ok(); + } + if(strncmp(" ",msg,16) == 0){ //COMPARA resp con "" que es Msg123 + recibe_ok(); + } +*/ //strncmp(str1, str2, 6) compara hasta 6 caracteres - + //recibe_ok(); //ejecurar orden si esta es mas que prender leds cleanBuffer(buffer,100); @@ -483,7 +526,23 @@ mensaje=417658DE0E8362 5 +Mensaje recibido ok! +AT+CMGS=31 +0011000A9113223717370000AA14CDB27B1E569741F2F2382D4E93DFA0F73A04 + +AT+CMGS=32 +0011000A9113223717370000AA15CDB27B1E569741F2F2382D4E93DFA0E7321402 +void recibe_ok(void){ + GSM.printf("AT+CMGS=31\n\r"); + wait_ms(200); + GSM.printf("0011000A91"); + GSM.printf("%str",tel); + GSM.printf("0000AA14CDB27B1E569741F2F2382D4E93DFA0F73A04\n\r"); // Mensaje recibido ok! + wait_ms(200); + GSM.putc((char)0x1A); + } + */ \ No newline at end of file