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

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
+//==============================================================================