TRAMES NMEA

Mise en situation

Le but est de récupérer quelques trames GPS NMEA 0183 et de les décoder. On utilise, pour cela, un module GPS de type GY-NEO6MV02, ainsi qu'une carte Arduino UNO.

Hypothèses et données

Quelques trames récupérées sur le moniteur série

$GPGGA,092023.00,4352.29961,N,00119.30655,W,1,04,2.56,10.5,M,49.2,M,,*73
$GPGSA,A,3,08,16,27,10,,,,,,,,,7.57,2.56,7.12*09
$GPGSV,2,1,05,08,51,302,31,10,54,117,32,16,56,179,37,21,28,248,30*7D
$GPGSV,2,2,05,27,79,018,35*48
$GPGLL,4352.29961,N,00119.30655,W,092023.00,A,A*78
$GPRMC,092024.00,A,4352.29957,N,00119.30660,W,0.038,,230624,,,A*6F
$GPVTG,,T,,M,0.038,N,0.070,K,A*2F
$GPGGA,092024.00,4352.29957,N,00119.30660,W,1,04,2.56,10.0,M,49.2,M,,*72
$GPGSA,A,3,08,16,27,10,,,,,,,,,7.57,2.56,7.12*09
$GPGSV,2,1,05,08,51,302,32,10,54,117,32,16,56,179,37,21,28,248,29*76
$GPGSV,2,2,05,27,79,018,35*48
$GPGLL,4352.29957,N,00119.30660,W,092024.00,A,A*7C
$GPRMC,092025.00,A,4352.29952,N,00119.30672,W,0.078,,230624,,,A*6C
$GPVTG,,T,,M,0.078,N,0.145,K,A*2C
$GPGGA,092025.00,4352.29952,N,00119.30672,W,1,04,2.56,9.8,M,49.2,M,,*45
$GPGSA,A,3,08,16,27,10,,,,,,,,,7.57,2.56,7.13*08
$GPGSV,2,1,05,08,51,302,31,10,54,117,32,16,56,179,37,21,28,248,29*75

Heures UTC et française

L’heure UTC (Universal Time Coordinated) traduite en français par Temps Universel Coordonné, donne l’heure de référence dans le monde entier.

Heure française
HiverUTC + 1
EtéUTC + 2

Documentation

http://eleydet.free.fr/SNT/ressources/protocole_NMEA/index.html

Etude demandée

  1. A l'aide de la documentation proposée ci-dessus, compléter le tableau par des croix montrant les informations fournies par chaque type de trame.
    Type de trameGGAGLLGSAGSVVTGRMC
    Latitude
    Longitude
    Altitude
    Heure
    Date
    Cap
    Vitesse
    Satellites en vue
  2. Déduire des trames récupérées sur le moniteur série :
  3. Rechercher :

Annexes

Schéma de câblage

Programme pour la carte Arduino UNO

#include <SoftwareSerial.h>
SoftwareSerial ss(3,2);

void setup(){
  Serial.begin(9600);
  ss.begin(9600);
}

void loop(){
  while (ss.available() > 0) {
    byte lettre = ss.read();
    Serial.write(lettre);
  }
}