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

Committer:
Giamarchi
Date:
Wed Jun 30 22:33:54 2021 +0000
Revision:
0:8b4bad2aad3f
Child:
1:ec64d7748431
TP4 Trame

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Giamarchi 0:8b4bad2aad3f 1 /* L80 QUECTEL GPS Module
Giamarchi 0:8b4bad2aad3f 2 * NMEA 0183 messages
Giamarchi 0:8b4bad2aad3f 3 */
Giamarchi 0:8b4bad2aad3f 4 #include "mbed.h"
Giamarchi 0:8b4bad2aad3f 5 // Commandes pour paramétrer le taux par seconde depuis chaque seconde (1 Hz) jusqu'à 10 fois par seconde (10Hz)
Giamarchi 0:8b4bad2aad3f 6 #define PMTK_SET_NMEA_UPDATE_1HZ "$PMTK220,1000*1F"
Giamarchi 0:8b4bad2aad3f 7 #define PMTK_SET_NMEA_UPDATE_5HZ "$PMTK220,200*2C"
Giamarchi 0:8b4bad2aad3f 8 #define PMTK_SET_NMEA_UPDATE_10HZ "$PMTK220,100*2F"
Giamarchi 0:8b4bad2aad3f 9
Giamarchi 0:8b4bad2aad3f 10 // Code pour sélection de trame unique
Giamarchi 0:8b4bad2aad3f 11 #define TRAME_RMC "$PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*29"
Giamarchi 0:8b4bad2aad3f 12 #define TRAME_GGA "$PMTK314,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*29"
Giamarchi 0:8b4bad2aad3f 13 #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"
Giamarchi 0:8b4bad2aad3f 14 #define TRAME_ALL "$PMTK314,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0*28"
Giamarchi 0:8b4bad2aad3f 15
Giamarchi 0:8b4bad2aad3f 16 #define Trame_TXT_On "$PQTXT,W,1,1*22"
Giamarchi 0:8b4bad2aad3f 17 #define Trame_TXT_Off "$PQTXT,W,0,1*23"
Giamarchi 0:8b4bad2aad3f 18
Giamarchi 0:8b4bad2aad3f 19 // Selection de trames
Giamarchi 0:8b4bad2aad3f 20 void Select_Trame(char* trame) {
Giamarchi 0:8b4bad2aad3f 21 printStr((char*) trame);
Giamarchi 0:8b4bad2aad3f 22 printStr((char*)"\r\n");
Giamarchi 0:8b4bad2aad3f 23 }
Giamarchi 0:8b4bad2aad3f 24
Giamarchi 0:8b4bad2aad3f 25 // Lecture des trames NMEA du GPS
Giamarchi 0:8b4bad2aad3f 26
Giamarchi 0:8b4bad2aad3f 27 char buffer[100];
Giamarchi 0:8b4bad2aad3f 28 uint8_t rx_ptr = 0;
Giamarchi 0:8b4bad2aad3f 29 uint8_t rx_ok = 0;
Giamarchi 0:8b4bad2aad3f 30
Giamarchi 0:8b4bad2aad3f 31 void Lect_GPS(void) {
Giamarchi 0:8b4bad2aad3f 32
Giamarchi 0:8b4bad2aad3f 33
Giamarchi 0:8b4bad2aad3f 34 }
Giamarchi 0:8b4bad2aad3f 35
Giamarchi 0:8b4bad2aad3f 36 void Envoi_GPS(void) {
Giamarchi 0:8b4bad2aad3f 37
Giamarchi 0:8b4bad2aad3f 38 pc.printf("GPS: %s\n\r",buffer);
Giamarchi 0:8b4bad2aad3f 39 }
Giamarchi 0:8b4bad2aad3f 40
Giamarchi 0:8b4bad2aad3f 41 void GPS_Init(void) { // Bloquer les tickers pour envoyer une commande
Giamarchi 0:8b4bad2aad3f 42 rx_ok = 0;
Giamarchi 0:8b4bad2aad3f 43 Select_Trame((char*)Trame_TXT_Off);
Giamarchi 0:8b4bad2aad3f 44 Select_Trame((char*)TRAME_GGA);
Giamarchi 0:8b4bad2aad3f 45 }
Giamarchi 0:8b4bad2aad3f 46
Giamarchi 0:8b4bad2aad3f 47 struct gps {
Giamarchi 0:8b4bad2aad3f 48 char *trame; // $GPGGA
Giamarchi 0:8b4bad2aad3f 49 char *horaire; // 143512.000
Giamarchi 0:8b4bad2aad3f 50 char *lat;
Giamarchi 0:8b4bad2aad3f 51 char *ns;
Giamarchi 0:8b4bad2aad3f 52 char *longi;
Giamarchi 0:8b4bad2aad3f 53 char *ew;
Giamarchi 0:8b4bad2aad3f 54 char *fix; // 0 ou V -> pas de Fix >1 ou A -> Fix
Giamarchi 0:8b4bad2aad3f 55 char *nb_sat;
Giamarchi 0:8b4bad2aad3f 56 char *prec;
Giamarchi 0:8b4bad2aad3f 57 char *alt;
Giamarchi 0:8b4bad2aad3f 58 float latitude;
Giamarchi 0:8b4bad2aad3f 59 float longitude;
Giamarchi 0:8b4bad2aad3f 60 uint16_t altitude;
Giamarchi 0:8b4bad2aad3f 61 char fixe;
Giamarchi 0:8b4bad2aad3f 62 } gps;
Giamarchi 0:8b4bad2aad3f 63
Giamarchi 0:8b4bad2aad3f 64 // Décodage Trame NMEA GGA
Giamarchi 0:8b4bad2aad3f 65 void GPS_Decodage (void) {
Giamarchi 0:8b4bad2aad3f 66
Giamarchi 0:8b4bad2aad3f 67
Giamarchi 0:8b4bad2aad3f 68 }
Giamarchi 0:8b4bad2aad3f 69 }
Giamarchi 0:8b4bad2aad3f 70 //==============================================================================
Giamarchi 0:8b4bad2aad3f 71 // Sélection de la trame GGA -
Giamarchi 0:8b4bad2aad3f 72 // Exemple : $GPGGA,143512.000,4347.7852,N,00418.9704,E,1,7,1.29,28.9,M,49.4,M,,*60
Giamarchi 0:8b4bad2aad3f 73
Giamarchi 0:8b4bad2aad3f 74 // UTC Position 143512.000 hhmmss.sss
Giamarchi 0:8b4bad2aad3f 75 // Latitude 4347.7852 ddmm.mmmm
Giamarchi 0:8b4bad2aad3f 76 // N/S Indicator N N=Nord - S=Sud
Giamarchi 0:8b4bad2aad3f 77 // Longitude 00418.9704 ddmm.mmmm
Giamarchi 0:8b4bad2aad3f 78 // W/E Indicator E W=Ouest - E=Est
Giamarchi 0:8b4bad2aad3f 79 // Position Fix Indicator 1 0-invalid 1-Valid
Giamarchi 0:8b4bad2aad3f 80 // Satellites Used 7 de 0 à 12
Giamarchi 0:8b4bad2aad3f 81 // Précision 1.29 1-bon 9-mauvais
Giamarchi 0:8b4bad2aad3f 82 // Altitude 28.9 valeur
Giamarchi 0:8b4bad2aad3f 83 // Unité pour l'altitude M en mètre
Giamarchi 0:8b4bad2aad3f 84 // Autres informations
Giamarchi 0:8b4bad2aad3f 85 // Checksum *60
Giamarchi 0:8b4bad2aad3f 86 //==============================================================================
Giamarchi 0:8b4bad2aad3f 87 // Sélection de la trame GLL - Géographic position - Latitude/Longitude
Giamarchi 0:8b4bad2aad3f 88 // Exemple : $GPGLL,3723.2475, N, 12158.3416, W, 161229.487, A*2C
Giamarchi 0:8b4bad2aad3f 89 //==============================================================================
Giamarchi 0:8b4bad2aad3f 90 // Sélection de la trame RMC - Utilisation pour les navires
Giamarchi 0:8b4bad2aad3f 91 // Exemple : $GPRMC,141147.000,A,4347.7885,N,00418.9737,E,0.00,350.58,280621,,,A*6D
Giamarchi 0:8b4bad2aad3f 92
Giamarchi 0:8b4bad2aad3f 93 // UTC Position 141147.000 hhmmss.sss
Giamarchi 0:8b4bad2aad3f 94 // Fix Indicator A A-valid V-invalid
Giamarchi 0:8b4bad2aad3f 95 // Latitude 4347.7885 ddmm.mmmm
Giamarchi 0:8b4bad2aad3f 96 // N/S Indicator N N=Nord - S=Sud
Giamarchi 0:8b4bad2aad3f 97 // Longitude 00418.9737 ddmm.mmmm
Giamarchi 0:8b4bad2aad3f 98 // W/E Indicator E W=Ouest - E=Est
Giamarchi 0:8b4bad2aad3f 99 // Vitesse 0.00 en noeuds
Giamarchi 0:8b4bad2aad3f 100 // Route sur le fond 350.58 en degrés
Giamarchi 0:8b4bad2aad3f 101 // Date 280621 ddmmaa
Giamarchi 0:8b4bad2aad3f 102 // Autres informations
Giamarchi 0:8b4bad2aad3f 103 // Checksum *6D
Giamarchi 0:8b4bad2aad3f 104 //==============================================================================