NMEA 1083

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

morocarlo

Sono uno studente di ingegneria informatica all'università di trieste. Sono appassionato di tecnologia, principalmente mi occupo/interesso di reti, hardware e software in generale. Programmo molto in Visual Basic .net (2008), ma conosco molto bene VB6. Ho le conoscenze basilari dei maggiori linguaggi di programmazione come php, asp, java, js, C#, Pascal e Assembly. SO: Windows 7, XP, Ubuntu, Mint, Netbook Remix

Lascia un commento

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