NMEA 0183 is a combined electrical and data specification for communication between marine electronic devices such as echo sounder, sonars, anemometer, gyrocompass, autopilot, GPS receivers and many other types of instruments. It has been defined by, and is controlled by, the U.S.-based National Marine Electronics Association. It replaces the earlier NMEA 0180 and NMEA 0182 standards. In marine applications it is slowly being phased out in favor of the newer NMEA 2000 standard.
NMEA-0180 and 0182 are very limited, and just deal with communcations from a Loran-C (or other navigation receiver, although the standards specifically mention Loran), and an autopilot.
NMEA 0183 versions:
NMEA 2.00 Published January 1992 (NMEA 0183 migrated from RS 232 to RS422)
NMEA 2.01 Published August 1994
NMEA 2.10 Published October 1995
NMEA 2.20 Published January 1997
NMEA 2.30 Published March 1998
NMEA 3.00 Published July 2000
NMEA 3.01 Published January 2002
NMEA 4.00 Puiblished November 2008
NMEA 2000 is a protocol used to create a network of electronic devices—chiefly marine instruments—on a boat. Various instruments that meet the NMEA 2000 standard are connected to one central cable, known as a backbone. The backbone powers each instrument and relays data among all of the instruments on the network. This allows one display unit to show many different types of information. It also allows the instruments to work together, since they share data. NMEA 2000 is meant to be "plug and play" to allow devices made by different manufacturers to talk and listen to each other.
Baud rate | 4800 |
Parity | None |
Data bits | 8 |
Stop bits | 1 |
Handshake | None |
NMEA Message | UTC date/time | Position | Course | Speed |
RMC | + | + | + | + |
GGA | + | + | ||
GLL | + | + | ||
ZDA | + | |||
GNS | + | + | ||
HDT,HDG,HMR | + | |||
VBW,VHW,VTG | + | + | ||
BEC,BWC,BWR | + |
$ttsss,d1,d2,....CRLF
. 11 1 2 3 4 5 6 7 8 9 10 | 12 13 14 15 | | | | | | | | | | | | | | | $--GGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx*hh 1) Time (UTC) 2) Latitude 3) N or S (North or South) 4) Longitude 5) E or W (East or West) 6) GPS Quality Indicator, 0 - fix not available, 1 - GPS fix, 2 - Differential GPS fix 7) Number of satellites in view, 00 - 12 8) Horizontal Dilution of precision 9) Antenna Altitude above/below mean-sea-level (geoid) 10) Units of antenna altitude, meters 11) Geoidal separation, the difference between the WGS-84 earth ellipsoid and mean-sea-level (geoid), "-" means mean-sea-level below ellipsoid 12) Units of geoidal separation, meters 13) Age of differential GPS data, time in seconds since last SC104 type 1 or 9 update, null field when DGPS is not used 14) Differential reference station ID, 0000-1023 15) Checksum
. 1 2 3 4 5 6 7 | | | | | | | $--GLL,llll.ll,a,yyyyy.yy,a,hhmmss.ss,A*hh 1) Latitude 2) N or S (North or South) 3) Longitude 4) E or W (East or West) 5) Time (UTC) 6) Status A - Data Valid, V - Data Invalid 7) Checksum
. 1 2 3 14 15 16 17 18 | | | | | | | | $--GSA,a,a,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x.x,x.x,x.x*hh 1) Selection mode 2) Mode 3) ID of 1st satellite used for fix 4) ID of 2nd satellite used for fix ... 14) ID of 12th satellite used for fix 15) PDOP in meters 16) HDOP in meters 17) VDOP in meters 18) Checksum
. 1 2 3 4 5 6 7 n | | | | | | | | $--GSV,x,x,x,x,x,x,x,...*hh 1) total number of messages 2) message number 3) satellites in view 4) satellite number 5) elevation in degrees 6) azimuth in degrees to true 7) SNR in dB more satellite infos like 4)-7) n) Checksum
. 1 2 3 | | | $--HDT,x.x,T*hh 1) Heading Degrees, true 2) T = True 3) Checksum
. 1 2 3 4 5 6 7 8 9 10 11 12 | | | | | | | | | | | | $--RMC,hhmmss.ss,A,llll.ll,a,yyyyy.yy,a,x.x,x.x,xxxx,x.x,a*hh 1) Time (UTC) 2) Status, V = Navigation receiver warning 3) Latitude 4) N or S 5) Longitude 6) E or W 7) Speed over ground, knots 8) Track made good, degrees true 9) Date, ddmmyy 10) Magnetic Variation, degrees 11) E or W 12) Checksum