Detailed explanation of GPS NMEA-0183 Protocol
NMEA Association
The purpose of this discussion is to establish a unified btcm (maritime radio technology commission) standard in different GPS (GPS) navigation devices by the National Oceanic Electronics Association (NMEA-
National Marine Electronics
A set of communication protocols developed by Associa-tion. According to the standard specification of NMEA-0183 protocol, GPS receiver transmits location, speed and other information to PC, PDA and so on through serial port.
Device.
NMEA-0183 protocol is a standard protocol that must be followed by GPS receivers, and is also the most widely used protocol on GPS receivers, most common GPS receivers, GPS data processing software, and navigation software are compliant with or at least compatible with this Protocol.
However, there are also a few manufacturers using their own protocols such as Garmin's GPS device (some Garmin devices can also output compatibility
NMEA-0183 protocol data ). For software, the familiar Google Earth does not currently support NMEA-0183 protocols, but Google
Earth has declared compatibility with the NMEA-0183 protocol as soon as possible. Well, unless you are strong enough to compete with industrial standards, you have to obey industrial standards.
The NMEA-0183 Protocol defines a lot of statements, but the commonly used or most compatible statements are only $ gpgga, $ gpgsa, $ gpgsv, $ gwmc, $ gpvtg, $ gpgll and so on. The following describes the field definitions of these commonly used NMEA-0183 statements.
$ Gpgga
Example: $ gpgga, 092204.999, 4250.5589, S, 14718.5084, E, 24.4, 19.7, 0000, M, * 1f
Field 0: $ gpgga, statement ID, indicating that the statement is Global Positioning System Fix Data (GGA) GPS location information
Field 1: UTC time, hhmmss. Sss, in the format of hour/minute/second
Field 2: latitude ddmm. Mmmm, degree score format (add 0 if the number of leading digits is insufficient)
Field 3: latitude N (north latitude) or S (south latitude)
Field 4: longitude dddmm. Mmmm, degree score format (add 0 if the number of leading digits is insufficient)
Field 5: longitude E (eastern longitude) or W (Western longitude)
Field 6: GPS status, 0 = undetermined, 1 = non-differential positioning, 2 = differential positioning, 3 = Invalid PPS, 6 = being estimated
Field 7: number of satellites in use (00-12) (0 if the number of leading digits is insufficient)
Field 8: hdop horizontal precision factor (0.5-99.9)
Field 9: altitude (-9999.9-99999.9)
Field 10: height of the earth's elliptical sphere relative to the geolevel
Field 11: differential time (the number of seconds from the last time the differential signal was received. If it is not a differential signal, it will be blank)
Field 12: ID of the differential substation: 0000-1023 (0 is added if the number of leading digits is insufficient. Otherwise, the differential positioning will be blank)
Field 13: Check Value
$ Gpgsa
Example: $ gpgsa, A, 40.4, 20, 19, 13, 24.4, 32.2 * 0a
Field 0: $ gpgsa, statement ID, indicating the current satellite information of gps dop and active satellites (GSA)
Field 1: positioning mode, a = Automatic manual 2D/3d, M = manual 2D/3D
Field 2: positioning type, 1 = undetermined, 2 = 2D, 3 = 3D
Field 3: PRN code (Pseudo-Random Noise Code), number of the satellite PRN code used by the 1st channel (00) (0 if the number of leading digits is insufficient)
Field 4: PRN code (Pseudo-Random Noise Code), number of the satellite PRN code used by the 2nd channel (00) (0 if the number of leading digits is insufficient)
Field 5: PRN code (Pseudo-Random Noise Code), number of the satellite PRN code used by the 3rd channel (00) (0 if the number of leading digits is insufficient)
Field 6: PRN code (Pseudo-Random Noise Code), number of the satellite PRN code used by the 4th channel (00) (0 if the number of leading digits is insufficient)
Field 7: PRN code (Pseudo-Random Noise Code), number of the satellite PRN code used by the 5th channel (00) (0 if the number of leading digits is insufficient)
Field 8: PRN code (Pseudo-Random Noise Code), number of the satellite PRN code used by the 6th channel (00) (0 if the number of leading digits is insufficient)
Field 9: PRN code (Pseudo-Random Noise Code), number of the satellite PRN code used by the 7th channel (00) (0 if the number of leading digits is insufficient)
Field 10: PRN code (Pseudo-Random Noise Code), number of the satellite PRN code used by the 8th channel (00) (0 if the number of leading digits is insufficient)
Field 11: PRN code (Pseudo-Random Noise Code), number of the satellite PRN code used by the 9th channel (00) (0 if the number of leading digits is insufficient)
Field 12: PRN code (Pseudo-Random Noise Code), number of the satellite PRN code used by the 10th channel (00) (0 if the number of leading digits is insufficient)
Field 13: PRN code (Pseudo-Random Noise Code), number of the satellite PRN code used by the 11th channel (00) (0 if the number of leading digits is insufficient)
Field 14: PRN code (Pseudo-Random Noise Code), number of the satellite PRN code used by the 12th channel (00) (0 if the number of leading digits is insufficient)
Field 15: pdop comprehensive position precision factor (0.5-99.9)
Field 16: hdop horizontal precision factor (0.5-99.9)
Field 17: vdop vertical precision factor (0.5-99.9)
Field 18: Check Value
$ Gpgsv
Example: $ gpgsv, 78,331, 59,235, 41,069, * 70
Field 0: $ gpgsv, statement ID, indicating that the statement is GPS satellites in view (GSV) Visible satellite information
Field 1: Total number of GSV statements (1-3)
Field 2: The number of GSV statements in this GSV statement (1-3)
Field 3: Total number of visible satellites (00-12) (0 if the number of leading digits is insufficient)
Field 4: PRN code (Pseudo-Random Noise Code) (01-32) (add 0 if the number of leading digits is insufficient)
Field 5: Satellite elevation (00-90) degree (0 if the number of leading digits is insufficient)
Field 6: Satellite azimuth (00-359) degree (0 if the number of leading digits is insufficient)
Field 7: signal-to-noise ratio (00-99) dbhz
Field 8: PRN code (Pseudo-Random Noise Code) (01-32) (0 if the number of leading digits is insufficient)
Field 9: Satellite elevation (00-90) degree (0 if the number of leading digits is insufficient)
Field 10: Satellite azimuth (00-359) degree (0 if the number of leading digits is insufficient)
Field 11: signal-to-noise ratio (00-99) dbhz
Field 12: PRN code (Pseudo-Random Noise Code) (01-32) (add 0 if the number of leading digits is insufficient)
Field 13: Satellite elevation (00-90) degree (0 if the number of leading digits is insufficient)
Field 14: Satellite azimuth (00-359) degree (0 if the number of leading digits is insufficient)
Field 15: signal-to-noise ratio (00-99) dbhz
Field 16: Check Value
$ Uplmc
Example: $ gprs mc, 024813.640, A, 3158.4608, N, 11848.3737, E, 10.05, 324.27, 150706, A * 50
Field 0: $ uplmc, statement ID, indicating that the statement is the minimum location information recommended by recommended minimum specific GPS/transit data (RMC ).
Field 1: UTC time, hhmmss. Sss format
Field 2: Status, A = positioning, V = uncertain
Field 3: latitude ddmm. Mmmm, degree score format (add 0 if the number of leading digits is insufficient)
Field 4: latitude N (north latitude) or S (south latitude)
Field 5: longitude dddmm. Mmmm, degree score format (add 0 if the number of leading digits is insufficient)
Field 6: longitude E (eastern longitude) or W (Western longitude)
Field 7: speed, section, knots
Field 8: azimuth, Degree
Field 9: UTC date, in ddmmyy format
Field 10: Magnetic offset (180-) (0 if the number of leading digits is insufficient)
Field 11: Magnetic angle direction, E = east W = West
Field 16: Check Value
$ Gpvtg
Example: $ gpvtg, 89.68, T, M, 0.00, N, 0.0, K * 5f
Field 0: $ gpvtg, statement ID, indicating that the statement is track made good and ground speed (Vtg) ground speed information
Field 1: motion angle, 000-359 (0 if the number of leading digits is insufficient)
Field 2: t = zhenbei Reference System
Field 3: motion angle, 000-359 (0 if the number of leading digits is insufficient)
Field 4: M = magnetic north Frame
Field 5: horizontal speed (0.00) (0 if the number of leading digits is insufficient)
Field 6: N = Section, knots
Field 7: horizontal speed (0.00) (0 if the number of leading digits is insufficient)
Field 8: K = km/hour, km/h
Field 9: Check Value
$ Gpgll
Example: $ gpgll, 4250.5589, S, 14718.5084, E, 092204.999, A * 2D
Field 0: $ gpgll, statement ID, indicating that the statement is geographic position (GlL) Location Information
Field 1: latitude ddmm. Mmmm, degree score format (add 0 if the number of leading digits is insufficient)
Field 2: latitude N (north latitude) or S (south latitude)
Field 3: longitude dddmm. Mmmm, degree score format (add 0 if the number of leading digits is insufficient)
Field 4: longitude E (eastern longitude) or W (Western longitude)
Field 5: UTC time, hhmmss. Sss format
Field 6: Status, A = positioning, V = uncertain
Field 7: Check Value