Last modified: December 30, 2007
NATIONAL MARINE ELECTRONICS ASSOCIATION
The National Marine Electronics Association (NMEA) is the unifying force behind the entire marine electronics industry, bringing together all aspects of the industry for the betterment of all in our business. It is a non-profit association composed of manufacturers, distributors, dealers, educational institutions, and others interested in peripheral marine electronics occupations
NMEA-0183 standard is the communication protocol (set of rules) by which GPS (Global Positioning System) units communicate with other devices. It uses a simple ASCII (American Standard Code for Information Interchange), serial communications protocol that defines how data is transmitted in a "sentence" from one "talker" to one "listener" at a time. NMEA-0183 data is sent at 4800-baud rate. Its implementations vary, but can often interoperate with RS-232, RS-423, and RS-422.
The NMEA-0183 data stream consists of a series of "sentences" delimited by a new line character. Each sentence begins with a six character identifier, the first character of which is always "$" followed by a two letter "talker ID", a three letter "sentence ID", a number of data fields separated by commas, and terminated by an optional checksum, and a carriage return (CR)/line feed (LF). A sentence may contain up to 82 characters including the "$" and CR/LF.
The NMEA-0183 standard defines dozens of sentences, but only a fraction applies directly to GPS devices.
The most useful sentences include:
$GPAAM - Waypoint Arrival Alarm
$GPBWW - Bearing, Waypoint to Waypoint
$GPGGA - Global Positioning System Fix Data
$GPGLL - Geographic Position, Latitude/Longitude
$GPGSA - GPS DOP and Active Satellites
$GPGSV - GPS Satellites in View
$GPRMB - Recommended Minimum Navigation Information
$GPRMC - Recommended Minimum Specific GPS/TRANSIT Data
$GPRTE - Routes
$GPVTG - Track Made Good and Ground Speed
$GPWNC - Distance, Waypoint to Waypoint
$GPWPL - Waypoint Location
$GPZDA - UTC Date/Time and Local Time Zone Offset
For understanding let's will take $GPGGA - Global Positioning System Fix Data
Eg1. $GPGGA, 170834,4124.8963,N, 08151.6838,W, 1,05,1.5,280.2,M, -34.0,M, *75
Courtesy of Brian McClure, N8PQI
Global Positioning System Fix Data. Time, position and fix related data for a GPS receiver.
Eg2. $GPGGA, hhmmss.ss, ddmm.mmm, a, dddmm.mmm, b, q, xx, p.p, a.b, M, c.d, M, x.x, nnnn
Hhmmss.ss = UTC of position
ddmm.mmm = latitude of position
a = N or S, latitude hemisphere
dddmm.mmm = longitude of position
b = E or W, longitude hemisphere
q = GPS Quality indicator (0=No fix, 1=Non-differential GPS fix, 2=Differential GPS fix, 6=Estimated fix)
xx = number of satellites in use
p.p = horizontal dilution of precision
a.b = Antenna altitude above mean-sea-level
M = units of antenna altitude, meters
c.d = Geoidal height
M = units of geoidal height, meters
x.x = Age of Differential GPS data (seconds since last valid RTCM transmission)
nnnn = Differential reference station ID, 0000 to 1023
When reading NMEA-0183 data, it is important that the code be flexible enough to gather similar data from multiple sources.
The new standard, NMEA 2000, accommodates several "talkers" at a higher baud rate, without using a central hub. NMEA 2000 can be considered a successor to the NMEA 0183 standard. It has a significantly higher data rate (250k bits/second vs. 4.8k bits/second for NMEA 0183).
More can be found on: