GSM
Dependencies: DebouncedIn mbed
Fork of CLASEDELGSM1 by
Revision 3:7988fa80dea8, committed 2015-11-20
- Comitter:
- PabloViana
- Date:
- Fri Nov 20 14:49:29 2015 +0000
- Parent:
- 2:0377af333c98
- Commit message:
- GSM
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 0377af333c98 -r 7988fa80dea8 main.cpp --- a/main.cpp Mon Nov 02 03:25:09 2015 +0000 +++ b/main.cpp Fri Nov 20 14:49:29 2015 +0000 @@ -1,10 +1,3 @@ -// 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" -// - -// OJO CON ESTO -// conector del siemens cable verde es RX conectelo a PTE0 cable blanco es TX conectelo a PTE1 #include "mbed.h" #include "DebouncedIn.h" #include "stdio.h" @@ -271,13 +264,15 @@ //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 + //apagamos los 3 leds LedVerde=1; LedRojo=1; LedAzul=1; + wait(5); //quito el eco del modem GSM.printf("ATE0\r\n"); pc.printf("ATE0\r\n"); @@ -285,105 +280,131 @@ 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 - + //Se intenta inicializar el módulo, en caso de que supere 10 intentos se termina el programa; + while(init()<0) + { + intentos++; if (intentos==10){pc.printf("El programa terminara...\n\r");LedRojo=0;return 0;} + } + +wait(1); +LedVerde=1; //Apgo el led verde; +pc.printf("El sistema está listo para iniciar la recepción de SMS\n\r"); //********************************************************************************************************************* while(1){ - if (button1.falling()) - { - wait(2); - if (!button1) - { - //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++){ - LedVerde=1; - wait(0.5); - LedVerde=0; - wait(0.5); - } - } - } - - + //inicia la recepcion de un mensaje de texto if (GSM.readable()) { readBuffer(buffer,100); - pc.printf("%s\r\n",buffer); + wait(0.2); for(i=0;i<5;i++) { - resp[i]=buffer[i]; + resp[i]=buffer[i]; } - pc.printf("%s\r\n",resp); + wait(0.2); + if(strcmp("$$+CM",resp) == 0){ //COMPARA resp con "+CMTI" - pc.printf("llego MSG\r\n"); + + pc.printf("Nuevo mensaje de texto\r\n"); + cleanBuffer(buffer,10); + wait(0.5); + GSM.printf("AT+CMGL=0\r\n");//envio comando para leer mensaje + pc.printf("AT+CMGL=0\r\n"); - //if (GSM.readable()) { - GSM.printf("AT+CMGD=0\r\n"); + + GSM.printf("AT+CMGD=0\r\n"); + readBuffer(buffer,100); + + pc.printf("%s\r\n",buffer); + wait(5); //leer telefono for(i=0;i<10;i++){ tel[i]=buffer[i+40]; } - pc.printf("%s-\r\n",tel); + pc.printf("Remitente: %s\r\n",tel); + //leer tamaño for(i=0;i<2;i++){ tam[i]=buffer[i+68]; } - pc.printf("%s-\r\n",tam); + //leer mensaje for(i=0;i<14;i++){ msg[i]=buffer[i+70]; } - pc.printf("%s-\r\n",msg); - //decodificar mensaje - //comparar mensaje - if(strcmp("417658DE0EC700",msg) == 0){ //COMPARA resp con "417658DE0EC700" que es Alarma1 - LedVerde=1; - LedAzul=0; - wait(15); - LedAzul=1; - LedVerde=0; - } - if(strcmp("417658DE0ECB00",msg) == 0){ //COMPARA resp con "417658DE0ECB00" que es Alarma2 - LedVerde=1; - LedRojo=0; - wait(15); - LedRojo=1; - LedVerde=0; + pc.printf("Mensaje Recibido: %s\r\n",msg); + + + cleanBuffer(buffer,100); //Limpiar Buffer; + + pc.printf("\n\r"); + + if(strcmp("CB347D8C2EBB01",msg) == 0) //Envío la palabra Kitchen - Despliego en pantalla + { + pc.printf("Se verificara el estado de las hornillas y se apagaran las que esten encendidas\r\n"); + //Cómo se reconoce la palabra Kitchen, entonces se envía la palabra OK como respuesta; + GSM.printf("AT+CMGS=15\r\n"); + wait(0.2); + GSM.printf("0011000A91"); + pc.printf("0011000A91"); + GSM.printf("%s",tel); + pc.printf("%s",tel); + GSM.printf("0000AA03CF35"); + pc.printf("0000AA03CF35\n\r"); + GSM.putc((char)0x1A); //ctrl-z + LedAzul =0;wait(2);LedAzul=1; //Enciendo y apago el led Azul paara indicar que se realiza una instrucción; } + else if(strcmp("C672990C2FD301",msg) == 0) //Envío la palabra Feedpet + { + pc.printf("Se activara el sistema de alimentacion automatico de mascotas...\r\n"); + + //Se reconoce la instrucción FeedPet, se responde OK; + GSM.printf("AT+CMGS=15\r\n"); + wait(0.2); + GSM.printf("0011000A91"); + GSM.printf("%s",tel); + GSM.printf("0000AA03CF35"); + GSM.putc((char)0x1A); //ctrl-z + LedAzul =0;wait(2);LedAzul=1; //Enciendo y apago el led Azul paara indicar que se realiza una instrucción; + + } - //ejecurar orden - cleanBuffer(buffer,100); + + else if(strcmp("C872985E96C700",msg) == 0) //Envío la palabra Heater1; + { + pc.printf("Se activara el sistema de calefaccion...\r\n"); + //Se Reconoce la instrucción Heater1, se responde Ok. + GSM.printf("AT+CMGS=15\r\n"); + wait(0.2); + GSM.printf("0011000A91"); + GSM.printf("%s",tel); + GSM.printf("0000AA03CF35"); + GSM.putc((char)0x1A); //ctrl-z + LedAzul =0;wait(2);LedAzul=1; //Enciendo y apago el led Azul paara indicar que se realiza una instrucción; + + } + else { + pc.printf("No se reconoce ninguna instruccion...\n\r"); + //No se reconoce ninguna instrucción se responde con la palabra Again; + GSM.printf("AT+CMGS=18\r\n"); + wait(0.2); + GSM.printf("0011000A91"); + pc.printf("PUD: 0011000A91"); + GSM.printf("%s",tel); + pc.printf("%s",tel); + GSM.printf("0000AA06C17338ED06\r\n"); + pc.printf("0000AA06C17338ED06\r\n"); + GSM.putc((char)0x1A); //ctrl-z + LedRojo =0;wait(2);LedRojo=1; //Enciendo y apago el led rojo paara indicar que no se reconoce la instrucción; + } //Ninguna orden reconocida; } } @@ -391,12 +412,7 @@ } + -//********************************************************************************************************************** -loop1: LedRojo=0; - wait(0.3); - LedRojo=1; - wait(0.3); - goto loop1; } \ No newline at end of file