La lettura delle stringhe NMEA

NMEA è uno standard di comunicazione utilizzato nella trasmissione dati satellitare (GPS) e nautica. L’ente che sviluppa e gestisce il protocollo è la National Marine Electronics Association. In questo articolo vedremo che cosa sono le stringhe NMEA e come possiamo acquisire i dati in questo formato.

Lo standard NMEA è uno standard di interfacciamento tra apparecchiature digitali. La comunicazione NMEA nasce nel campo nautico ma è molto utilizzato nella comunicazione satellitare, dove viene impiegato per trasmettere dati da un GPS verso un computer. In genere esistono diversi protocolli di comunicazione utilizzati dai GPS (Rockwell, SiRF…) spesso in formato binario, ovvero non leggibili ad occhio nudo. La praticità e il vantaggio  del binario sta nel fatto che possono essere compressi e ottimizzati per la comunicazione satellitare e, inoltre, non occupano molti byte e quindi poche informazioni da trasmettere che si riflettono sulla velocità di trasmissione. Il formato standard NMEA, a differenza del binario, è facilmente interpretabile ad occhio nudo e facilmente decodificabile da un software di elaborazione dati. Lo standard contempla i segnali  elettrici, il protocollo e la temporizzazione della trasmissione ed i specifici formati di dati detti “sentences” ovvero “frasi”, operanti su un bus dati seriale (tipicamente RS232, ma anche sue semplificazioni fino all’essenziale RX-TX-GND) a 4800 bps. In generale un sistema GPS è dotato di un unico elemento trasmittente (talker) e molti riceventi (listeners). Molti ricevitori sono in grado di trasmettere dai a velocità fino a 38.4 kbp come contemplato dallo standard NMEA 0183-HS 1.0 della versione NMEA 0183 3.01. Lo standard NMEA ha conosciuto molte versioni che si sono sviluppate nel passare del tempo. I software per personal computer e palmari generalmente specificano la versione NMEA 0183 2.0 o successiva e in realtà necessitano, per il corretto funzionamento, di pochissime “frasi” NMEA (figura 1).

Figura 1: un navigatore GPS in funzione su un PDA.

Figura 1: un navigatore GPS in funzione su un PDA.

 

Figura 2: logica NMEA.

Figura 2: logica NMEA.

Struttura di una frase NMEA

Tutte le frasi NMEA sono formati da una sequenza di caratteri ASCII e da un prefisso, una serie di campi e un checksum finale. Ogni inizio di una frase è delimitato dal carattere “$”, la fine di una sequenza da CR e/o LF e i singoli campi separati da virgole; in dettaglio una possibile frase NMEA è la seguente:

$PREFISSO,campo1,campo2….*checksum CRLF

Una frase NMEA può contenere fino ad 82 caratteri. Se il campo in questione non fornisce dati, esso viene omesso ma le virgole che lo delimiterebbero sono comunque aggiunte, senza spazi tra loro. Il prefisso identifica il  tipo di dispositivo che sta trasmettendo i dati NMEA. Nell’ambito di un GPS, tutte le frasi iniziano con $GP; i successivi  3 caratteri del prefisso identificano  il tipo di frase. Per esempio un prefisso del tipo $GPGLL è inviato da un dispositivo GPS del tipo Geographic position, Longitude and Latitude (GLL). Lo standard NMEA comprende un elevato numero di prefissi. La frase, dopo il prefisso, è costituito da una serie di campi separati da virgole. Talvolta le lunghezze dei campi possono variare da versioni a versioni. Un buon software di decodifica deve poter permettere di cambiare facilmente la dimensione dei campi senza rimodificare del tutto il software stesso di partenza. Ecco i  formati dei dati usati dalle frasi NMEA GPS:

hhmmss.ss Ore, minuti, secondi e centesimi di secondo (es: 132957.94 = =13:29:57.94);

ddmmyy Campo data giorno, mese, anno (es: 151005 = 15 ottobre 2005);

A Campo numerico di lunghezza fissa di un carattere;

A-A Campo alfanumerico di lunghezza variabile;

llll.ll Campo latitudine (es: 4531.47 = 45°31.47’);

yyyyy.yy Campo longitudine (es: 00917.21 = 009°17.21’)

x Campo numerico con n cifre intere;

x.x Campo numerico con n cifre intere e n cifre decimali (es: 123.45);

n Campo numerico, singola cifra;

nn Campo numerico, due cifre;

nnnn Campo numerico, quattro cifre.

Al termine di ciascuna frase NMEA viene posto, dopo un asterisco, un checksum per poter individuare eventuali errori sulla linea di trasmissione tra talker e listener. Dal punto di vista digitale il checksum è EX-OR a 8 bit di tutti i caratteri della frase NMEA, compresi i delimitatori (,) ma escludendo  i “$ e “*”. La frase viene terminata con CR LF.

Esempi  di Frasi

Il gruppo GPS è costituito da una serie di frasi tra cui le più usate in campo satellitare GPS sono:

$GPRMC - Recommended Minimum specific GPS/TRANSIT data;

$GPRMB - Recommended Minimum navigation info (waypoint based navigation active);

$GPGGA - Global Positioning System fix data;

$GPGSA - GPS DOP and Satellites Active;

$GPGLL - Geographic Position - Latitude/Longitude;

$GPGSV - Satellites in View.

Per una visione completa bisogna far riferimento al documento NMEA completo (http://www.nmea.org). Tuttavia si riportano alcune tabelle (tabelle 1 e 2) che si riferiscono ad alcune frasi descritte in precedenza.

Tabella 1: $GPRMC

Tabella 1: $GPRMC

 

Tabella 2: $GPRMB

Tabella 2: $GPRMB

Come leggere le stringhe NMEA

Per poter leggere e decodificare le stringhe NMEA dobbiamo aver bisogno innanzitutto di un ricevitore GPS, per esempio, che fornisce in uscita dati nello standard NMEA. Un esempio di questo è il GPS della Parallax (figura 3 e bibliografia).

Figura 3: GPS Parallax.

Figura 3: GPS Parallax.

E’ una unità low cost con antenna GPS incorporata a bordo. Fornisce, per mezzo di una porta seriale RS232, le stringhe relative al posizionamento (NMEA0183, National Marine Electronics Association.), con la possibilità di ricevere segnali fino a 12 satelliti e altre specifiche funzioni per un miglior posizionamento (WAAS/EGNOS, Wide Area Augmentation System/European Geostationary Navigation Overlay  Service).  Il modulo fornisce l’ora corrente, la data, la latitudine, la longitudine, l’altezza, la velocità ed il senso di corsa; può essere utilizzato in un’ampia varietà di applicazioni commerciali, compreso navigazione,  i sistemi di inseguimento, traccianti, l’automatismo e altri settori. Per la decodifica dei da ti possiamo fare riferimento a vari programmi, un esempio è il HS NMEA GPS C Source Library 1.0. HS GPS è una biblioteca del software (con il codice sorgente completo di C) che fornisce l’accesso ad una ricevente compliant di NMEA-183 GPS via una porta di comunicazione di serie, decodificante le frasi di NMEA:   #$$GPGGA>,   #$$GPGSA>, #$$GPGSV>, #$$GPGLL>, $GPRMC e #$$GPVTG>. La biblioteca di HS GPS continuamente legge il flusso di dati asincrono ed analizza le informazioni per riconoscere e decodificare le frasi di protocollo NMEA-183. Dopo che ogni messaggio sia ricevuto è controllato per vedere se c’è integrità confrontando il totale di controllo ricevuto e calcolato.  I campi di frase di NMEA allora sono convertiti dai valori di ASCII in variabili della struttura di C e sono passati fino al codice di applicazione dell’utente.  In commercio esistono altri software per la lettura e gestione di stringhe NMEA; un altro esempio è il VisualGPS  (figura 4).

Figura 4: VisualGPS.

Figura 4: VisualGPS.

Ottimo freeware per il controllo dei principali parametri e l’osservazione di posizione e moto dei satelliti. Di grande interesse per lo studio dell’accuratezza del “fix” è la schermata Survey Window, in cui viene riportata in pianta la linea descritta dalla serie di posizioni segnalate dal sensore. Scenografica quanto chiara anche la Azimuth & Elevation Window con le tracce orbitali dei satelliti. Ottima anche la Signal Quality Window che riporta l’energia di segnale ricevuta da ogni satellite ed evidenzia in blu quali satelliti sono in uso. Caratteristiche di questo software sono:

» Ricevitore GPS con RS-232 e standard NMEA 0183

» Windows 95/98/XP/Vista

» 100 Mhz microprocessor

» SVGA  at least 800X600 resolution

» 16 megabytes di RAM

» 6 megabytes di hard disk

» NMEA: GPGGA,  GPGSA,  GPGSV

Un altro software si chiama Garble che contiene librerie in C++ per la conversione di stringhe GPS di ricevitori Garmin. Infine ricordiamo un altro software per la conversione di stringhe NMEA, GPS Monitor (figure 5 e 6). E’ free e non necessita di registrazione per il download. Per l’installazione richiede .NET 3.5 che è possibile scaricare dal sito della microsoft Corporation. Vorrei concludere questo articolo segnalandovi un sito molto interessante sulle utility riguardanti il GPS: www.gpsu.co.uk. Qui potete trovare molto riguardante la conversione di stringhe e l’acquisizione dati.

Figura 5: GPS Monitor.

Figura 5: GPS Monitor.

 

Figura 6: esempio di mappa in GPS Monitor

Figura 6: esempio di mappa in GPS Monitor

 

Universal Time Coordinate UTC

Tempo coordinato universale, conosciuto anche come tempo civile e abbreviato con l’acronimo UTC, è il fuso orario di riferimento da cui tutti gli altri fusi orari del mondo sono calcolati. Esso è derivato (e coincide a meno di approssimazioni infinitesimali) dal tempo medio di Greenwich (in inglese Greenwich Mean Time, GMT), e perciò talvolta è ancora chiamato GMT.

 

 

Scrivi un commento

EOS-Academy
Abbonati ora!