GSM

Dependencies:   DebouncedIn mbed

Fork of CLASEDELGSM1 by Gustavo Ramirez

Committer:
PabloViana
Date:
Fri Nov 20 14:49:29 2015 +0000
Revision:
3:7988fa80dea8
Parent:
2:0377af333c98
GSM

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tony63 0:edc50cf04b46 1 #include "mbed.h"
tony63 0:edc50cf04b46 2 #include "DebouncedIn.h"
tony63 0:edc50cf04b46 3 #include "stdio.h"
tony63 0:edc50cf04b46 4 #include "string.h"
tony63 0:edc50cf04b46 5 Timer t;
tony63 0:edc50cf04b46 6 DigitalOut LedVerde(LED2);
tony63 0:edc50cf04b46 7 DigitalOut LedRojo(LED1);
tony63 0:edc50cf04b46 8 DigitalOut LedAzul(LED3);
tony63 0:edc50cf04b46 9 DebouncedIn button1(PTC12); //señal que inicia el envio del mensaje
tony63 0:edc50cf04b46 10 Serial GSM(PTE0,PTE1); //Configura puerto UART de la FRDMKL25Z
tony63 0:edc50cf04b46 11 Serial pc(USBTX,USBRX);//Configura puerto USB a la consola serial del PC conectado.
tony63 0:edc50cf04b46 12 void Rx_interrupt();
tony63 0:edc50cf04b46 13 int position=0;
tony63 2:0377af333c98 14 int intentos=0;
tony63 0:edc50cf04b46 15 int lenpack=6;
tony63 2:0377af333c98 16 int ret=1;
tony63 0:edc50cf04b46 17 int longi=0;
tony63 1:6b506dde0a6e 18 char tel[11];
tony63 0:edc50cf04b46 19 char DE[50];
tony63 1:6b506dde0a6e 20 char buffer[100];
tony63 2:0377af333c98 21 char buffermsg[100];
tony63 2:0377af333c98 22 char buffer1[100];
tony63 1:6b506dde0a6e 23 char datos[100];
tony63 2:0377af333c98 24 char NUMBER[13];
tony63 2:0377af333c98 25 char resp[6];
tony63 2:0377af333c98 26 char CMT[]="+CMTI";
tony63 2:0377af333c98 27 char tam[2];
tony63 0:edc50cf04b46 28 int index;
tony63 0:edc50cf04b46 29 int count;
tony63 0:edc50cf04b46 30 int i = 0;
tony63 1:6b506dde0a6e 31 int j = 0;
tony63 0:edc50cf04b46 32 int c=0;
tony63 0:edc50cf04b46 33 unsigned char CtrlZ = 0x1A; // comodin de emision controlZ
tony63 0:edc50cf04b46 34 bool Flag = false; // bandera
tony63 0:edc50cf04b46 35 char r[]=""; //Cadena de recepcion de la trama PDU si se usa!!
tony63 0:edc50cf04b46 36 char msg[256];
tony63 0:edc50cf04b46 37 char char1;
tony63 0:edc50cf04b46 38 //Flush serial para el buffer
tony63 0:edc50cf04b46 39 void FlushGSM(void) {
tony63 0:edc50cf04b46 40 char1 = 0;
tony63 0:edc50cf04b46 41 while (GSM.readable()){
tony63 0:edc50cf04b46 42 char1 = GSM.getc();}
tony63 0:edc50cf04b46 43 return;}
tony63 0:edc50cf04b46 44
tony63 0:edc50cf04b46 45 void callback() {
tony63 0:edc50cf04b46 46 // Note: you need to actually read from the serial to clear the RX interrupt
tony63 0:edc50cf04b46 47 pc.printf("%c\n", GSM.getc());
tony63 0:edc50cf04b46 48
tony63 0:edc50cf04b46 49 }
tony63 2:0377af333c98 50 //****************************************************************************************************************
tony63 2:0377af333c98 51 //esta funcion de abajo lee todo un bufer hasta encontrar CR o LF y el resto lo rellena de
tony63 2:0377af333c98 52 //$, count es lo que va a leer.Lo leido lo mete en buffer que es una cadena previamente definida
tony63 2:0377af333c98 53 //incorpora medida de tiempo si se demora mas de tres segundos retorna fracaso con -1
tony63 2:0377af333c98 54 //****************************************************************************************************************
tony63 0:edc50cf04b46 55 int readBuffer(char *buffer,int count)
tony63 0:edc50cf04b46 56 {
tony63 0:edc50cf04b46 57 int i=0;
tony63 0:edc50cf04b46 58 t.start(); // start timer
tony63 0:edc50cf04b46 59 while(1) {
tony63 0:edc50cf04b46 60 while (GSM.readable()) {
tony63 0:edc50cf04b46 61 char c = GSM.getc();
tony63 0:edc50cf04b46 62 if (c == '\r' || c == '\n') c = '$';
tony63 0:edc50cf04b46 63 buffer[i++] = c;
tony63 0:edc50cf04b46 64 if(i > count)break;
tony63 0:edc50cf04b46 65 }
tony63 0:edc50cf04b46 66 if(i > count)break;
tony63 0:edc50cf04b46 67 if(t.read() > 3) {
tony63 0:edc50cf04b46 68 t.stop();
tony63 0:edc50cf04b46 69 t.reset();
tony63 0:edc50cf04b46 70 break;
tony63 0:edc50cf04b46 71 }
tony63 0:edc50cf04b46 72 }
tony63 0:edc50cf04b46 73 wait(0.5);
tony63 0:edc50cf04b46 74 while(GSM.readable()) { // display the other thing..
tony63 0:edc50cf04b46 75 char c = GSM.getc();
tony63 0:edc50cf04b46 76 }
tony63 0:edc50cf04b46 77 return 0;
tony63 0:edc50cf04b46 78 }
tony63 2:0377af333c98 79 //********************************************************************************
tony63 0:edc50cf04b46 80 /* esta funcion de abajo limpia o borra todo un "buffer" de tamaño "count"
tony63 2:0377af333c98 81 lo revisa elemento por elemento y le mete el caracter null que indica fin de cadena
tony63 0:edc50cf04b46 82 no retorna nada
tony63 0:edc50cf04b46 83 */
tony63 0:edc50cf04b46 84 //***************************************************************************************
tony63 0:edc50cf04b46 85 void cleanBuffer(char *buffer, int count)
tony63 0:edc50cf04b46 86 {
tony63 0:edc50cf04b46 87 for(int i=0; i < count; i++) {
tony63 0:edc50cf04b46 88 buffer[i] = '\0';
tony63 0:edc50cf04b46 89 }
tony63 0:edc50cf04b46 90 }
tony63 0:edc50cf04b46 91 /* esta funcion de abajo envia un comando parametrizado como cadena
tony63 2:0377af333c98 92 puede ser un comando tipo AT
tony63 0:edc50cf04b46 93 */
tony63 0:edc50cf04b46 94 //***************************************************************************************
tony63 0:edc50cf04b46 95 void sendCmd(char *cmd)
tony63 0:edc50cf04b46 96 {
tony63 0:edc50cf04b46 97 GSM.puts(cmd);
tony63 0:edc50cf04b46 98 }
tony63 2:0377af333c98 99 //****************************************************************************************
tony63 0:edc50cf04b46 100 /* esta funcion de abajo espera la respuesta de un comando que debe ser identica a la cadena "resp" y un tiempo timeout"
tony63 0:edc50cf04b46 101 si todo sale bien retorna un cero que en la programacion hay que validar
tony63 0:edc50cf04b46 102 si algo sale mal ( no se parece o se demora mucho )retorna -1 que debera validarse con alguna expresion logica
tony63 0:edc50cf04b46 103 */
tony63 0:edc50cf04b46 104 //***************************************************************************************
tony63 0:edc50cf04b46 105 int waitForResp(char *resp, int timeout)
tony63 0:edc50cf04b46 106 {
tony63 0:edc50cf04b46 107 int len = strlen(resp);
tony63 0:edc50cf04b46 108 int sum=0;
tony63 0:edc50cf04b46 109 t.start();
tony63 0:edc50cf04b46 110
tony63 0:edc50cf04b46 111 while(1) {
tony63 0:edc50cf04b46 112 if(GSM.readable()) {
tony63 0:edc50cf04b46 113 char c = GSM.getc();
tony63 0:edc50cf04b46 114 sum = (c==resp[sum]) ? sum+1 : 0;// esta linea de C# sum se incrementa o se hace cero segun c
tony63 0:edc50cf04b46 115 if(sum == len)break; //ya acabo se sale
tony63 0:edc50cf04b46 116 }
tony63 0:edc50cf04b46 117 if(t.read() > timeout) { // time out chequea el tiempo minimo antes de salir perdiendo
tony63 0:edc50cf04b46 118 t.stop();
tony63 0:edc50cf04b46 119 t.reset();
tony63 0:edc50cf04b46 120 return -1;
tony63 0:edc50cf04b46 121 }
tony63 0:edc50cf04b46 122 }
tony63 0:edc50cf04b46 123 t.stop(); // stop timer antes de retornar
tony63 0:edc50cf04b46 124 t.reset(); // clear timer
tony63 0:edc50cf04b46 125 while(GSM.readable()) { // display the other thing..
tony63 0:edc50cf04b46 126 char c = GSM.getc();
tony63 0:edc50cf04b46 127 }
tony63 0:edc50cf04b46 128
tony63 0:edc50cf04b46 129 return 0;
tony63 0:edc50cf04b46 130 }
tony63 0:edc50cf04b46 131 /* esta funcion de abajo es muy completa e util se encarga de enviar el comando y esperar la respuesta
tony63 0:edc50cf04b46 132 si todo sale bien retorna un cero(herencia de las funciones contenedoras) que en la programacion hay que validar
tony63 0:edc50cf04b46 133 con alguna expresion logica
tony63 0:edc50cf04b46 134 */
tony63 0:edc50cf04b46 135 //***************************************************************************************
tony63 0:edc50cf04b46 136 int sendCmdAndWaitForResp(char *cmd, char *resp, int timeout)
tony63 0:edc50cf04b46 137 {
tony63 0:edc50cf04b46 138 sendCmd(cmd);
tony63 0:edc50cf04b46 139 return waitForResp(resp,timeout);
tony63 0:edc50cf04b46 140 }
tony63 0:edc50cf04b46 141 /* esta funcion de abajo chequea que el modem este vivo envia AT y le contesta con OK y espera 2 segundos
tony63 0:edc50cf04b46 142 */
tony63 0:edc50cf04b46 143 //***************************************************************************************
tony63 0:edc50cf04b46 144 int powerCheck(void)// este comando se manda para verificar si el modem esta vivo o conectado
tony63 0:edc50cf04b46 145 {
tony63 0:edc50cf04b46 146 return sendCmdAndWaitForResp("AT\r\n", "OK", 2);
tony63 0:edc50cf04b46 147 }
tony63 0:edc50cf04b46 148 /* esta funcion de abajo chequea el estado de la sim card
tony63 0:edc50cf04b46 149 y si todo sale bien retorna un cero que en la programacion hay que validar
tony63 0:edc50cf04b46 150 con alguna expresion logica
tony63 0:edc50cf04b46 151 */
tony63 0:edc50cf04b46 152 //***************************************************************************************
tony63 0:edc50cf04b46 153 int checkSIMStatus(void)
tony63 0:edc50cf04b46 154 {
tony63 0:edc50cf04b46 155 char gprsBuffer[30];
tony63 0:edc50cf04b46 156 int count = 0;
tony63 0:edc50cf04b46 157 cleanBuffer(gprsBuffer,30);
tony63 0:edc50cf04b46 158 while(count < 3) {
tony63 0:edc50cf04b46 159 sendCmd("AT+CPIN?\r\n");
tony63 0:edc50cf04b46 160 readBuffer(gprsBuffer,30);
tony63 0:edc50cf04b46 161 if((NULL != strstr(gprsBuffer,"+CPIN: READY"))) {
tony63 0:edc50cf04b46 162 break;
tony63 0:edc50cf04b46 163 }
tony63 0:edc50cf04b46 164 count++;
tony63 0:edc50cf04b46 165 wait(1);
tony63 0:edc50cf04b46 166 }
tony63 0:edc50cf04b46 167
tony63 0:edc50cf04b46 168 if(count == 3) {
tony63 0:edc50cf04b46 169 return -1;
tony63 0:edc50cf04b46 170 }
tony63 0:edc50cf04b46 171 return 0;
tony63 0:edc50cf04b46 172 }
tony63 0:edc50cf04b46 173 /* esta funcion de abajo chequea la calidad de la señal
tony63 2:0377af333c98 174 y si todo sale bien retorna con el valor de señal util o un -1 si no es aceptable, en la programacion hay que validar
tony63 0:edc50cf04b46 175 con alguna expresion logica
tony63 0:edc50cf04b46 176 */
tony63 0:edc50cf04b46 177 //***************************************************************************************
tony63 0:edc50cf04b46 178 int checkSignalStrength(void)
tony63 0:edc50cf04b46 179 {
tony63 0:edc50cf04b46 180 char gprsBuffer[100];
tony63 0:edc50cf04b46 181 int index,count = 0;
tony63 0:edc50cf04b46 182 cleanBuffer(gprsBuffer,100);
tony63 0:edc50cf04b46 183 while(count < 3) {
tony63 0:edc50cf04b46 184 sendCmd("AT+CSQ\r\n");
tony63 0:edc50cf04b46 185 readBuffer(gprsBuffer,25);
tony63 0:edc50cf04b46 186 if(sscanf(gprsBuffer, "AT+CSQ$$$$+CSQ: %d", &index)>0) {
tony63 0:edc50cf04b46 187 break;
tony63 0:edc50cf04b46 188 }
tony63 0:edc50cf04b46 189 count++;
tony63 0:edc50cf04b46 190 wait(1);
tony63 0:edc50cf04b46 191 }
tony63 0:edc50cf04b46 192 if(count == 3) {
tony63 0:edc50cf04b46 193 return -1;
tony63 0:edc50cf04b46 194 }
tony63 0:edc50cf04b46 195 return index;
tony63 0:edc50cf04b46 196 }
tony63 0:edc50cf04b46 197
tony63 0:edc50cf04b46 198 /* esta funcion de abajo inicaliza el modem se compone de un grupo de subfunciones ya definidas previamente
tony63 0:edc50cf04b46 199 primero chequea que este vivo
tony63 0:edc50cf04b46 200 segundo chequea el estado de la simcard
tony63 0:edc50cf04b46 201 tercero chequea la intencidad de señal celular
tony63 0:edc50cf04b46 202 cuarto aplica la configuracion
tony63 0:edc50cf04b46 203 y si todo sale bien retorna un cero que en la programacion hay que validar
tony63 0:edc50cf04b46 204 con alguna expresion logica
tony63 0:edc50cf04b46 205 */
tony63 0:edc50cf04b46 206 //***************************************************************************************
tony63 0:edc50cf04b46 207 int init()
tony63 0:edc50cf04b46 208 {
tony63 2:0377af333c98 209 if (0 != sendCmdAndWaitForResp("AT\r\n", "OK", 3)){
tony63 2:0377af333c98 210 return -1;
tony63 2:0377af333c98 211 }
tony63 2:0377af333c98 212 if (0 != sendCmdAndWaitForResp("AT+CNMI=1,1\r\n", "OK", 3)){
tony63 2:0377af333c98 213 return -1;
tony63 2:0377af333c98 214 }
tony63 2:0377af333c98 215 if (0 != sendCmdAndWaitForResp("AT+CMGF=0\r\n", "OK", 3)){
tony63 0:edc50cf04b46 216 return -1;
tony63 2:0377af333c98 217 }
tony63 2:0377af333c98 218 if (0 != sendCmdAndWaitForResp("AT+CBST=0,0,1\r\n", "OK", 3)){
tony63 0:edc50cf04b46 219 return -1;
tony63 2:0377af333c98 220 }
tony63 2:0377af333c98 221 LedVerde=0;
tony63 2:0377af333c98 222 return 0;
tony63 2:0377af333c98 223 }
tony63 2:0377af333c98 224
tony63 0:edc50cf04b46 225 /* esta funcion de abajo intenta leer un mensaje de texto en formato PDU o HEX
tony63 0:edc50cf04b46 226 y si todo sale bien retorna un cero que en la programacion hay que validar
tony63 0:edc50cf04b46 227 con alguna expresion logica
tony63 0:edc50cf04b46 228 */
tony63 0:edc50cf04b46 229 //***************************************************************************************
tony63 0:edc50cf04b46 230 int readSMSpdu(char *message, int index)
tony63 0:edc50cf04b46 231 {
tony63 0:edc50cf04b46 232 int i = 0;
tony63 0:edc50cf04b46 233 char gprsBuffer[100];
tony63 0:edc50cf04b46 234 char *p,*s;
tony63 0:edc50cf04b46 235 GSM.printf("AT+CMGR=%d\r\n",index);
tony63 0:edc50cf04b46 236 cleanBuffer(gprsBuffer,100);
tony63 0:edc50cf04b46 237 readBuffer(gprsBuffer,100);
tony63 0:edc50cf04b46 238 if(NULL == ( s = strstr(gprsBuffer,"+CMGR"))) {
tony63 0:edc50cf04b46 239 return -1;
tony63 0:edc50cf04b46 240 }
tony63 0:edc50cf04b46 241 if(NULL != ( s = strstr(gprsBuffer,"+32"))) {
tony63 0:edc50cf04b46 242 p = s + 6;
tony63 0:edc50cf04b46 243 while((*p != '$')&&(i < 5)) {
tony63 0:edc50cf04b46 244 message[i++] = *(p++);
tony63 0:edc50cf04b46 245 }
tony63 0:edc50cf04b46 246 message[i] = '\0';
tony63 0:edc50cf04b46 247 }
tony63 0:edc50cf04b46 248 return 0;
tony63 0:edc50cf04b46 249 }
tony63 0:edc50cf04b46 250 /* esta funcion de abajo borra mensajes SMS del modem
tony63 0:edc50cf04b46 251 y si todo sale bien retorna un cero que en la programacion hay que validar
tony63 0:edc50cf04b46 252 con alguna expresion logica
tony63 0:edc50cf04b46 253 */
tony63 0:edc50cf04b46 254 //***************************************************************************************
tony63 0:edc50cf04b46 255 int deleteSMS(int index)
tony63 0:edc50cf04b46 256 {
tony63 0:edc50cf04b46 257 char cmd[32];
tony63 0:edc50cf04b46 258 snprintf(cmd,sizeof(cmd),"AT+CMGD=%d\r\n",index);
tony63 0:edc50cf04b46 259 sendCmd(cmd);
tony63 0:edc50cf04b46 260 return 0;
tony63 0:edc50cf04b46 261 }
tony63 2:0377af333c98 262 //************************************************************************************
tony63 0:edc50cf04b46 263
tony63 2:0377af333c98 264 //RUTINA PRINCIPAL*******************************************************************************************
tony63 0:edc50cf04b46 265 int main(void)
tony63 2:0377af333c98 266 {
PabloViana 3:7988fa80dea8 267
tony63 2:0377af333c98 268 //configuramos los puertos seriales
tony63 2:0377af333c98 269 GSM.baud(9600);//configura los baudios de la FRDMKL25Z en 9600
tony63 2:0377af333c98 270 GSM.format(8,Serial::None,1); //configura el formato de los datos de la UART
PabloViana 3:7988fa80dea8 271 //apagamos los 3 leds
tony63 0:edc50cf04b46 272 LedVerde=1;
tony63 0:edc50cf04b46 273 LedRojo=1;
tony63 0:edc50cf04b46 274 LedAzul=1;
PabloViana 3:7988fa80dea8 275 wait(5);
tony63 2:0377af333c98 276 //quito el eco del modem
tony63 2:0377af333c98 277 GSM.printf("ATE0\r\n");
tony63 2:0377af333c98 278 pc.printf("ATE0\r\n");
tony63 2:0377af333c98 279 for(i=0;i<6;i++){
tony63 2:0377af333c98 280 GSM.printf("AT+CMGD=%d\r\n",i);
tony63 2:0377af333c98 281 wait(0.2);
tony63 2:0377af333c98 282 }
PabloViana 3:7988fa80dea8 283 //Se intenta inicializar el módulo, en caso de que supere 10 intentos se termina el programa;
PabloViana 3:7988fa80dea8 284 while(init()<0)
PabloViana 3:7988fa80dea8 285 {
PabloViana 3:7988fa80dea8 286 intentos++; if (intentos==10){pc.printf("El programa terminara...\n\r");LedRojo=0;return 0;}
PabloViana 3:7988fa80dea8 287 }
PabloViana 3:7988fa80dea8 288
PabloViana 3:7988fa80dea8 289 wait(1);
PabloViana 3:7988fa80dea8 290 LedVerde=1; //Apgo el led verde;
PabloViana 3:7988fa80dea8 291 pc.printf("El sistema está listo para iniciar la recepción de SMS\n\r");
tony63 2:0377af333c98 292 //*********************************************************************************************************************
tony63 2:0377af333c98 293 while(1){
PabloViana 3:7988fa80dea8 294
tony63 2:0377af333c98 295
tony63 2:0377af333c98 296 //inicia la recepcion de un mensaje de texto
tony63 2:0377af333c98 297 if (GSM.readable()) {
tony63 2:0377af333c98 298 readBuffer(buffer,100);
PabloViana 3:7988fa80dea8 299 wait(0.2);
tony63 2:0377af333c98 300 for(i=0;i<5;i++)
tony63 2:0377af333c98 301 {
PabloViana 3:7988fa80dea8 302 resp[i]=buffer[i];
tony63 2:0377af333c98 303 }
tony63 2:0377af333c98 304
PabloViana 3:7988fa80dea8 305 wait(0.2);
PabloViana 3:7988fa80dea8 306
tony63 2:0377af333c98 307 if(strcmp("$$+CM",resp) == 0){ //COMPARA resp con "+CMTI"
PabloViana 3:7988fa80dea8 308
PabloViana 3:7988fa80dea8 309 pc.printf("Nuevo mensaje de texto\r\n");
PabloViana 3:7988fa80dea8 310
tony63 2:0377af333c98 311 cleanBuffer(buffer,10);
PabloViana 3:7988fa80dea8 312
tony63 2:0377af333c98 313 wait(0.5);
PabloViana 3:7988fa80dea8 314
tony63 2:0377af333c98 315 GSM.printf("AT+CMGL=0\r\n");//envio comando para leer mensaje
PabloViana 3:7988fa80dea8 316
tony63 2:0377af333c98 317 pc.printf("AT+CMGL=0\r\n");
PabloViana 3:7988fa80dea8 318
PabloViana 3:7988fa80dea8 319 GSM.printf("AT+CMGD=0\r\n");
PabloViana 3:7988fa80dea8 320
tony63 2:0377af333c98 321 readBuffer(buffer,100);
PabloViana 3:7988fa80dea8 322
PabloViana 3:7988fa80dea8 323
tony63 2:0377af333c98 324 pc.printf("%s\r\n",buffer);
PabloViana 3:7988fa80dea8 325
tony63 2:0377af333c98 326 wait(5);
tony63 2:0377af333c98 327 //leer telefono
tony63 2:0377af333c98 328 for(i=0;i<10;i++){
tony63 2:0377af333c98 329 tel[i]=buffer[i+40];
tony63 2:0377af333c98 330 }
PabloViana 3:7988fa80dea8 331 pc.printf("Remitente: %s\r\n",tel);
PabloViana 3:7988fa80dea8 332
tony63 2:0377af333c98 333 //leer tamaño
tony63 2:0377af333c98 334 for(i=0;i<2;i++){
tony63 2:0377af333c98 335 tam[i]=buffer[i+68];
tony63 2:0377af333c98 336 }
PabloViana 3:7988fa80dea8 337
tony63 2:0377af333c98 338 //leer mensaje
tony63 2:0377af333c98 339 for(i=0;i<14;i++){
tony63 2:0377af333c98 340 msg[i]=buffer[i+70];
tony63 2:0377af333c98 341 }
PabloViana 3:7988fa80dea8 342 pc.printf("Mensaje Recibido: %s\r\n",msg);
PabloViana 3:7988fa80dea8 343
PabloViana 3:7988fa80dea8 344
PabloViana 3:7988fa80dea8 345 cleanBuffer(buffer,100); //Limpiar Buffer;
PabloViana 3:7988fa80dea8 346
PabloViana 3:7988fa80dea8 347 pc.printf("\n\r");
PabloViana 3:7988fa80dea8 348
PabloViana 3:7988fa80dea8 349 if(strcmp("CB347D8C2EBB01",msg) == 0) //Envío la palabra Kitchen - Despliego en pantalla
PabloViana 3:7988fa80dea8 350 {
PabloViana 3:7988fa80dea8 351 pc.printf("Se verificara el estado de las hornillas y se apagaran las que esten encendidas\r\n");
PabloViana 3:7988fa80dea8 352 //Cómo se reconoce la palabra Kitchen, entonces se envía la palabra OK como respuesta;
PabloViana 3:7988fa80dea8 353 GSM.printf("AT+CMGS=15\r\n");
PabloViana 3:7988fa80dea8 354 wait(0.2);
PabloViana 3:7988fa80dea8 355 GSM.printf("0011000A91");
PabloViana 3:7988fa80dea8 356 pc.printf("0011000A91");
PabloViana 3:7988fa80dea8 357 GSM.printf("%s",tel);
PabloViana 3:7988fa80dea8 358 pc.printf("%s",tel);
PabloViana 3:7988fa80dea8 359 GSM.printf("0000AA03CF35");
PabloViana 3:7988fa80dea8 360 pc.printf("0000AA03CF35\n\r");
PabloViana 3:7988fa80dea8 361 GSM.putc((char)0x1A); //ctrl-z
PabloViana 3:7988fa80dea8 362 LedAzul =0;wait(2);LedAzul=1; //Enciendo y apago el led Azul paara indicar que se realiza una instrucción;
tony63 2:0377af333c98 363 }
tony63 2:0377af333c98 364
PabloViana 3:7988fa80dea8 365 else if(strcmp("C672990C2FD301",msg) == 0) //Envío la palabra Feedpet
PabloViana 3:7988fa80dea8 366 {
PabloViana 3:7988fa80dea8 367 pc.printf("Se activara el sistema de alimentacion automatico de mascotas...\r\n");
PabloViana 3:7988fa80dea8 368
PabloViana 3:7988fa80dea8 369 //Se reconoce la instrucción FeedPet, se responde OK;
PabloViana 3:7988fa80dea8 370 GSM.printf("AT+CMGS=15\r\n");
PabloViana 3:7988fa80dea8 371 wait(0.2);
PabloViana 3:7988fa80dea8 372 GSM.printf("0011000A91");
PabloViana 3:7988fa80dea8 373 GSM.printf("%s",tel);
PabloViana 3:7988fa80dea8 374 GSM.printf("0000AA03CF35");
PabloViana 3:7988fa80dea8 375 GSM.putc((char)0x1A); //ctrl-z
PabloViana 3:7988fa80dea8 376 LedAzul =0;wait(2);LedAzul=1; //Enciendo y apago el led Azul paara indicar que se realiza una instrucción;
PabloViana 3:7988fa80dea8 377
PabloViana 3:7988fa80dea8 378 }
tony63 2:0377af333c98 379
PabloViana 3:7988fa80dea8 380
PabloViana 3:7988fa80dea8 381 else if(strcmp("C872985E96C700",msg) == 0) //Envío la palabra Heater1;
PabloViana 3:7988fa80dea8 382 {
PabloViana 3:7988fa80dea8 383 pc.printf("Se activara el sistema de calefaccion...\r\n");
PabloViana 3:7988fa80dea8 384 //Se Reconoce la instrucción Heater1, se responde Ok.
PabloViana 3:7988fa80dea8 385 GSM.printf("AT+CMGS=15\r\n");
PabloViana 3:7988fa80dea8 386 wait(0.2);
PabloViana 3:7988fa80dea8 387 GSM.printf("0011000A91");
PabloViana 3:7988fa80dea8 388 GSM.printf("%s",tel);
PabloViana 3:7988fa80dea8 389 GSM.printf("0000AA03CF35");
PabloViana 3:7988fa80dea8 390 GSM.putc((char)0x1A); //ctrl-z
PabloViana 3:7988fa80dea8 391 LedAzul =0;wait(2);LedAzul=1; //Enciendo y apago el led Azul paara indicar que se realiza una instrucción;
PabloViana 3:7988fa80dea8 392
PabloViana 3:7988fa80dea8 393 }
PabloViana 3:7988fa80dea8 394 else {
PabloViana 3:7988fa80dea8 395 pc.printf("No se reconoce ninguna instruccion...\n\r");
PabloViana 3:7988fa80dea8 396 //No se reconoce ninguna instrucción se responde con la palabra Again;
PabloViana 3:7988fa80dea8 397 GSM.printf("AT+CMGS=18\r\n");
PabloViana 3:7988fa80dea8 398 wait(0.2);
PabloViana 3:7988fa80dea8 399 GSM.printf("0011000A91");
PabloViana 3:7988fa80dea8 400 pc.printf("PUD: 0011000A91");
PabloViana 3:7988fa80dea8 401 GSM.printf("%s",tel);
PabloViana 3:7988fa80dea8 402 pc.printf("%s",tel);
PabloViana 3:7988fa80dea8 403 GSM.printf("0000AA06C17338ED06\r\n");
PabloViana 3:7988fa80dea8 404 pc.printf("0000AA06C17338ED06\r\n");
PabloViana 3:7988fa80dea8 405 GSM.putc((char)0x1A); //ctrl-z
PabloViana 3:7988fa80dea8 406 LedRojo =0;wait(2);LedRojo=1; //Enciendo y apago el led rojo paara indicar que no se reconoce la instrucción;
PabloViana 3:7988fa80dea8 407 } //Ninguna orden reconocida;
tony63 2:0377af333c98 408
tony63 2:0377af333c98 409 }
tony63 1:6b506dde0a6e 410 }
tony63 2:0377af333c98 411
tony63 2:0377af333c98 412
tony63 2:0377af333c98 413 }
tony63 2:0377af333c98 414
PabloViana 3:7988fa80dea8 415
tony63 1:6b506dde0a6e 416
tony63 2:0377af333c98 417
tony63 2:0377af333c98 418 }