Voici quelques informations sur la norme NMEA tirées de la notice d’un GPS de marque MLR et du Net

La NMEA (National Marine Electronics Association) édicte des standards pour la communication des instruments de marine entre eux.
Ces standards permettent un seul émetteur et plusieurs récepteurs sur un même circuit.
Le standards NMEA 0180 et NMEA 0182 spécifient que la sortie de l'émetteur peut être en RS 232 ou capable de délivrer 10 mA sous 4 v.
Le standard NMEA 0183 reprend cela mais recommande une sortie en RS 422. Dans ce système différentiel, l'une des lignes (Ligne A) correspond à celle du système précédent tandis que le niveau de la seconde ligne (Ligne B) est inversé. (Si A est à 5 v, B est à 0 v et vice versa)
Dans la pratique seule la ligne A est connectée à une entrée RS 232.
Les standards NMEA 0180 et NMEA 0182 se limitent à la connection d'un pilote automatique à un récepteur de navigation Loran ou GPS.

1. - NMEA 180 SIMPLE

8 bits de données, bit D7 = 0, 1 bit de stop, 1200 bauds, parité paire, cadence 1 à 5 s.
Le message comporte un seul octet avec DO à D5 écart de route en milles, D6 = 1 si données valides

	Exemple
	D7	D6	D5	D4	D3	D2	D1	D0
	0	1	1	1	1	1	1	1	- Ecart de route maximum à bâbord
	0	1	1	0	0	0	0	0	- Sur la trajectoire
	0	1	0	0	0	0	0	0	- Ecart de route maximum à tribord

2. - NMEA 182 ( OU NMEA 180 COMPLEX )

8 bits de données, bit D7 = 1, 1 bit de stop, 1200 bauds, parité paire, cadence 2 à 8 s.
Les 37 caractères du message sont des caractères ASCII avec D7 = 1

$MP N   X.XX   L   T   XXX   XXDXX.XX'N   XXXDXX.XX'W   S   NUL ETX

N :	unité de l'écart de route : K = kilometres, N = milles U = microsecondes
X.XX :	Ecart de route
L :	L = bâbord, R = tribord
T :	T = vrai, M = magnétique
XXX ;	Azimut en degrés vers le prochain point fixe
XXDXX.XX' :	Latitude ( ou XXDXX'XX" )
N :	N = Nord, S = Sud
XXXDXX.XX' :	Longitude ( ou XXXDXX'XX" )
W :	E = Est, W = Ouest
S :	Octet de status :
	bit 0 = 1 verouillage de cycle manuel
	bit 1 = 1 signal faible
	bit 2 = 1 saut de cycle
	bit 3 = 1 « blink »
 	bit 4 = 1 alarme d'arrivée
	bit 5 = 1 discontinuité
	bit 6 = 1 toujours à 1
NUL	caractère h80
ETX	caractère h83

3. - NMEA 183

8 bits de données, 2 bits de stop, sans parité, 4800 Bauds.
Le format NMEA 183 est une succession de plusieurs messages composés de caractères ASCII.
Chaque message commence par le symbole $ suivi de 5 caractères puis des paramètres ; les différents champs sont séparés par des virgules sans espaces. Un champ peut être vide mais les virgules sont requises.
Le standard permet une somme de contrôle qui est précédée par le symbole * placé après le dernier paramètre. Elle est constituée par 2 caractères qui représentent en hexadécimal  l’opération XOR de tous les caractères du message de $ à * inclus. Certains messages requièrent une somme de contrôle. 
Exemple : $GPGSA,A,3,,05,06,,09,,,24,,29,30,,3.9,2.5,2.9*30 [CR][LF]

+ Les messages de diffusion
Le format est : $ttsss,par1,par2,....[CR][LF]
tt est l’identificateur de l’émetteur :

