/gps-rf-board

Open source SDR + COTS GPS board provides I and Q data plus COTS binary data over Ethernet.

Primary LanguagePython

Open Source GPS RF Front-end Board

Author: Jenner Hanni and Andrew Greenberg

Institution: The Portland State Aerospace Society (http://psas.pdx.edu/) and Portland State University (http://www.pdx.edu/)

License: BSD "3 clause" license.

What

This is a bit of an odd GPS receiver board. It has a lot of weird features:

  1. It takes 4.5 - 20 V power in.
  2. It has a hopefully good RF front end which expects a passive GPS antenna. It has a SAW filter to reject noise, followed nice GPS LNA, followed by an IC splitter to split the signal into two ICs:
    1. IC 1 is a software defined radio (SDR) GPS receiver based on the Maxim MAX2769 GPS RF front-end. The MAX2769 downconverts the 1.57542 GHz carrier and then samples the GPS signals using 2 bit I and 2 bit Q sampling at4 Msps. This data flows in parallel out to a CPLD which turns it into valid SPI data, which is eventually sent to the local STM32F4xx microcontroller.
    2. IC 2 is a commercial off-the-shelf (COTS) GPS receiver IC SkyTraq called the Venus838. The Venus was supposed to have allowed us to get position updates via binary messages over UART to the STM32F4xx microcontroller. Unfortunately, the results were pretty much garbage (see data analysis below).
  3. The STM32F4xx grabs both of these data streams and writes them to the onboard uSD and/or streams them over Ethernet to the flight computer.

Here's a block diagram:

jGPS v3 Block Diagram

And here a picture of the completed (and now flown!) PCB:

Pic of jGPS v3 board

Why

Several GPS receiver boards exist on the market to receive GPS satellite signals and process it to provide location data but these GPS receivers only give the final location. Getting access to the raw data before they go into correlators means you have to purchase a “RF front end” for hundreds of dollars, at which point you can work on projects like building an FPGA receiver board or developing a software radio receiver.

Both of these projects are in-progress projects at Portland State, and are stalled on purchasing the very expensive RF front end. This project proposes to design, build, and release an open-source GPS receiver RF front-end board that would offer the GPS raw data over USB and serial outputs. Open source GPS receiver boards do exist, including in Andrew Greenberg’s GPL-GPS Master’s thesis, but all are based on very out dated and out-of-production GPS chipsets and are not easily acquired.

Cost is also a factor: commercial RF front end boards are hundreds to thousands of dollars. And while the proposed chip for this project, the MAX2769 Universal GPS Receiver, costs only $5, the development kit is $300 -- in other words, cost prohibitive for a small project and frustrating for embedded software developers who may not have the time or experience to design and build their own hardware.

Other

  • Boards are designed in EAGLE 7.x and are fabricated using OSH Park's 4 layer service.
  • Thank you to Swift-Nav for providing an open source reference design for the MAX2769. Many of the ideas and components of this board borrowed heavily on the Piksi.
  • Whoah man is the MAX2769 hard to configure. If you found this page because you're trying to understand how to configure the Max2769, there's helpful stuff here. It's a total pain. Good luck!
  • BOM available as an XLSX file.

History

Some updates on what we've been doing:

Date Note
2016/01/05 More data analysis! We actually got GPS satellites!. There are a few data drop outs, but they're relatively short. Looks like the Flight Computer was timing out due to IO Wait states.
2015/07/19 We launched it onboard LV2 and got some data!