Getting Started
Last revision 2026/01/29
This article serves as a beginner's guide to data analysis, focusing on GPS and Beidou systems, the NMEA0318 protocol, and the significance of various data types and formats in positioning and satellite tracking.
Data Analysis
It is recommended to test this module in an outdoor open place since if the antenna is placed on a balcony, its signal may be influenced by the buildings around. The positioning can be done within one minute in open spaces. When the onboard LED keeps flashing at a regular frequency, the positioning is completed. The default baudrate is 9600. Now let us check the data in the serial monitor.
*$GNGGA,084852.000,2236.9453,N,11408.4790,E,1,05,3.1,89.7,M,0.0,M,,48
$GNGLL,2236.9453,N,11408.4790,E,084852.000,A,A*4C
$GPGSA,A,3,10,18,31,,,,,,,,,,6.3,3.1,5.4*3E
$BDGSA,A,3,06,07,,,,,,,,,,,6.3,3.1,5.4*24
$GPGSV,3,1,09,10,78,325,24,12,36,064,,14,26,307,,18,67,146,27*71
$GPGSV,3,2,09,21,15,188,,24,13,043,,25,55,119,,31,36,247,30*7F
*$GPGSV,3,3,09,32,42,334,43
$BDGSV,1,1,02,06,68,055,27,07,82,211,31*6A
$GNRMC,084852.000,A,2236.9453,N,11408.4790,E,0.53,292.44,1412
16,,,A7 5 $GNVTG,292.44,T,,M,0.53,N,0.98,K,A2D
$GNZDA,084852.000,14,12,2016,00,00*48
$GPTXT,01,01,01,ANTENNA OK*35
There are three data types in the data: GN, GP and BD, which respectively represent the dual-mode mode, GPS mode, and Beidou mode.
NMEA0318 protocol frame format content can refer to the following forms:
- $GPGGA (GPS location information)
| Num | Name | Example | Unit | Description |
|---|---|---|---|---|
| Message ID | $GPGGA | GGA protocol header | ||
| <1> | UTC Position | 161229.487 | hhmmss.sss | |
| <2> | Latitude | 3723.2475 | ddmm.mmmm | |
| <3> | Latitude Direction | N | N=north or S=south | |
| <4> | Longitude | 12158.3416 | dddmm.mmmm | |
| <5> | Longitude | W | E=east or W=west | |
| <6> | Position Fix Indicator | 1 | 0: Fix not avilable or invalid 1: GPS SPS Mode, fix valid 2: Differential GPS, SPS Mode, fix valid 3: GPS PPS Mode, fix valid |
|
| <7> | Number of satellites in use | 07 | Range 00 to 12 | |
| <8> | Horizontal dilution of precision | 1.0 | Range: 0.5-99.9 | |
| <9> | Sea level height | 9.0 | meters | Range: -9999.9-9999.9 |
| <10> | Units | M | M stands for meter | |
| <11> | Geoid Separation | meters | Range: -999.9-9999.9 | |
| <12> | Units | M | M stands for meter | |
| <13> | Age of correction data | Seconds | Empty when no differentoal data is presented | |
| <14> | Diff. Ref. Station ID | 0000 | Range: 0000-1023 (empty when no differential data is presented) | |
| hh | Checksum | 18 | Checksum of all characters ASCII codes between $ and * (XOR each byte to get checksum, then convert it into ASCII characters in hexadecimal ) |
|
| CR LF | End of protocol frame |
- $GPGLL (Geographic Position Information)
| Num | Name | Example | Units | Description |
|---|---|---|---|---|
| Message ID | $GPGLL | GLL protocol header | ||
| <1> | Latitude | 3723.2475 | ddmm.mmmm | |
| <2> | Latitude Direction | N | N: north; S: south | |
| <3> | Longitude | 12158.3416 | dddmm.mmmm | |
| <4> | Longitude Direction | W | W: west; E: east | |
| <5> | UTC Position | 161229.487 | hhmmss.sss | |
| <6> | Data Statu | A | A=data valid; V=data invalid | |
| hh | Checksum | 2C |
- $GPGSA (Current Satellites Information)
| Num | Name | Example | Unit | Description |
|---|---|---|---|---|
| Message ID | $GPGSA | GSA Protocol Data header | ||
| <1> | Position Mode | A | M: manually; A: automatically | |
| <2> | Posistion Type | 3 | 1: fix not available | |
| <3> | PRN code number of satellite used on Channel 1 | 07 | PRN(Pseudo Random Noise) Range: 01~32, can receive 12 satellites information at most. | |
| <4> | PRN code number of satellite used on Channel 2 | 02 | Same as above | |
| <5> | PRN code number of satellite used on Channel 3 | 26 | Same as above | |
| <6> | PRN code number of satellite used on Channel 4 | 27 | Same as above | |
| <7> | PRN code number of satellite used on Channel 5 | 09 | Same as above | |
| <8> | PRN code number of satellite used on Channel 6 | 04 | Same as above | |
| <9> | PRN code number of satellite used on Channel 7 | 15 | Same as above | |
| <10> | PRN code number of satellite used on Channel 8 | Same as above | ||
| <11> | PRN code number of satellite used on Channel 9 | Same as above | ||
| <12> | PRN code number of satellite used on Channel 10 | Same as above | ||
| <13> | PRN code number of satellite used on Channel 11 | Same as above | ||
| <14> | PRN code number of satellite used on Channel 12 | Same as above | ||
| <15> | HDOP(Position Dilution Precision) | 1.8 | Range: 0.5-99.9 | |
| <16> | HDOP(Position Dilution Precision) | 1.0 | Range: 0.5-99.9 | |
| <17> | HDOP(Position Dilution Precision) | 1.5 | Range: 0.5-99.9 | |
| hh | Checksum | 2C | ||
| CR LF | End of protocol frame |
- $GPGSV (Satellites in View)
| Num | Name | Example | Unit | Description |
|---|---|---|---|---|
| Message ID | $GPGSV | GSV protocol header | ||
| <1> | Number of Messages | 2 | Range: 1 to 3 | |
| <2> | Message Serial Number | 1 | Range: 1 to 3 | |
| <3> | Satellites in View | 07 | Range: 00-12 | |
| <4> | Satellite ID | 07 | Range: 01-32 | |
| <5> | Elevation | 79 | Degree | Range: 00-90 |
| <6> | Azimuth | Azimuth | Degree | Range: 000-359 |
| <7> | SNR (C/No) | 42 | dBHz | Range 0 to 99, null when not tracking |
| <4> | Satellite ID | 02 | Range: 01-32 | |
| <5> | Elevation | 51 | Degree | Range: 00-90 |
| <6> | Azimuth | 062 | Degree | Range: 000-359 |
| <7> | SNR (C/No) | 43 | dBHz | Range 0 to 99 |
| <4> | Satellite ID | 26 | Range: 01-32 | |
| <5> | Elevation | 36 | Degree | Range: 00-90 |
| <6> | Azimuth | 256 | Degree | Range: 000-359 |
| <7> | SNR (C/No) | 42 | dBHz | Range 0 to 99 |
| <4> | Satellite ID | 27 | Range: 01-32 | |
| <5> | Elevation | 27 | Degree | Range: 00-90 |
| <6> | Azimuth | 138 | Degree | Range: 000-359 |
| <7> | SNR (C/No) | 42 | dBHz | Range: 0 to 99 |
| hh | Checksum | 71 | ||
| CR LF | End of protocol frame |
- $GPRMC (Minimum GNSS Data)
| Num | Name | Example | Unit | Description |
|---|---|---|---|---|
| Message ID | $GPRMC | RMC Protocol Header | ||
| <1> | UTC Position | 161229.487 | hhmmss.sss | |
| <2> | Position Status | A | A: position; V: navigation | |
| <3> | Latitude | 3723.2475 | ddmm.mmmm | |
| <4> | Latitude Direction | N | N: north; S: south | |
| <5> | Longitude | 12158.3416 | dddmm.mmmm | |
| <6> | Longitude | W | W: west; E: east | |
| <7> | Speed Over Ground | 0.13 | Knots | Range: 000.0-999.9 |
| <8> | Course Over Ground | 309.62 | Degree | Taking due north as the reference datum, the two-dimensional direction points, which is equivalent to a two-dimensional compass |
| <9> | Data Status | A | A: data valid; V: data invalid | |
| <10> | Magnetic Variation | Degree | Range: 000-180 | |
| <11> | Magnetic declination direction | E: east; W: west | ||
| hh | Checksum | 10 | ||
| CR LF | End of protocol frame |
- $GPVTG (Ground Speed Information)
| Num | Name | Example | Unit | Description |
|---|---|---|---|---|
| Message | $GPVTG | VTG protocol header | ||
| <1> | Course Over Ground | 309.62 | Degree | Taking due north as the reference datum, the two-dimensional direction points, which is equivalent to a two-dimensional compass |
| <2> | T | True north reference system | ||
| <3> | Magnetic Variation | Degree | ||
| <4> | M | Magnetic north reference system | ||
| <5> | Speed over ground | 0.13 | Knots | Range: 000.0-999.9 |
| <6> | N | Knots | ||
| <7> | Horizontal velocity | 0.2 | ||
| <8> | K | km/h | ||
| hh | Checksum | 6E | ||
| CR LF | End of protocol frame |
-
Antenna Status Output
$GPTXT,01,01,01, ANTENNA OK*35
"Ok" means that the antenna has been detected, and "open" represents the antenna is disconnected.
-
UTC time and Current time in Beijing
$GNGGA,084852.000,2236.9453,N,11408.4790,E,1,05,3.1,89.7,M,0.0,M,,*48
The numbers in bold represent UTC time. Its format is hhmmss.sss. The three digits after the decimal point should be omitted so the numbers above means that it is 08:48:52.
UTC + Time Zone Difference = Local Time
The time of eastern zone is positive, the western zone is negative. The time in Beijing follows the time offset of UTC+08:00 so the current time in Beijing is 16:48:52.
-
Format of latitudes and longitudes
$GNRMC,084852.000,A,2236.9453,N,11408.4790,E,0.53,292.44,141216,,,A*7 5
Data format: ddd°mm.mmm’ Convert to the format of Google or Baidu Map.
Latitude: ddmm.mmmm, Northern Latitude 2236.9453,22+(36.9453/60)= 22.615755
Longitude: dddmm.mmmm, East Longitude 11408.4790,114+(08.4790/60)=114.141317
(10) Description of hot start, warm start and cold start
The Cold Start refers to the process of starting GPS in an unfamiliar environment until it connects with the surrounding satellites and calculates coordinates.
The following three situations are all cold start:
-
Use for the first time;
-
Ephemeris information lost due to batterry depletion;
-
Move the receiver more than 1000km in power off state. That is to say, the cold start is a mandatory start-up through hardware. When the GPS has cleared the internal positioning information since the last operation, and the GPS receiver has lost satellites parameters, or the navigator cannot work properly because existing parameters because the existing parameters are too different from the actual received satellite parameters, it is necessary for GPS to obtain the new coordinate data provided by the satellite. A vehicle startting a navigation from a basement is cold start. This is also the reason why it takes a long time to search for satellites from the basement.
Warm start refers to the start-up more than 2 hours from the last positioning time. The positioning time is between cold start and hot start.
If you have used GPS positioning one day ago, the first startup of next day belongs to warm start, and the last position information will be displayed after startup. The latitude, longitude and altitude of the last operation are known, but since the shutdown time is too long, the ephemeris has changed and the previous cannot accept it. Several satellittes in the parameters have lost contact with the GPS receiver and have to continue searching for additional position information. Therefore, searching time for warm start is longer than that of hot start and shorter than cold start.
When starting GPS at the place where it was shut down last time, and the time from last positioning time is less than 2 hours, it is hot start. Some preparation work such as saving and closing can be done by software.
Was this article helpful?
