Week 4 – GPS Messages


This week I’ve started testing out the hardware components that will be used in my satellite tracking project. The first component I’m trying out is a GNSS receiver, specifically the ublox ZED-F9P. If you are like me and didn’t know this already, GNSS (global navigation satellite system) simply refers to “any satellite constellation that provides positioning, navigation, and timing (PNT) services on a global or regional basis”. Various nations have created their own GNSS systems: GPS (United States), GLONASS (Russia), Galileo (EU), BDS(China), etc. The ublox receiver I’m using can receive messages from all of these GNSS systems.

The ublox ZED-F9P with the antenna attached.

Testing out the receiver was almost as easy as plugging it into a USB port on the Raspberry Pi or a computer. The ublox receiver makes a simple serial connection and sends strings of data formatted as NMEA sentences (more on this later). On the Pi, viewing this data is as easy as reading from a serial port and printing it to the terminal with this command:

cat /dev/ttyACM0

I also tested the receiver on my computer using the ublox u-center software that parses the NMEA sentences and displays a ton of useful information. Here are some screenshots taken from around 9:30PM on April 21, 2022:

u-center Satellite Signal and Data view

These views are constantly being updated as the software parses the NMEA messages. Interestingly the only satellites being used in navigation at this moment were BDS.

The NMEA sentences themselves are pretty cryptic if they are just viewed as raw data. There are several different types of messages, and GPS World gives a great breakdown of the $GPGGA message. Here is an example of how what raw NMEA sentences look like in u-center:

Let’s breakdown the highlighted $GPGSV message:

$GPGSV,3,2,11,18,33,113,,21,09,302,,22,13,193,,23,61,053,,6*6A

This message type is used to provide information about satellites that are in view of the receiver. It can send information for up to four satellites, and if more are in view it will chain multiple messages together.

The GP in GPGSV indicates that this sentence is from the GPS system. The following two values indicate the total number of messages (3) and the current message’s number (2). The next value indicates the total number of visible satellites (11). Following this “header” information, each set of four values indicates the PRN, elevation, azimuth, and SNR of each satellite. The SNR can be null (as in the example above) when not tracking. The final element, “6*6A” is the GNSS system ID (6) and a checksum (*6A).

That’s all for now on my progress with the GPS component of this project! Next up will be making sense of the NMEA sentences.

Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published. Required fields are marked *