Beaglebone Black GPS LESSON 1: Hooking Up the Adafruit Ultimate GPS

Beaglebone GPS
Beaglebone Black connected to the Adafruit Ultimate GPS

If you went through our series of 12 lessons on the Beaglebone black you should be familiar with the basics of this microcontroller. We are now ready to move on to more advanced projects. In our earlier lessons on the Arduino, we built a GPS data logger and integrated it with Google Earth using the Arduino Uno and the Adafruit Ultimate GPS Breakout Board. While that was a great project, we finally ran out of horsepower with the arduino, and what we could do was limited by the memory limitations on the Arduino. Also, it is very hard to parse strings in the Arduino IDE, so interpreting the NMEA sentences is a rather large challenge with the limited string functionality in Arduino.

Python on the other hand makes quick work of string manipulation and the Beaglebone Black has plenty of horsepower for any manipulation of the NMEA sentences we might want to do.

In order to play along with this project, you will need a Beaglebone Black Rev C, which you can get HERE, and the Adafruit Ultimate GPS which you can get HERE. The video below takes you through the project step-by-step, as well as the description below.

Once you get your gear, you will want to hook up the following circuit:

Beaglebone GPS
Adafruit Ultimate GPS connected to the Beaglebone Black Rev C Microcontroller

Note that we are working off header P9 and we are using P9_1 as ground, P9_7 as VIN, we are using P9_24 as  Tx and P9_26 as Rx. Please note that you can see a detailed Diagram of the Beaglebone Black pinout HERE. Also notice that Tx on the Beaglebone is connected to Rx on the GPS, and Rx on the Beaglebone is connected to Tx on the GPS. Tx is like “talk” and Rx is like “listen, so you want to listen to the pin that is talking, and you want to talk to the pin that is listening.

Our goal in this first lesson is to establish a connection between the GPS and the Beaglebone, and to read in the data streaming from the GPS. We want to get a fix, and verify that we can read and print the NMEA sentences that contain the various position, altitude and velocity data.

The video takes you step-by-step through the code. The following simple code will get you streaming data from the GPS to your terminal window. In future lessons we will break the data down and show you how to get your position from the raw NMEA sentences streaming in.


12 thoughts on “Beaglebone Black GPS LESSON 1: Hooking Up the Adafruit Ultimate GPS”

  1. Hello Paul McWhorter.

    Thank you so much for that awesome GPS tutorial series, can I expect a new episode in the future for “real time GPS tracker using python and google maps”,

    Best Regards

    1. I will continue this series of lessons. Unfortunately, Google Earth will not display on the Beaglebone Black. So, we will use the BBB to collect data, parse it, and save it to a file on the BBB. Then we will send or upload to a desktop computer to display on Google Earth. We can show on the BBB on a screen real time location data of Latitude, Longitude, altitude and velocity, but to show on google earth, we will need to send a file to a desktop computer.

      1. Actually my idea is that the GPS module will be connected to any MCU, and it will send the longitude and latitude packets wirelessly to a computer, and the computer keep real time tracking the location of the GPS via python and google maps, if that possible!.

        Best regards

  2. I have connected Huawei MU609 GPS module to Mini-PCIE slot. My ubuntu detectes it as USB0, I used above method i get random output rather GPS latitude and longitude. Can u pls provide some guideline on this.

  3. How can I do this on the raspberry pi while connecting the
    ultimate GPS via USB-tty cable?
    Every suggestion is welcome!

  4. Hello Paul McWhorter.

    Thanks for the lessons. With some minor modifications I use them on my MacBook Pro with the latest version of python.
    Have now running the Adafruit Ultimate Breakout V3 and the HICOM HI-206.
    I have learn a lot of the lessons. One question. When I send a command to the gps and don’t now the baudrate how to proceed?

    Best regards.


  5. Hi Mr Paul

    Thanks for your lesson, please can i use this first program to read data with another GPS ? i have this… GPS reciever Em506

    I am using your first program, but i can’t see any data after launc … python at terminal… Do you have a mos
    t simple program to check if i am doing all well… thanks for your anwser…

  6. PLease can i use this first program to read data with grove GPS.
    i’am using your program but I received an error concerning the port “could not open the port” can you please help me .. thanks for your anwer

    1. i have the same problem when I’m connecting to windows.what should i make the change in the programming part

Comments are closed.