Les trames NMEA de type GGA

Les trames NMEA sont des chaines de caractères, issues d'un récepteur gps
après que ce dernier ai traité les signaux émis par les satellites de communication.
Une fois traitées , ces trames sont acheminées par voie série à 4800 bauds vers le processeur chargé de leur exploitation . Ces trames sont définies par la norme NMEA 0183 de la National Marine Electronics Association.

Les 6 premiers caractères d'une trame NMEA sont $GP suivis d'un identifiant sur 3 caractères
( GGA,GSA,GSV,RMC, etc ...).
Les deux derniers caractères d'une trame sont retour chariot (hex 0x0D) et saut de ligne (hex 0x0A).
Les trames sont constituées de champs, séparés par une virgule.
Nous nous intéressons ici aux trames GGA qui fournissent , entre autres, l'heure UTC ,la latitude
la longitude, l'altitude.

Structure des trames NMEA d'identifiant GGA

Toute trame GGA a la structure suivante :


tttttt,hhmmss.sss,ddmm.mmmm,h,dddmm.mmmm,l,f,ss,p.p,aa.a,m,gg.g,m,,0000*cc

exemple :
$GPGGA,143548.000,4921.4456,N,00315.0012,E,1,07,1.3,73.4,M,47.3,M,,0000*6F


     champ         offset       longueur       encodage            exemple
     ________________________________________________________________________
     tttttt        0            0              type de trame       $GPGGA
     hhmmss.sss    7            10             heure UTC           143548.000
     ddmm.mmmm     18           9              latitude            4921.4456
     h             28           1              N ou S              N
     dddmm.mmmm    38           10             longitude           00315.0012
     l             41           1              E ou W              E
     f             43           1              fix                 1
     ss            45           2              nbre satellites     07
     p.p           48           3              precision           1.3
     aa.a          52           V              altitude            73.4
     m             V            1              unités de mesure    M
     gg.g          V            3              écart-géoïde        47.3
     m             V            1              unités de mesure    M
     vide          V            0                                                  
     0000          V            4              ............        0000                                  
     *             V            1              ............        *
     cc            V            2              checksum            6F
     

Le codage des champs

Note : Une longueur marquée V indique que cette dernière est variable.
Il en est ainsi de l'altitude .
S'agissant d'un offset, s'il est marqué V, ce dernier est variable.
C'est le cas des champs qui suivent celui relatif à l'altitude.

hhmmss.sss
Ce champ donne l'heure UTC en heures,minutes,secondes (jusqu'au millième de seconde)
143548.000 code pour 14 heures 35 minutes 48.000 secondes

ddmm.mmmm
Ce champ donne la latitude en degrés et minutes . Le point sépare la partie entière
de la partie fractionnaire des minutes .
Ainsi 4921.4456 code pour 49 degrés 21.4456 minutes

h
Ce champ indique s'il s'agit de la latitude Nord (N) ou sud (S) .

dddmm.mmmm
Ce champ indique la longitude en degrés et minutes comme pour la latitude.
Ainsi 00315.0012 code pour 003 degrés 15.0012 minutes.

l
Ce champ indique s'il s'agit de la longitude Est (E) ou ouest (W).

f
Ce champ dénommé "fix" vaut toujours 1 pour les trames GGA valides.

ss
Ce champ indique le nombre de satellites visibles du récepteur gps.
Dans l'exemple cité 7 satellites sont visibles.

p.p
Ce champ est un indicateur de la qualité du positionnement (latitude,longitude)) données
par la trame GGA. Une valeur inférieure à 2 dénote une excellente qualité. Une valeur
supérieure à 8 dénote une information non acceptable.
La validité des informations données par la trame est liée au positionnement des satellites
vus par le récepteur GPS. Plus ils sont vus comme alignés, plus la précision est mauvaise.

aa.a
Ce champ indique l'altitude du récepteur gps par rapport au niveau moyen de la mer.
73.4 code pour 73.4 metres.

m
Ce champ indique la nature de l'unité choisie pour mesurer l'altitude.Ici il s'agit de metres.

gg.g
Ce champ est une indication de l'écart , par rapport au géoïde , des positions altimétriques
fournies par le gps . Comme pour l'altitude, le champ m qui lui succède fournit la nature
des unités choisies : ici en metres.

cc
Ce champ nous donne le checksum , exprimé par 2 caractères hexadécimaux, de la trame.
Ce checksum est déterminé comme étant le ou-exclusif calculé sur tous les caractères
de la trame compris entre le caractère de début '$' non compris et le caractère '*'
également non compris.( voir plus loin les explications détaillées).
Le checksum fournit une indication sur l'intègrité de la trame .