AG = Pilote automatique ( cas général )
AP = Pilote automatique ( magnétique)
CC = Ordinateur
CD = Appel sélectif ( radio) 
CS = Communication par satellite
CT = Radio téléphone MF/HF
CV = Radio téléphone VHF
CX = Récepteur à scanner
DE = DECCA
DF = « direction finder »
EC = Cartographie électronique et système d'information
EP = Balise de position de détresse
ER = Système de contrôle de la salle des machines
GP = GPS
HC = Compas
HE = Gyroscope «  North Seeking »
HN = Gyroscope «   Non-North Seeking »
II = Instrument intégré
IN = Instrument de navigation intégré
LA = Loran A
LC = Loran C
OM = Oméga
RA =Radar
SD = Sondeur
TR = Système de positionnement
SS = Sondeur à scanner
TI = «       Turn Rate Indicator « 
TR = Système de navigation TRANSIT
VD = Capteur de vitesse à effet doppler
VM = Capteur de vitesse magnétic
VW = Capteur de vitesse mécanique
YX = Transducteur
ZA = Horloge atomique
ZC = Chronomètre
ZQ = Quartz
ZV = Mise à l'heure radio        
WI = Station météo

sss forment le mnémonique du message.
par1, par2, parX sont les paramètres qui dépendent du message.
Exemple : $HCHDM,238,M[CR][LF] Message « HDM » émis par le compas avec pour paramètres 238 et M.

+ Les messages d’interrogation
Le format est : $ttllQ,sss,[CR][LF]
tt est l’identificateur du demandeur
ll est l’identificateur de l’émetteur requis
Le 5ème caractère est un Q
sss contient le mnémonique du message demandé.
Exemple : $CCGPQ,GGA[CR][LF] Où l’appareil « CC » (ordinateur) demande à l’appareil « GP » (GPS) le message « GCA ». Le GPS enverra alors ce message toute les seconde.

+ Les messages propriétaire
Le format est : $PmmmA,par1,par2,...,[CR][LF]
Le premier caractère est un P
mmm est le code fabriquant
GRM = Garmin
ML2 ou ML3 = MLR
MGN = Magellan
MOT = Motorola
RWI = Rockwell
SLI = Starlink
Le 5ème caractère définit le type de message (A à Z) 
par1, par2, parX sont les paramètres qui dépendent du message.

Messages de diffusion émis par les GPS

* AAM Alarme du point de destination

$GPAAM, X, X, X.XX, N, XXXXXX CR LF

X:	Entrée dans le cercle d’arrivée
X :	Dépassement de la perpendiculaire
X.XX, N :	Distance en miles
XXXXXX :	Point fixe 

* ALM Données de l’almanach GPS
Ce message est transmis pour chaque satellite (Jusqu’à 32) et peut être très long ; il n’est en principe pas transmis automatiquement.

$GPALM, X, X, X, XXXX, X, X, HH, HHHH …

X :	Nombre de messages
X :	Numéro du message
X :	Numéro du satellite
XXXX :	Numéro de semaine (0 à 1023)
X :	Etat du satellite
X : 	Exentricité
HH :	Référence de temps de l’almanach
HHHH :	Données de l’almanach

* APA Pilote automatique format A

* APB Pilote automatique format B
Ce message sert à controler un pilote automatique. Certains pilotes (Robertson en particulier) confondent « azimut entre le point d’origine et le point de destination » et « azimut entre la position actuelle et le point de destination»

$GPAPB, A, A, X.XX, L, N, A, A, XXX, M, DEST, XXX, M, M CR LF

A:	Alerte générale
A :	A : point valide, V : point non valide
X.XX :	Ecart de route
L :	L = bâbord, R = tribord
N :	N = Mille nautique, K = Kilomètre
A :	Alarme d’arrivée circulaire
A :	Alarme d’arrivée perpendiculaire
XXX,M :	Azimut magnétique entre le point d’origine et le point de destination
DEST :	Numéro du point fixe de destination
XXX,M :	Azimut magnétique entre la position actuelle et le point de destination
M :	?

* ASD Pilote automatique, données système

* BEC Azimut et distance jusqu’au point fixe

* BOD Azimut de l’origine à la destination
Azimut magnétique entre le point d’origine et le point de destination

$GPBOD, XXX.X, T, XXX.X, M, DEST, START CR LF

