The easiest way to get started is to use an inexpensive USB to TTL adapter cable with your GPS module.
You can of course use the HW UART directly on the Pi, but as you can see in this tutorial (Freeing UART on the Pi) it's a bit more complicated, and there are no secondary consequences with the USB adapter.
This tutorial will assume that we are using the USB to TTL cable mentioned above, and that we are running on Raspbian. Raspbian already has the drivers for PL2303-based cables pre-installed, so you just need to plug it in and it should show up as /dev/ttyUSB0).
Hooking The Breakout Up
The first thing you'll need to do is to hook your Ultimate GPS Breakout up to the Pi with the adapter cable. The following diagram shows you what you need to know, essentially just connecting the cables of the same color together.
- GPS Vin to USB 5V or 3V (red wire on USB console cable)
- GPS Ground to USB Ground (black wire)
- GPS RX to USB TX (green wire)
- GPS TX to USB RX (white wire)
While the module on the Ultimate GPS Breakout has an exceptionally sensitive antenna and may work indoors as is, you may want to pick up an external GPS Antenna and an SMA to u.FL adapter cable if this is for indoor use. This will allow you to keep the Pi and GPS breakout indoors, but run the antenna out a window or at least near one for improved reliability and signal integrity.
Setting up the USB Adapter
Once you plug the USB cable into the Pi, the adapter should show up as /dev/ttyUSB0 (though the '0' may be different if you have other ttyUSB adapters present).You can see a list of all ttyUSB devices by entering the following into the console (I'm using the 'terminal' feature in Adafruit's browser-based WebIDE here for convenience sake!):
ls /dev/ttyUSB*
sudo lsusb
If you just want to do a quick check to see what data is coming out of the GPS, you can enter the following command, followed by Ctrl-C to quit:
sudo cat /dev/ttyUSB0
Installing a GPS Daemon (gpsd)
The next step is installing some software on your Raspberry Pi that understands the serial data that your GPS module is providing via /dev/ttyUSB0.To install gpsd, simply run the following commands from the console:
sudo apt-get install gpsd gpsd-clients
Raspbian Jessie systemd service fix
Note if you're using the Raspbian Jessie or later release you'll need to disable a systemd service that gpsd installs. This service has systemd listen on a local socket and run gpsd when clients connect to it, however it will also interfere with other gpsd instances that are manually run (like in this guide). You will need to disable the gpsd systemd service by running the following commands:
sudo systemctl stop gpsd.socket sudo systemctl disable gpsd.socket
Should you ever want to enable the default gpsd systemd service you can run these commands to restore it (but remember the rest of the steps in this guide won't work!):
sudo systemctl enable gpsd.socket sudo systemctl start gpsd.socket
After disabling the gpsd systemd service above you're ready to try running gpsd manually. Now run the following command to manually start gpsd and point it at the GPS breakout on the USB serial adapter port:
sudo gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock
Testing it Out
After a few seconds, gpsd should open up the proper socket and if the GPS is locked we should be able to get some data from the GPS module.To test this, we can use the following command:
cgps -s
sudo killall gpsd sudo gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock
Page last edited March 08, 2024
Text editor powered by tinymce.