NMEA 0183: Cos’è e come funziona


Il Protocollo NMEA 0183

Il protocollo NMEA 0183 è uno standard di comunicazione usato dai GPS per comunicare i dati di posizione e tempo, ma anche in applicazioni nautiche per condividere con vari strumenti le informazioni come ad esempio la velocità dell’imbarcazione, la profondità del fondale o la posizione e il nome delle imbarcazioni limitrofe.
Lo standard è stato sviluppato dal National Marine Electronics Association, una associazione fondata nel 1957 da costruttori di dispositivi elettroci in ambito navale. La prima versione del protocollo risale a marzo 1983, successivamente è stata migliorata ed ampliata negli anni.
Attualmente l’ultima versione è la 4.1 che ha introdotto ad esempio, le sentence (stringhe propriamente codificate) per il sistema di posizionamento Galileo e l’AIS (Automatic Identification System) ovvero il sistema di identificazione automatica comunemente conosciuto come transponder.

Un solo talker, uno o più listners

Il protocollo NMEA 0183 prevede che un solo dispositivo, detto talker, possa trasmettere dati, tutti gli altri dispositivi invece, detti listeners, possono esclusivamente riceverli. Per combinare più talkers assieme, come ad esempio un GPS, un anemometro, un ricevitore AIS, è necessario collegare questi dispositivi a un Multiplexer (o combinatore) che gestisce in input queste informazioni e le serializza in modo che non vi siano conflitti di trasmissione simultanea.

Il multiplexer può fare solo da “tramite” dei messaggi oppure li può filtrare o definirne una priorità maggiore. Un altra funzionalità di alcuni modelli è quella di convertire i segnali Nmea 0183 in segnali a velocità maggiore (es. NMEA 0183-HS che introdurremo più avanti) o cambiare proprio mezzo e protocollo passando a segnali come ad esempio NMEA 2000, Wifi, Ethernet,Bluetooth, Usb.

Principali caratteristiche elettriche del protocollo NMEA 0183

A livello elettrico, la comunicazione è di tipo seriale asincrona monodirezionale. La velocità di trasmissione è definita a 4800bps (bit al secondo), 8 bit di dati, un bit di stop e nessun bit ne di parità ne di handshaking. (comunemente conosciuto come 8N1)

Proprietà Valore
Velocità 4800bps
Bit di dati 8
Parità Nessuno
Handshake Nessuno

Prima della versione 2.0 dello standard (rilasciata nel 1992) l’interfacciamento è stato di tipo “single ended” e richiede due fili:

  • Una linea di trasmissione (TX)
  • Un riferimento a massa (GND)

I dispositivi costruiti prima della versione 2.0 del protocollo rilevano gli uni e gli zeri in riferimento alla differenza di tensione che c’è tra il filo TX e il GND

Dalla versione 2.0 in poi invece il protocollo passa da una connessione “single ended” RS232, più sensibile ai disturbi, ad una connessione “double ended” basata sullo standard RS422.

Lo standard RS422 utilizza tre fili (A, B e GND). Due fili (A e B) sono adibiti alla trasmissione e uno (GND) fa da riferimento comune a massa. La trasmissione mediante una coppia di fili permette di implementare un invio differenziale dei segnali elettrici. Questa modalità di trasmissione permette di ottenere una alta immunità ai disturbi permettendo collegamenti a 1200m di distanza ad una velocità di 100Kbps.

Interfacciamento a 3 fili.

  • TxD (B) +
  • TxD (A) –
  • Un riferimento a massa (GND)

Nmea0183 esempio collegamento vhf gps chartplotter ciaobit.com

Dalle informazioni reperite sul web, sembra possibile collegare dispositivi con segnali TTL a due fili “single ended” con dispositivi a tre fili “double ended” collegando il TX alla linea RxD B +

NMEA 0183 e NMEA 0183-HS

Dalla terza versione, definita nel 2001, è stata introdotta una variante del protocollo ad alta velocità, chiamata NMEA 0183-HS (dove “HS” stà per “high speed”). La sostanziale differenza rispetto alla versione Nmea 0183 è la velocità di comunicazione che passa da 4800bps a 38400bps.

La sintassi delle frasi (sentence)

I dispositivi comunicano attraverso delle frasi (dette sentence).
Le frasi sono limitate a 80 caratteri e hanno i rispettivi caratteri di inizio e fine messaggio.
I parametri del messaggio sono delimitati dal carattere virgola e l’ultimo parametro è un codice di verifica della trasmissione preceduto da un asterisco “*”.

Riassumendo abbiamo:

  • Inizio messaggio: $
  • Delimitatore: carattere virgola “,”
  • Delimitatore Checksum “*”
  • Fine messaggio: CR LF

L’indirizzo della frase

Il primo parametro racchiuso tra l’inizio messaggio e la prima virgola è l’indirizzo della frase e specifica la natura del talker.
L’indirizzo è a sua volta composto da due elementi:

  • due lettere che identificano il talker (Es. Gps, Bussola..)
  • tre lettere che identificano il messaggio specifico del talker.

Il controllo d’errore (checksum)

L’ultimo parametro è il checksum e serve per verificare che il messaggio sia privo da errori. Il checksum è racchiuso tra un carattere asterisco “*” e il  CR LF (ovvero il ritorno di carrello e nuova linea).
Il checksum è composto da due caratteri alfanumerici ed è calcolato tramite l’algoritmo Exclusive OR a 8 bit

Seguono alcuni esempi di messaggi catturati dal GPS del telefonino:

$GLGSV,2,2,07,84,16,144,14,85,71,153,31,71,45,229,25*5A
Descrive il numero di satelliti GLONASS e la loro posizione

$GPGSA,A,3,01,03,08,10,11,14,17,22,23,27,28,32,1.0,0.7,0.7*34
Descrive i satelliti usati oer il punto, se quest’ultimo è 2D o 3D e la relativa accuratezza

$GPVTG,,T,,M,0.0,N,0.0,K,A*23
Descrive velocità e direzione

$GPRMC,155902,A,4501.502642,N,01434.102644,E,0.0,,150817,1.2,E,A*36
Fornisce l’ora UTC, in questo caso sono le ore 15:59:02. la “A” indica che il fix è valido e la posizione espressa in DD mm.mmmm è  45°01.502642N e 14°34.102644E. é presente la velocità e la direzione, la data (in questo caso 15/08/2017) e la variazione magnetica.

$GPGGA,155902,4501.502642,N,01434.102644,E,1,12,0.7,15.0,M,44.0,M,,*78
Anche questa frase fornisce informazioni sull’ora e la posizione, ma a differenza del messaggio precedente qui abbiamo informazioni sull’altezza e un calcolo del possibile errore della posizione

Riguardo Matteo Dalle Feste

Web Designer e Developer presso una nota testata giornalistica sul turismo. Appassionato di domotica, nel tempo libero, cura la realizzazione sia hardware che software di piccoli progetti domotici fai da te.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *