Un po di storia
NMEA 0183 è uno standard di interfacciamento tra apparecchiature digitali. Il sistema nasce originariamente per esigenze nautiche e solo successivamente viene utilizzato per l’interfacciamento fra ricevitori gps e trasmettitori verso un computer. L’ente che gestisce lo standard (e che ne detiene il copyright) si chiama National Marine Electronics Association.
Struttura del segnale
Il segnale inviato è identificato dal caratter “$” (dollaro) ed è costituito da una sequenza di caratteri, detta prefisso che indica il tipo di informazioni che stanno per essere ricevute. Alla fine abbiamo i due caratteri CR e LF (carriage return e line feed) ovvero ritorna a inizio linea e vai a capo, praticamente il tasto invio.
I prefissi
Il segnale come detto è preceduto da un prefisso. Per indicare un segnale gps il prefisso è “GP” e i tre caratteri successivi indicano il tipo di dato, ad esempio “GPGLL” indicherà un segnale gps che identificherà la posizione geografica.
Le frasi NMEA
Ecco un elenco di tutti i prefissi
• AAM – Waypoint Arrival Alarm
• ALM – Almanac data
• APA – Auto Pilot A sentence
• APB – Auto Pilot B sentence
• BOD – Bearing Origin to Destination
• BWC – Bearing using Great Circle route
• DTM – Datum being used.
• GGA – Fix information
• GLL – Lat/Lon data
• GRS – GPS Range Residuals
• GSA – Overall Satellite data
• GST – GPS Pseudorange Noise Statistics
• GSV – Detailed Satellite data
• MSK – send control for a beacon receiver
• MSS – Beacon receiver status information.
• RMA – recommended Loran data
• RMB – recommended navigation data for gps
• RMC – recommended minimum data for gps
• RTE – route message
• TRF – Transit Fix Data
• STN – Multiple Data ID
• VBW – dual Ground / Water Spped
• VTG – Vector track an Speed over the Ground
• WCV – Waypoint closure velocity (Velocity Made Good)
• WPL – Waypoint Location information
• XTC – cross track error
• XTE – measured cross track error
• ZTG – Zulu (UTC) time and time to go (to destination)
• ZDA – Date and Time
La stringa GLL contiene poche informazioni, ma sufficienti per ottenere informazioni, indica infatti la latitudine e la longitudine, l’ora e la data del sistema.
$GPGLL,4916.45,N,12311.12,W,225444,A
Where:
GLL Geographic position, Latitude and Longitude
4916.46,N Latitude 49 deg. 16.45 min. North
12311.12,W Longitude 123 deg. 11.12 min. West
225444 Fix taken at 22:54:44 UTC
A Data Active or V (void)
Ecco invece un altra stringa da cui è possibile prelevare la velocità
$GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1
Where:
RMC Recommended Minimum sentence C
123519 Fix taken at 12:35:19 UTC
A Status A=active or V=Void.
4807.038,N Latitude 48 deg 07.038′ N
01131.000,E Longitude 11 deg 31.000′ E
022.4 Speed over the ground in knots
084.4 Track angle in degrees True
230394 Date – 23rd of March 1994
003.1,W Magnetic Variation
Ora basterà prelevare i dati che ci interessano per poi elaborarli. Imposteremo quindi un filtro che accetterà il segnale solo se i primi tre caratteri sono “$GP” e in base alle nostre esigenze sceglieremo gli altri 3, per poi prendere solamente i dati che ci interessano e elaborarli successivamente.
Altre informazioni sul protocollo sono disponibili nel sito qui sotto.
http://www.gpsinformation.org/dale/nmea.htm













