Vous êtes sur la page 1sur 3

Activité : Le protocole NMEA

Objectif : Décoder une trame NMEA pour déterminer des coordonnées géographiques qui y sont
inscrites.
Introduction
Un récepteur GPS crée une chaîne de caractère appelée trame, à partir des informations issues des
satellites. Celle-ci a une structure imposée par une norme appelée NMEA-0183.
Comment peut-on récupérer cette trame ?
Comment convertir la trame fournie par le GPS en information de géolocalisation ?
I Le protocole NMEA
1 Qu’est ce que le protocole NMEA ?
La National Marine & Electronics Association (NMEA) est une association américaine à but non
lucratif fondée par un groupement de professionnels de l’industrie de l’électronique des
périphériques de marine, conjointement avec des fabricants, des distributeurs, des revendeurs et
des institutions d’enseignement. L’un de ses objectifs et d’harmoniser et de standardiser les
équipements de la marine. Pour simplifier on peut considérer le standard NMEA comme le protocole
de transmission des données entre les instruments et les équipements électroniques liés au GPS.
2 La structure d’une trame NMEA produite par un GPS
Dans le standard NMEA-0183, toutes les données sont transmises sous la forme de caractères ASCII,
tous imprimables, et de caractères [CR] (retour chariot) et [LF](Retour à la ligne), à la vitesse de
transmission de 4800 bauds (nombre de symboles transmis par seconde). Pour lire les informations
inscrites dans une trame, il est nécessaire de connaître ses règles d’écriture.
Par exemple, décryptons la trame suivante :
$GPGGA,073028.314,4359.5071,N,00727.1158,E,1,04,2.1,2.5,M,,,,0000*43

Champ Valeur Traduction


$ Début d’une trame

Consortium GP Global Positioning System (GPS) (GA pour Galileo, GL pour Glonass)
Type de trame GGA Trame GGA (RMC, GLL)
Heure d’envoi 073028.314 07 h 30 min 28,314 s
Latitude 4359.5071 43° 59,5071 min
Orientation latitude N Nord
Longitude 00727.1158 007° 27,1158 min
Orientation longitude E Est
Positionnement 1 0 = point non calé, 1 = point calé, 2 = précision supérieure, 6 = point
estimé
Nombre de satellites 04 Nombre de satellites utilisés pour le calcul
Précision 2.1 Fiabilité mesurée (1 = optimale, 9 = mauvais)
Altitude 2.5 Altitude de l’antenne par rapport au niveau de la mer
Unité d’altitude M Mètres
Champ vide ,,,,0000

Checksum *43 Numéro de référence de la trame qui permet au système de


détecter une éventuelle erreur de transmission.
a)A l’aide de l’exemple ci-dessus, traduire la trame NMEA suivante :

$GPGGA,145702.00,3749.1833, N,12228.7167, O,1,07,1.19,67,M,,,*0

Nombre de
Heure d’envoi Latitude Longitude Altitude
satellites

14 h 57 minutes 2,00 secs 37° 49,1833 min Nord 122° 28,7167 min Ouest 07 satellites reçus 67 m

b) En vous inspirant de la question précédente, traduire également la trame suivante qui est de type
GLL au lieu de GGA. Son format est légèrement différent, elle donne seulement la latitude, la
longitude et l’heure. Le « A » de la fin signifie juste que les données sont valides.

$GPGLL,4851.5000, N, 00217.6667, E, 225444, A

Heure d’envoi Latitude Longitude

22 h 54 minutes 44 secs 48° 51,5000 min Nord 002° 17,6667 min

II. Traitement d’une trame NMEA avec Python


1 Exécuter le programme
Le fichier trame_nmea.py (téléchargeable dans Pronote et sur Moodle) est un programme qui décrypte une trame
NMEA pour en afficher les informations dans le Shell (à droite de la fenêtre). Tel qu’il est écrit, la trame analysée
(ligne 10) est celle de la question 1.2.a. Exécuter le programme et vérifier vos réponses à cette question.
Un fichier html nommé « maCarte.html» est également crée lors de l’exécution du programme, le trouver et l’ouvrir
dans un navigateur internet.
Remarque : S’il n’est pas créé dans le même répertoire que celui où est enregistré le programme Python, exécutez à
nouveau le programme en choisissant « Run File as Script » dans le menu « Run » (raccourci Ctrl+Shift+E).

A quel endroit précis était le récepteur GPS lorsqu’il a créé cette trame NMEA ?
L'heure est 14 h 57 min 02 s
La latitude est 37° 49.1833 min Nord
La longitude est 122° 28.7167 min Ouest
Le positionnement est 1
Le nombre de satellites reçus vaut 07
La précision sur une échelle de 1 à 9 vaut 1.19
L'altitude est de 67m.
Les coordonnées se trouvent dans le Pacifique Nord.

2 Changer la position
Modifier la trame NMEA du programme en y insérant la latitude et la longitude de la question 1.2.b.
Puis exécutez à nouveau le programme et vérifier que l’endroit correspondant est, cette fois, un endroit bien
particulier situé à Paris.
Quel est cet endroit ?
………………………………………………………………………………………………………………………………………………………………………

Sur la carte créée précédemment, vous pouvez voir un marqueur au centre. Si vous cliquez dessus, une petite boite
de dialogue s’ouvre avec écrit «Où est-ce ?».
Trouver et modifier une ligne du programme pour afficher le nom du lieu où se trouve le marqueur lorsqu’on clique
dessus. Exécuter le programme et ouvrir à nouveau « maCarte.html » pour vérifier le résultat.
Numéro de la ligne à modifier et début du texte de cette ligne :
………………………………………………………………………………………………………………………………………………………………………

3 Bienvenue chez moi


A l’aide d’OpenStreetMap ou d’un autre service de cartographie, rechercher les coordonnées GPS de votre domicile
et les insérer dans la trame NMEA du programme (attention à utiliser le bon format pour les coordonnées
géographiques). Puis modifier à nouveau le programme pour qu’il affiche «Bienvenue chez moi» lorsque l’on clique
sur le marqueur.
Exécuter le programme et appeler le professeur pour vérification.
4 Bonus
Modifier le programme pour aller voir ce qu’il se trouve aux points géographiques :
- Symétrique de chez vous par rapport à l’équateur
- Symétrique de chez vous par rapport au méridien de Greenwich
- Diamétralement opposé à chez vous mais sur le même parallèle (+180° en longitude)
- Diamétralement opposé à chez vous mais sur le même méridien (+180° en latitude)
ATTENTION : Il peut y avoir quelques calculs simples à effectuer pour adapter les coordonnées.

Vous aimerez peut-être aussi