Module GSM

07 Jun 2019

Bonjour, je suis sur un projet de traceur de véhicule, le projet à pour but avec une carte embarquée , de savoir l'emplacement du véhicule grâce au GPS et envoyé par GSM. Le but est, lorsque que l'on envoi un message sur le module, il renvoi un message donnant la position du véhicule. Le module GPS - GSM est un sim808. J'ai avec le programme la position GPS du véhicule, maintenant je voudrais lorsque que j'envoi depuis un autre téléphone un message demandant la position, une réponse via message contenant les données GPS. JE ne sais pas comment démarrer

<< code title =sim808 >>

  1. include "mbed.h"

-------- Hyperterminal configuration 19200 bauds, 8-bit data, no parity --------

RawSerial pc(USBTX, USBRX); RawSerial sim808(PA_9,PA_10);TX-PC_6;RX PC_7 DigitalOut myled(LED1);

Ticker gps; int drapeau_gps; int nb_virgule,gps_lat,gps_long,gps_trame, gps_time, nb_car;

Ecrire sur le sim808 ce qui est transmi au pc void callback_pc() { char car; while(pc.readable()!=0) { car=pc.getc(); sim808.putc(car); } } Ecrire sur le pc ce qui est transmi au sim808 void callback_sim808() { char car; while(sim808.readable()!=0) { car=sim808.getc(); if(drapeau_gps==1) { if (car==',') { nb_virgule++; nb_car=0; } if (nb_virgule==2) { if(car=='.') nb_car=0; if( (car<='9') && (car >='0')) { nb_car++; if (nb_car>4) { gps_time=gps_time*10+(car-'0'); } } } if ((nb_virgule==3) && (car<='9') && (car >='0')) { gps_lat=gps_lat*10+(car-'0'); } if ((nb_virgule==4) && (car<='9') && (car >='0')) { gps_long=gps_long*10+(car-'0'); } if (nb_virgule==5) { gps_trame=1; } } pc.putc(car); } }

void lire_GPS_GGA() { sim808.printf("AT\n\r"); wait(0.2); sim808.printf("AT+CGNSPWR=1\n\r"); wait(0.2); sim808.printf("AT+CGNSSEQ=GGA\n\r"); wait(0.2); drapeau_gps=1; nb_virgule=0; gps_lat=0; gps_long=0; gps_trame=0; gps_time=0; nb_car=0; sim808.printf("AT+CGNSINF\n\r");

} int main() { drapeau_gps=0; nb_virgule=0; gps_lat=0; gps_long=0; gps_trame=0; gps_time=0; nb_car=0; pc.baud(19200); Defini le nombre de bits par secondes sim808.baud(19200); Défini le nombre de bits par secondes wait_ms(3000); Attendre 3 secondes

pc.attach(&callback_pc); sim808.attach(&callback_sim808);

gps.attach(&lire_GPS_GGA,10);

sim808.printf("AT\n\r"); Test the connection wait_ms(1000); Attendre 1 secondes

sim808.printf("AT+CMGF=1\n"); Changement en mode texte sur hercules wait_ms(1000); Attendre 1 secondes

sim808.printf("AT+CREG?\n"); Test présence réseau GSM wait_ms(1000); Attendre 1 secondes

sim808.printf("AT+CMGS=\"0676596770\"\n"); Commande envoi de message wait_ms(1000); Attendre 1 secondes sim808.printf("Demande de position\x1A"); Ecriture du contenu du message et caractère Ctrl+Z pour envoyer message (\x1A) wait_ms(1000); Attendre 1 secondes

while(1) { wait(5); lire_GPS_GGA(); if (gps_trame==1) { pc.printf(" lat=%d , long=%d , time = %d \n\r",gps_lat, gps_long, gps_time);

gps_trame=0; }

}

}

<< / code >>