NMEA Strings
NMEA String Data – Utilizing a third-party GPS receiver
or utilizing a StarFire 3000
National Marine Electronics Association (NMEA) has developed
a specification that defines the interface between various pieces
of electronic equipment.
NOTE: In order to use NMEA data, purchase a radar harness kit.
One of the most important NMEA sentences include the GGA which
provides the current Fix data, the RMC which provides the minimum
GPS sentences information, and the GSA which provides the satellite
status data.
GGA - essential fix data which provide
3D location and accuracy data.
GGA STRING EXAMPLE:
$GPGGA,123519,4807.038,N,01131.000,
E,1,08,0.9,545.4,M,46.9,M,,*47
Where:
|
GGA
|
Global Positioning System Fix Data
|
|
123519
|
Fix taken at 12:35:19 UTC
|
|
4807.038,N
|
Latitude 48 degrees 07.038' N
|
|
01131.000,E
|
Longitude 11 degrees 31.000' E
|
|
1
|
Fix quality:
0 = invalid
1 = GPS fix (SPS)
2 = DGPS fix
3 = PPS fix
4 = Real Time Kinematic
5 = Float RTK
6 = estimated (dead reckoning)
7 = Manual input mode
8 = Simulation mode
|
|
08
|
Number of satellites being tracked
|
|
0.9
|
Horizontal dilution of position
|
|
545.4,M
|
Altitude, Meters, above mean sea level
|
|
46.9,M
|
Height of geoid (mean sea level) above WGS84
|
GSA - GPS DOP and active satellites.
This sentence provides details on the nature of the satellite constellation
fix. It includes the numbers of the satellites being used in the current
solution and the DOP. DOP (dilution of precision) is an indication
of the effect of satellite geometry on the accuracy of the fix. It
is a unitless number where smaller is better. For 3D fixes using 4
satellites a 1.0 would be considered to be a perfect number. However,
for overdetermined solutions it is possible to see numbers below 1.0.
There are differences in the way the PRN's are presented which
can effect the ability of some programs to display this data. In the
following example, there are 5 satellites in the solution and the
null fields are scattered indicating the almanac would show satellites
in the null positions that are not being used as part of this solution.
Other receivers output all of the satellites used at the beginning
of the sentence with the null field all stacked up at the end. This
difference accounts for some satellite display programs not always
being able to display the satellites being tracked. Some units show
all satellites that have ephemeris data without regard to their use
as part of the solution but this is non-standard.
GSA String Example
$GPGSA,A,3,04,05,,09,12,,,24,,,,,2.5,1.3,2.1*39
Where:
|
GSA
|
Satellite status
|
|
A
|
Auto selection of 2D or 3D fix (M = manual)
|
|
3
|
3D fix - values include::
1 = no fix
2 = 2D fix
3 = 3D fix
|
|
04,05
|
PRNs of satellites used for fix (space for 12)
|
|
2.5
|
PDOP (dilution of precision)
|
|
1.3
|
Horizontal dilution of precision (HDOP)
|
|
2.1
|
Vertical dilution of precision (VDOP)
|
|
*39
|
the checksum data, always begins with *
|
RMC - NMEA has its own version of essential gps pvt (position,
velocity, time) data. It is called RMC, The Recommended Minimum, which
looks like:
RMC String Example
$GPRMC,123519,A,4807.038,N,01131.000,
E,022.4,084.4,230394,003.1,W*6A
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
|
|
*6A
|
The checksum data, always begins with *
|
VTG - Velocity made good. The GPS receiver may use the LC prefix
instead of GP if it is emulating Loran output.
VTG String Example
$GPVTG,054.7,T,034.4,M,005.5,N,010.2,K*33
where:
|
VTG
|
Track made good and ground speed
|
|
054.7,T
|
True track made good (degrees)
|
|
034.4,M
|
Magnetic track made good
|
|
005.5,N
|
Ground speed, knots
|
|
010.2,K
|
Ground speed, Kilometers per hour
|
|
*33
|
Checksum
|
ZDA - Data and Time
ZDA String Example
$GPZDA,hhmmss.ss,dd,mm,yyyy,xx,yy*CC
$GPZDA,201530.00,04,07,2002,00,00*6E
where:
|
hhmmss
|
HrMinSec(UTC)
|
|
dd,mm,yyy
|
Day,Month,Year
|
|
xx
|
local zone hours -13..13
|
|
yy
|
local zone minutes 0..59
|
|
*CC
|
checksum
|
|
|
CF86321,0000049-19-20110404
|
|