IniSat Modèle 1 Version 2 TP 4 : Etude d'un capteur Exo 1 : Lecture température Exo 2 : GPS, décodage données GGA
Diff: gps.h
- Revision:
- 0:8b4bad2aad3f
- Child:
- 1:ec64d7748431
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gps.h Wed Jun 30 22:33:54 2021 +0000 @@ -0,0 +1,104 @@ +/* L80 QUECTEL GPS Module +* NMEA 0183 messages +*/ +#include "mbed.h" +// Commandes pour paramétrer le taux par seconde depuis chaque seconde (1 Hz) jusqu'à 10 fois par seconde (10Hz) +#define PMTK_SET_NMEA_UPDATE_1HZ "$PMTK220,1000*1F" +#define PMTK_SET_NMEA_UPDATE_5HZ "$PMTK220,200*2C" +#define PMTK_SET_NMEA_UPDATE_10HZ "$PMTK220,100*2F" + +// Code pour sélection de trame unique +#define TRAME_RMC "$PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*29" +#define TRAME_GGA "$PMTK314,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*29" +#define TRAME_RMC_GGA "$PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*28" +#define TRAME_ALL "$PMTK314,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0*28" + +#define Trame_TXT_On "$PQTXT,W,1,1*22" +#define Trame_TXT_Off "$PQTXT,W,0,1*23" + +// Selection de trames +void Select_Trame(char* trame) { + printStr((char*) trame); + printStr((char*)"\r\n"); + } + +// Lecture des trames NMEA du GPS + +char buffer[100]; +uint8_t rx_ptr = 0; +uint8_t rx_ok = 0; + +void Lect_GPS(void) { + + +} + +void Envoi_GPS(void) { + + pc.printf("GPS: %s\n\r",buffer); +} + +void GPS_Init(void) { // Bloquer les tickers pour envoyer une commande + rx_ok = 0; + Select_Trame((char*)Trame_TXT_Off); + Select_Trame((char*)TRAME_GGA); +} + +struct gps { + char *trame; // $GPGGA + char *horaire; // 143512.000 + char *lat; + char *ns; + char *longi; + char *ew; + char *fix; // 0 ou V -> pas de Fix >1 ou A -> Fix + char *nb_sat; + char *prec; + char *alt; + float latitude; + float longitude; + uint16_t altitude; + char fixe; +} gps; + +// Décodage Trame NMEA GGA +void GPS_Decodage (void) { + + + } +} +//============================================================================== +// Sélection de la trame GGA - +// Exemple : $GPGGA,143512.000,4347.7852,N,00418.9704,E,1,7,1.29,28.9,M,49.4,M,,*60 + +// UTC Position 143512.000 hhmmss.sss +// Latitude 4347.7852 ddmm.mmmm +// N/S Indicator N N=Nord - S=Sud +// Longitude 00418.9704 ddmm.mmmm +// W/E Indicator E W=Ouest - E=Est +// Position Fix Indicator 1 0-invalid 1-Valid +// Satellites Used 7 de 0 à 12 +// Précision 1.29 1-bon 9-mauvais +// Altitude 28.9 valeur +// Unité pour l'altitude M en mètre +// Autres informations +// Checksum *60 +//============================================================================== +// Sélection de la trame GLL - Géographic position - Latitude/Longitude +// Exemple : $GPGLL,3723.2475, N, 12158.3416, W, 161229.487, A*2C +//============================================================================== +// Sélection de la trame RMC - Utilisation pour les navires +// Exemple : $GPRMC,141147.000,A,4347.7885,N,00418.9737,E,0.00,350.58,280621,,,A*6D + +// UTC Position 141147.000 hhmmss.sss +// Fix Indicator A A-valid V-invalid +// Latitude 4347.7885 ddmm.mmmm +// N/S Indicator N N=Nord - S=Sud +// Longitude 00418.9737 ddmm.mmmm +// W/E Indicator E W=Ouest - E=Est +// Vitesse 0.00 en noeuds +// Route sur le fond 350.58 en degrés +// Date 280621 ddmmaa +// Autres informations +// Checksum *6D +//==============================================================================