PDF Print E-mail

The NMEA 0183 Interface Standard defines electrical signal requirements, data transmission protocol and time, and specific sentence formats for a 4800-baud serial data bus. Each bus may have only one talker but many listeners

The NMEA 0183 protocol is a means by which marine instruments and also most GPS receivers can communicate with each other. It has been defined by, and is controlled by, the US based National Marine Electronics Association (NMEA)

The Interface Standard is a copyrighted document and available only from NMEA. Other internet offerings are not authorized and may constitute a copyright infringement.

Therefore the resulted description does not apply for completeness, disclosing of all modes and functions, and is only simple description of some base opportunities of NMEA 0183 Standard.

If you want to get the full description of latest version of the NMEA 0183 Interface Standard, you may contact to NMEA at this page http://www.nmea.org/pub/0183/

The NMEA standard provides quite a range of sentences, but many relate to non-GPS devices and some others are GPS related but rarely used. We normally recommend the use of NMEA mode for new GPS applications to give maximum compatibility with all GPS receivers. Most GPS receivers also have a binary mode but it is normally best to reserve the use of binary GPS protocols for applications that really require their use, such as those requiring position updates of greater than once per second

Common NMEA Setence types

$GPRMC Sentence (Position and time)
$GPGGA Sentence (Fix data)
$GPGLL Sentence (Position)
$GPGSA Sentence (Active satellites)
$GPGSV Sentence (Satellites in view)
$GPVTG Sentence (Course over ground)
$GPZDA Sentence (UTC Date and Time)

Common NMEA Setence Description

$GPRMC – Recommended minimum specific GNSS data
$GPRMC, Hhmmss.ss, A, 1111.11, A, yyyyy.yy, a, x.x, x.x, ddmmyy, x.x, A *hh

1 2 3 4 5 6 7 8 9 10 11 12
$GPRMC, Hhmmss.ss, A, 1111.11, A, yyyyy.yy, a, x.x, x.x, ddmmyy, x.x, A *hh
  1. UTC Time
  2. Status
  3. Latitude
  4. N/S Indicator
  5. Longitude
  6. E/W Indicator
  7. Speed over ground
  8. Course over ground
  9. UTC Date
  10. Magnetic variation
  11. Magnetic variation
  12. Checksum
Example:
signal not acquired: $GPRMC,235947.000,V,0000.0000,N,00000.0000,E,,,041299,,*1D
signal acquired: $GPRMC,092204.999,A,4250.5589,S,14718.5084,E,0.00,89.68,211200,,*25

$GPGGA - Global positioning system fixed data
$GPGGA, hhmmss.ss, 1111.11, a, yyyyy.yy, a, x, xx, x.x, xxx, M, x.x, M, x.x, xxxx *hh

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
$GPGGA, hhmmss.ss, 1111.11, a, yyyyy.yy, a, x, xx, x.x, xxx, M, x.x, M, x.x, xxxx *hh
  1. UTC Time
  2. Latitude
  3. N/S Indicator
  4. Longitude
  5. E/W Indicator
  6. Position Fix:
    • 0 = Invalid;
    • 1 = Valid SPS;
    • 2 = Valid DGPS;
    • 3 = Valid PPS.
  7. Satellites Used
  8. Horizontal dilution of precision (HDOP)
  9. Altitude in meters according to WGS-84 ellipsoid
  10. Altitude Units
  11. Geoid seperation in meters according to WGS-84 ellipsoid
  12. Seperation Units
  13. Age of DGPS data in seconds
  14. DGPS Station ID
  15. Checksum
Example:
signal not acquired: $GPGGA,235947.000,0000.0000,N,00000.0000,E,0,00,0.0,0.0,M,,,,0000*00
signal acquired: $GPGGA,092204.999,4250.5589,S,14718.5084,E,1,04,24.4,19.7,M,,,,0000*1F

$GPGLL - Geographic position - latitude / longitude
$GPGLL, 1111.11, a, yyyyy.yy, a, hhmmss.ss, A *hh

1 2 3 4 5 6 7
$GPGLL, 1111.11, a, yyyyy.yy, a, hhmmss.ss, A *hh
  1. Latitude
  2. N/S Indicator
  3. Longitude
  4. E/W Indicator
  5. UTC Time
  6. Status A = valid, V = invalid
  7. Checksum
Example:
signal not acquired: $GPGLL,0000.0000,N,00000.0000,E,235947.000,V*2D
signal acquired: $GPGLL,4250.5589,S,14718.5084,E,092204.999,A*2D>

$GPGSA - GNSS DOP and active satellites.
$GPGSA, a, x, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, x.x, x.x, x.x *hh

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
$GPGSA, a, x, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, x.x, x.x, x.x *hh
  • 1. Mode 1:
    • M = Forced 2D/3D
    • A = Auto 2D/3D
  • 2. Mode 2: 1 = No fix, 2 = 2D, 3 = 3D
  • 3-14. Satellite used on channel PRN
  • 15. Position dilution of precision (PDOP)
  • 16. Horizontal dilution of precision (HDOP)
  • 17. Vertical dilution of precision (VDOP)
  • 18. Checksum
Example:
signal not acquired: $GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30
signal acquired: $GPGSA,A,3,01,20,19,13,,,,,,,,,40.4,24.4,32.2*0A

$GPGSV - GNSS satellites in view.
$GPGSV, x, x, xx, xx, xx, xxx, xx..........., xx, xx, xxx, xx *hh

1 2 3 4 5 6 7 8 15 16 17 18 19 20
$GPGSV, x, x, xx, xx, xx, xxx, xx..........., xx, xx, xxx, xx *hh
  • 1. Number of messages (1 to 9)
  • 2. Sequence number
  • 3. Satellites in view
  • 4. Satellite ID 1 (1-32)
  • 5. Elevation in degrees (0-90)
  • 6. Azimuth in degrees (0-359)
  • 7. Signal to noise ration in dBHZ (0-99)
  • 8-11. Satellite 2 information as 4-6
  • 12-15. Satellite 3 information as 4-6
  • 16-19. Satellite 4 information as 4-6
  • 20. Checksum
Example:
signal not acquired: $GPGSV,1,1,01,21,00,000,*4B
signal acquired: $GPGSV,3,1,10,20,78,331,45,01,59,235,47,22,41,069,,13,32,252,45*70

$GPVTG – Course over ground and ground speed
$GPVTG, x.x, T, x.x, M, x.x, N, x.x, K, i, *hh

1 2 3 4 5 6 7 8 9
$GPVTG, x.x, T, x.x, M, x.x, N, x.x, K, *hh
  1. Course in degrees
  2. Reference, T = True heading
  3. Course in degrees
  4. Reference, M = Magnetic heading
  5. Horizontal speed (SOG)
  6. Units, N = Knots
  7. Horizontal Speed (SOG)
  8. Units, К = Km/h
  9. Checksum
Example:
signal acquired: $GPVTG,89.68,T,,M,0.00,N,0.0,K*5F
signal not acquired: $GPVTG,,T,,M,,N,,K*4E

$GPZDA – UTC Date and Time
$GPZDA, hhmmss.s, xx, xx, xxxx, xx, xx *hh

1 2 3 4 5 6 7
$GPZDA, hhmmss.s, xx, xx, xxxx, xx, xx, *hh
  1. UTC Time
  2. Day (01 to 31)
  3. Month (01 to 12)
  4. Year
  5. Time zone, GMT displacement, hours (00 to ± 13)
  6. Time zone, GMT displacement, minutes
  7. Checksum
Example:
$GPZDA,172809,12,07,1996,00,00*45

External links:

http://www.nmea.org/pub/0183/
http://en.wikipedia.org/wiki/NMEA