XXX.X,T :	Azimut vrai entre le point d’origine et le point de destination
XXX.X,M :	Azimut magnétique entre le point d’origine et le point de destination
DEST :	Numéro du point fixe de destination
START :	Numéro du point fixe d’origine

* BWC Azimut et distance jusqu’au point fixe - Grand cercle

$GPBWC,XXXXXX, XXXXXX, N, XXXX.XX, W, XXX, T, XXX, M, XXX.X, N, DEST CR LF

XXXXXX :	Heures, minutes, secondes UTC
XXXXXX :	Latitude point fixe 
N :	N = Nord, S = Sud
XXXX.XX :	Longitude point fixe
W :	E = Est, W = Ouest
XXX, T :	Azimut vrai en degrés
XXX, M :	Azimut magnétique en degrés
XXX.X :	Distance
N :	N = Mille nautique, K = Kilomètre
DEST :	Numéro du point fixe de destination

* BWR Azimut et distance jusqu’au point fixe

* BWW Azimut de point fixe à point fixe

* DBT Profondeur sous la sonde

* DCN Position DECCA

* DPT Profondeur

* FSI Informations de fréquences

* GGA - Données du point du système de positionnement mondial

$GPGGA, HHMMSS, XXXX.XXX, N, XXXXX.XXX, W, X, XX, XX, XXXX, M, XXXX, M, SSSS, XXXX CR LF

HHMMSS :	Heures, minutes, secondes UTC
XXXX.XXX :	Latitude
N :	N = Nord, S = Sud
XXXXX.XXX :	Longitude
W :	E = Est, W = Ouest
X :	0 = point non calé, 1 = point calé, 2 = point calé en mode différentiel, 6 point estimé
XX :	Nombre de satellites
XX :	Dilution horizontale de la précision
XXXX, M :	Altitude en mètres de l’antenne au dessus du niveau de la mer
XXXX, M :	Différence en mètres entre l'ellipsoïde WGS84 et le niveau moyen de  la mer
SSSS :	Age des données différentielles en secondes
XXXX :	Numéro de la station différentielle
(Les données DGPS ne sont pas transmises en mode GPS normal, seules les virgules apparaissent).

* GLL Position vraie

$GPGLL, XXXX.XXX, X, XXXXX.XXX, X, HHMMSS, V, CR LF

XXXX.XXX :	Latitude
N :	N = Nord, S = Sud
XXXXX.XXX :	Longitude 
W :	E = Est, W = Ouest 
HHMMSS :	Heures, minutes, secondes UTC
V :	A = point valide, V = point non valide

* GSA Dilution de la précision et satellites GPS actifs

$GPGSA, S, D, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, XX, X.X, X.X, X.X, CR LF

S :	A = sélection automatique d’un point 2d ou 3d, M = manuel
D :	1 = point non valide, 2 = 2d, 3 = 3d
XX (12 fois):	Id des satellites utilisés (Nombre aléatoire, emplacements pour 12 mais certains sont vides)
X.X :	Dilution de la précision de position 
X.X :	Dilution de la précision horizontale
X.X :	Dilution de la précision verticale

* GSV Satellites en vue
$GPGSV, N, X, SS, XX, XXX, XX, XX, XX, XXX, XX, XX, XX, XXX, XX, XX, XX, XXX, XX, XX, CR LF

N :	Nombre de messages pour lister tous les satellites
X :	Numéro de ce message
SS :	Nombre de satellites en vue
XX, XXX, XX, XX :	Id du satellite, élevation en degrés (max. 90), azimut en degrés (depuis le nord vrai), niveau du signal (Emplacement pour 4 satellites)
(4 fois)

* HDT Cap vrai
$GPHDT, X.X, T, CR LF
X.X, T :	Cap vrai en degrés

* R00 Liste des points fixes de la route active
Ce message alterne avec $GPWPL

$GPR00, NOM, NOM, ... , CR LF
NOM :	Nom ou identificateur des points fixes

* RMA Informations minimums recommandées spécifiques au Loran C

