![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Enviar coordenadas GPS a smartphone vía GSM y simular encendido y apagado del vehículo
Fork of GPS_7 by
main.cpp
- Committer:
- Equipo2_2015_1
- Date:
- 2015-05-27
- Revision:
- 3:62590e5c0ca1
- Parent:
- 2:5abd8a794703
File content as of revision 3:62590e5c0ca1:
#include "mbed.h" #include "string.h" #include "GPS.h" //Juan Esteban Botero Holguin //Juan Felipe Vanegas //Danie Barrios Serial gsm(PTA1,PTA2); // Puertos de comunicación serial GSM Serial pc(USBTX,USBRX); // Puerto de comunicación serial para el envío de datos (por termite 3.1) GPS gps(PTC12, PTC13); //Puertos de comunicación serial para el GPS (Dongle) DigitalOut myled(LED3); //LED para simular encendido y apagado del auto vía red GSM char buf[100], bufm[18], tam[2], pdu[]=""; // Variables para almacenar las cadenas de caracteres char vect1[]=""; char vect2[]=""; char DE[255]; char DS[255]; int i,K,C,LENOUT,LENIN, w; float lo,la; char LINK[]={"http://maps.google.com/?q="}; // Link que será enviado al smartphone para acceder a la ubicación presisa int main() { gsm.baud(9600); // Configuracion de los baudios gsm.format(8,Serial::None,1); //parámetros de comunicación pc.printf("Enviamos AT \n"); gsm.printf("AT\r\n"); gsm.scanf("%s",buf); pc.printf(">%s\n",buf); wait(1); gsm.printf("AT+CNMI=1,1\r\n"); pc.printf("AT+CNMI=1,1\r\n"); gsm.scanf("%s",buf); gsm.scanf("%s",buf); pc.printf(">%s\n",buf); wait(1); gsm.printf("AT+CPMS= \"SM\",\"SM\",\"SM\"\r\n"); pc.printf("AT+CPMS= \"SM\",\"SM\",\"SM\"\n"); gsm.scanf("%s",buf); gsm.scanf("%s",buf); gsm.scanf("%s",buf); pc.printf(">%s\n",buf); wait(1); gsm.printf("AT+CMGF=0\r\n"); pc.printf("AT+CMGF=0\r\n"); gsm.scanf("%s",buf); gsm.scanf("%s",buf); pc.printf(">%s\n",buf); gsm.printf("CBST=0,0,1\r\n"); while(1) { pc.printf("\n Esperando Mensaje \n"); gsm.scanf("%s",buf); pc.printf("%s",buf); i = strlen(buf); if(i>3){ pc.printf("Llego un Mensaje \n"); gsm.printf("AT+CMGR=1 \r\n"); // Se lee el menjsae que ente en el indice 1. gsm.scanf("%s",buf); gsm.scanf("%s",buf); gsm.scanf("%s",buf); gsm.scanf("%s",buf); pc.printf(">%s",buf); //Mostrar la cadena en PDU del mensaje leido. i = strlen(buf); pc.printf("\n El tamaño del mensaje es %d \n",i); if(i==56){ pc.printf("\n LLego on"); myled = 0; gsm.printf("AT+CMGD=1\r\n"); gsm.scanf("%s",buf); pc.printf("\n%s\n",buf); } if(i==58){ pc.printf("\n LLego off"); myled = 1; gsm.printf("AT+CMGD=1\r\n"); gsm.scanf("%s",buf); pc.printf("\n%s\n",buf); } if(i==62){ gsm.baud(9600); pc.printf("gsm.baud(9600)\n"); gsm.format(8,Serial::None,1); pc.printf("gsm.format(8,Serial::None,1)\n"); pc.printf("Enviamos AT\n"); gsm.printf("AT\r\n"); gsm.scanf("%s",buf); gsm.scanf("%s",buf); pc.printf(">%s\n",buf); gsm.printf("AT+CMGR=1\r\n"); // Se lee el mensaje que entre en el indice 1. pc.printf("AT+CMGR=1\r\n"); gsm.scanf("%s",buf); gsm.scanf("%s",buf); gsm.scanf("%s",buf); gsm.scanf("%s",buf); pc.printf(">%s\n",buf); pc.printf("Esperando GPS \n"); while(1) { i=0; if(gps.sample()& i==0) { pc.printf("Comienza el gps \n"); //Toma de datos del gps (SatGen vía Dongle) y concatenacion para armar los datos. la=gps.longitude; lo=gps.latitude; sprintf(vect1, "%f", lo); strcat(LINK,vect1); strcat(LINK,","); wait(3); sprintf(vect2, "%f", la); strcat(LINK,vect2); strcat(DE,LINK); pc.printf("%s\n",LINK); //Conversion de los datos "LINK" a formatdo PDU LENIN=strlen(DE); K=0;C=0; for (i=0;i < LENIN;i++){ DS[i]=DE[i+C]>>K | DE[i+C+1]<<(7-K); if (DS[i]==0x00) {LENOUT=i; goto salir;} K++; if (K==7) {K=0;C++;} // se chequea que ya se acabaron los bits en un ciclo de conversion. } //-------------------------------------------------------------- salir: pc.printf("DE\n"); for (i=0;i < LENIN;i++){ pc.printf("%X",DE[i]); } pc.printf("\n DS \n"); for (i=0;i<LENOUT;i++){ pc.printf("%02X",DS[i]&0x000000FF); } pc.printf("\n LENOUT:%d,LENIN:%d\r\n",LENOUT,strlen(DE)); // Enviamos el mensaje pc.printf("Comienza SMS \n"); gsm.printf("AT+CMGS=53\r\n"); pc.printf("\n AT+CMGS=53\r\n"); wait(0.5); gsm.printf("0011000A9103444386860000AA"); pc.printf("0011000A9103444386860000AA"); wait(0.5); gsm.printf("%2X",LENOUT); pc.printf("%2X",LENOUT); for (i=0;i < LENOUT;i++){ gsm.printf("%02X",DS[i]&0x000000FF); pc.printf("%02X",DS[i]&0x000000FF); wait(0.3); } gsm.putc((char)0x1A); gsm.scanf("%s",buf); gsm.scanf("%s",buf); pc.printf("\n lo que devuelve el cel %s \n",buf); i=1; gsm.printf("AT+CMGD=1\r\n"); pc.printf("\n Se sale de while para la lectura de gps \n "); gsm.scanf("%s",buf); pc.printf(">%s",buf); goto s; } } } s: gsm.scanf("%s",buf); pc.printf("%s",buf); } } }