NMEA
Un article de LaPageDuJour.
Sommaire |
[modifier] Introduction
NMEA signifie National Marine Electronics Association. Mais ce nom désigne la plupart du temps le protocole de communication créé par cette association, NMEA 0183. Ce protocole permet avant tout de récupérer des informations de périphériques GPS.
Actuellement, 99% des puces GPS utilisées supportent ce protocole. Celui ci est simple, sécurisé et standardisé.
Ici, nous allons voir comment vous simplifier la programmation d'applications lisant un flux NMEA.
[modifier] Fonctionnement
Ce protocole utilise toujours une liaison série (RS232, liaison série virtuelle ou même émulée par le système). La défaut, la communication série est faite à 4800 bps en 8N1. Chaque information est envoyée dans une ligne (finissant par le caractère LF, "\n"), commence par le caractère "$" et fini par le caractère "*" suivi d'un checksum des informations envoyées après le caractère "$".
[modifier] Phrases NMEA Standards
Pour toutes les phrases NMEA, nous allons afficher un numéro en dessous de chaque argument séparé des autres par une virgule.
[modifier] RMC
C'est LA phrase NMEA que vous devez pouvoir traiter. Elle contient toutes les informations de tracking Ă l'exception de l'altitude.
Exemple :
$GPRMC,152917.000,A,4850.2422,N,00217.3656,E,0.00,,231007,003.1,W,A*73 | | | | | | | | || | | 0 1 2 3 4 5 6 7 89 10 11
Analyse des informations :
- 1 : Heure GMT : 15:29:17. Certains GPS spécifie en plus les millisecondes en ajoutant un point, mais ce n'est pas obligatoire.
- 2 : Statut :
Acomme Actif, on peut trouverVcomme Vide - 3 : Latitude en degrès (nous verrons comment la convertir)
- 4 : Sens de la latitude :
-
Ncomme Nord -
Scomme Sud
-
- 5 : Longitude en degrès
- 6 : Sens de la longitude
-
Ecomme Est -
Wcomme West (Ouest)
-
- 7 : Vitesse en noeuds (nous verrons comment le convertir)
- 8 : Orientation de la direction (de 0 à 360 °)
- 9 : Date (le 23/10/07)
- 10 : Variation magnetique, cette information n'est pas toujours présente
- 11 : Sens de la variation magnétique (W ou E)
- 12 : On s'en fout
[modifier] GSV
Cette phrase NMEA vous donne des informations sur la réception des différents satellites.
$GPGSV,3,1,11,03,03,111,00,04,15,270,00,06,01,010,00,13,06,292,00*74 | | | | | | | | | | | | | | | | | | | | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 $GPGSV,3,2,11,14,25,170,00,16,57,208,39,18,67,296,40,19,40,246,00*74 $GPGSV,3,3,11,22,42,067,42,24,14,311,43,27,05,244,00,,,,*4D
Analyse des informations :
- 1 : Nombre de total de messages
- 2 : No de messages
- 3 : Nombre de satellites
- 4 : No de satellite
- 5 : Elevation en degrees, 90 au maximum
- 6 : Azimut, degrees par rapport au nord, 000 Ă 359
- 7 : Qualité de la réception
- 8-11 : Information sur le second satellite, comme les champs 4 Ă 7
- 12-15 : Information sur le troisième satellite, comme les champs 4 à 7
- 16-19 : Information sur le quatrième satellite, comme les champs 4 à 7
[modifier] GSA
Cette phrase NMEA vous donne les infos sur la réception.
$GPGSA,A,3,19,28,14,18,27,22,31,39,,,,,1.7,1.0,1.3*34 | | | | | | | | | | | | | | 0 1 2 3 4 5 6 7 8 9 10 15 16 17
Analyse des informations :
- 1 : Mode (M pour Manuel / A pour Automatique)
- 2 : Mode (1 pour pas de réception, 2 pour position 2D (sans altitude), 3 pour position 3D (avec altitude))
- 3-14 : Satellites utilisés
- 15 : PDOP : Dillution de la position
- 16 : HDOP : Dillution de la position horizontale
- 17 : VDOP : Dillution de la position verticale
[modifier] Programmer la réception de ces phrases NMEA
[modifier] La réception des informations
En C# .Net et en Java J2SE/J2ME qui sont des environnement tout à fait indiqués pour l'utilisation des technologies GPS, les opérations de traitement s'avèrent assez simple. A travers les gestionnaires de flux classiques, on peut récupérer ces informations assez aisément.
[modifier] Cas particuliers
- Le HTC P3300 souffre d'un problème d'implémentation de ses drivers. Il vous est impossible de récupérer les informations du GPS de ligne par ligne, en effet la méthode SerialPort.ReadLine ne fonctionnera pas bien.