$GPRMA, A, X.XX, L, XXX, XXX, XXXX.XX, N, XXXXX.XX, W, XXX.X, XXX,X, XXX.X, V, CR LF

eg. $GPRMA,A, XXXX.XX, N, XXXXX.XX, W, , , XX.X, XXX, XX.X, W, CR LF
A :	A : point valide, V : point non valide 
XXXX.XX :	Latitude
N :	N = Nord, S = Sud
XXXXX.XX :	Longitude 
W :	E = Est, W = Ouest
XX.X :	Vitesse en noeuds
XXX :	Distance
XX.X :	Variation
W :	Direction de la variation : E = Est, W = Ouest

* RMB Informations minimums de navigation envoyées quand un point fixe de destination est actif

$GPRMB, A, X.XX, L, XXX, XXX, XXXX.XX, N, XXXXX.XX, W, XXX.X, XXX,X, XXX.X, V, CR LF

A :	A : point valide, V : point non valide
X.XX :	Ecart de route
L :	L = bâbord, R = tribord
XXX :	Point d’origine
XXX :	Point de destination
XXXX.XX :	Latitude du point de destination
N :	N = Nord, S = Sud
XXXXX.XX :	Longitude du point de destination 
W :	E = Est, W = Ouest
XXX.X :	Echelle en milles
XXX.X :	Cap vrai vers le point de destination
XXX.X :	Vitesse vers le point de destination en nœuds
V :	Alarme d’arrivée : A : arrivé, V : pas encore arrivé

* RMC Informations minimums recommandées spécifiques au GPS

$GPRMC, HHMMSS, A, XXXX.XXX, N, XXXXX.XXX, W, XX.X, XXX, JJMMAA, XXX, W, CR LF

HHMMSS :	Heures, minutes, secondes UTC 
A :	A = point valide, V = point non valide 
XXXX.XXX :	Latitude
N :	N = Nord, S = Sud
XXXXX.XX :	Longitude 
W :	E = Est, W = Ouest
XX.X :	Vitesse fond en nœuds
XXX :	Cap vrai en degrés
JJMMAA :	Jour, mois, année
XXX :	Variation
W :	W = correction +, E = correction -

* RTE Points de la route active
Ce message alterne avec $GPWPL, les données des points eux-mêmes seront envoyées dans les messages $GPWPL suivants.

$GPRTE, X, X, C, X, NOM, NOM, ... CR LF

X :	Nombre de messages RTE 
X :	Numéro de ce message
C :	C = liste complète des points de cette route, w = la liste des points commence avec le segment courant
X :	Nom ou numéro de la route active
NOM :	Noms des points de la route	

* TRF Données du point TRANSIT

$GPTRF, HHMMSS.SS, DDMMAA, XXXX.XX, N, XXXXX.XX, W, X.X, X.X, X.X, X.X, XXX CR LF

HHMMSS.SS :	Heure UTC du point 
DDMMAA :	Date 
XXXX.XX :	Latitude
N :	N = Nord, S = Sud
XXXXX.XX :	Longitude 
W :	E = Est, W = Ouest
X.X :	Elevation (Angle)
X.X :	Nombre d'itérations
X.X :	Nombre d'intervals Doppler
X.X :	Distance de mise à jour en miles
XXX :	Identificateur du satellite

* VBW Vitesse fond et vitesse surface en noeuds

$GPVBW, X.X, X.X, A, X.X, X.X, A, CR LF

X.X :	Vitese surface longitudinale
X.X :	Vitesse surface transversale
A :	A = Données valides
X.X :	Vitese fond longitudinale
X.X :	Vitesse fond transversale
A :	A = Données valides
* VTG Vitesse et cap

$GPVTG, XXX, T, XXX, M, XX.X, N, XX.X, K CR LF

XXX, T :	Cap vrai en degrés
XXX, M :	Cap compas en degrés
XX.X, N :	Vitesse en nœud
XX.X, K :	Vitesse en kilomètres/heure

* WPL Données des points fixes
Quand une route est active, ce message est envoyé pour chaque point fixe de la route. Dans chaque groupe de messages il n'y a qu'un seul message WPL ou un message RTE.
 $GPWPL, XXXX.XXX, N, XXXXX.XXX, W, NOM, CR LF

XXXX.XXX :	Latitude
N :	N = Nord, S = Sud
XXXXX.XXX :	Longitude 
W :	E = Est, W = Ouest
NOM :	Nom du point

* XTE Ecart de route

$GPXTE, A, A, X.XX, M, L CR LF

A :	A = point valide, V = point non valide
A :	Non utilisé en GPS, Indicateur de verouillage en LORAN-C
X.XX :	Ecart de route
M :	Unité de distance (Miles)
L :	Sens de la correction : L = bâbord, R = tribord

* ZDA Date et Heure

$GPZDA, HHMMSS.SS, JJ, MM, AAAA, XX, XX, CR LF

HHMMSS.SS :	Heure UTC
JJ :	Jour
MM :	Mois
AAAA :	Année
XX :	Correstion heures heure locale ( +/- 13)
XX :	Correction minutes heure locale ( 0 - 59 )

* ZTA Heure d'arrivée

$GPZTA, HHMMSS, XXXX00, XXX CR LF

HHMMSS :	Heure UTC
HHMM00 :	Heure d’arrivée en UTC
XXX :	Numéro du point fixe

Messages propriétaires
- MLR -
* PML2 (pour la programmation du récepteur différentiel)

$PML2, XXX.X, X, X CR LF

XXX.X :	Fréquence DGPS en KHz
X :	Type de réseau différentiel : O=AISM, 1=st 09, 2=st 11, 3=st 12
X :	Vitesse de transmission : 1 = 100 bauds

* PML3 (pour la programmation du récepteur différentiel)

$PML3, XX, XXX, XXX.X,	XX CR LF

XX :	Note de réception : 00 = très bonne réception, 10 = réception moyenne, 31 = pas de réception
XXX :	Taux d' erreur de réception différentielle
XXX.X :	?
XX :	Nombre de satellites corrigés	

- GARMIN -
$PGRME, XX.X, M, XX.X, M, XX.X, M CR LF
N'est pas envoyé en NMEA 1.5 mode. 

XX.X, M :	Erreur horizontale estimée en mètres
XX.X, M :	Erreur verticale estimée en mètres
XX.X, M :	Sphère de position

$PGRMZ, XX, F, X CR LF

XX, F :	Altitude en pieds
X :	2 = altitude de l'utilisateur, 3 = altitude GPS

$PGRMM, NAD27 Canada CR LF

NAD27 Canada :	format géodésique courant (exemple)

- STARLINK -
$PSLIB, FFF.F, VVV, J CR LF

FFF.F :	Fréquence (de 283.5 à 325.0 Khz )
VVV :	Vitesse de transmission ( 0, 25, 50, 100 ou 200 bits par seconde )
J :	J = Demande d'état, K = demande de configuration du récepteur différentiel, nul = message de réglage

- MAGELLAN -

$PMGNST, XX.XX, D, T, XXX, XX.X, +XXXXX, XX CR LF 
Informations d'état

XX.XX :	Numéro de version
D :	2 = 2d, 3 = 3d
T :	T = point valide, F = point non valide
XXX :	?
XX.X :	Durée restante des batteries en heures
+XXXXX :	?
XX :	Numéro du satellite courant

- MOTOROLA -

$PMOTG, XXX, SSSS
Permet de règler la fréquence d'émission d'un messsage

XXX :	Message à controler
SSSS :	Interval d'émission en secondes

$PMOTG, FOR, X
Règle le format de sortie

FOR :	Indique qu'il s'agit du règlage du format de sortie
X :	0 = Motorola binaire, 1 = GPS, 2 = Loran

- ROCKWELL -

$PRWIINIT
Initialise le circuit

$PRWIRID, 12, XX.XX, DD/MM/YY, XXXX

12 :	Unité à 12 canaux
XX.XX :	Version logiciel
DD/MM/YY :	Date logiciel
XXXX :	Options