Radio Transmission of GPS Data Using Raspberry Pi

This is a current project that is being worked on as a paylaod for the NCSSM Rocketry team. It is an evolution of my work on a similar system which used an Arduino. This new rendition uses a considerably more advanced design with significantly more flexibility in use. This project is not quite yet complete, so this page will change to reflect new developments. 

Electronics

General Concept

This projects's genesis comes from two main technologies: Adafruit's Ultimate GPS chip and Evariste Courjaud (F5OEO)'s RPiTx software. These two components enable me to both collect GPS data and use a Raspberry Pi to directly transmit radio frequencies respectively. Added on to these components are my own parts: a filter and amplifier circuit, the linking of parts into one circuit, an antenna, and my own Bash and Python scripts to pull it all together.

Filter & Amplifier

A key addition of mine is a custom circuit board containing a LC band pass filter designed with the help of this online tool, and an amplification circuit powered by an operational amplifier. One important aspect of the amplifier is that, due to the high frequency of the signal, an OpAmp with an abnormally high slew rate was required for proper functioning. These exist, but provide an additional challenge in the form of a surface mount chip which was difficultly but successfully soldered.

Soldering

Nothing was that unusual about the soldering process. All the boards and connecting jumper wires were connected via a perforated board. To conserve space all of the boards were soldered onto perforated board sideways. Later on, spare copper pads were removed from the board to reduce chances of parasitic capacitance.

Coaxial Cable Connectors

On the right you can see a layout of the SMA coaxial connector assemblies. The process is pretty intuitive, but it is still worth calling attention to. It is worth noting that while the driven center connector is soldered, the ground "shielding" is only crimped on with this style of connector.

Antenna

The antenna is rather trivial. It is a simple 1/2 wave dipole which at the end of the feedline splits into two 1/4 wave radiating elements. As one can probably infer, I am operating at the 434 Mhz area hence the roughly 6.5" elements.

Electronics Summary

Those parts comprise most of the electronics. Additional parts simply include power via a battery and a switch. As far as connections go it is pretty simple: all power out of 5v, ground to ground, Tx to Rx, Rx to Tx, and most importantly signal out is GPIO 4.

Packaging

Packaging Plan

The concept for the packaging was just a simple box that the electronics could fit securely inside. The design utilizes slots on the sides to hold the parts firmly as well as allow easy access. Additionally, The lid has an access hole for the antenna coax as well as interior extrusions to stop the parts from sliding up and down on the z-axis.

CAD Work

Overall, the design was not terribly difficult to put together in CAD. I used Fusion360 to create the parts. Both the case and the lid are made from extrusions off the same sketch with a few offsets for tolerancing and ease of assembly. 

Smooth Fit

When the parts were printed both the boards and the battery fit smoothly and snuggly in the case as intended. A bit of electrical tape was added to the upper lip to give the lid a snug fit.

Packaging Summary

With the parts manufactured and assembled, the project is essentially built other than the eventual mount in the rocket itself. The parts worked out better than I was expecting, and I was pleasently surprised not to have to do a bunch of revisions to simply get things to fit right.

Operation

Bash, C++, Python, Oh My!

Due to some systems being based on Python and others on C++/Bash, there is an amalgamation of scripts to run the whole thing. Basically, a bash script runs a Python script which, in its main loop, continually runs a Bash script which uses a shell command designed with C++. After a bit of fiddling though, everything works as intended and data is processed and transmitted as intended.

Activation

Activation is pretty simple. When the screw switch is activated, the system turns on, and the main program is set up to execute on boot.

Testing

Signal Recieved

Here is a picture of the received signal using a software defined radio connected to my laptop. The system was programmed to use POCSAG12000 encoding which was originally intended for pagers, but I used it because there are basic redundancy features for help with potential signal loss.

Mobile Setup

Here is a picture of the mobile setup for data logging. The code used for this was provided via a report linked here by Jack Riley for jrprnet.com (his website). It's pretty simple, using some public libraries to interface and decode the signal from the radio receiver to a text file.

Confirmed Logging

Shown on the left is a picture of data logged via the mobile setup in a test. When this picture was taken, there were still a few string errors to iron out, but it was the first confirmation of accurate reception. As of now, the system is pretty much ready for launch in March other than a few long range functionality tests.

More to come in March!