APRS is something I’d heard about but not really ever grasped. With a couple of events coming up where APRS would be helpful, I decided to put the effort in.
Here’s my recipe for a standalone APRS tracker. Note there are tons of different ways to accomplish the same – this is just one way – and my first spin at it too. I’ve got plans to refine this into future iterations.
Easy Digi interface
This interface, from a guy in the states, is brilliant. But it’s very expensive to ship to the UK. However, it’s pretty easy to replicate.
(ignore the bit crossed out in red, you’re not using it)
- Raspberry Pi GPIO pin -> (anode) 1N414BA diode (cathode) -> 4N25 opto-isolator pin 1 -> 430R resistor -> Raspberry Pi gnd
- Radio gnd -> (anode) 1N4004 diode and opto-isolator pin 4
- Opto-isolator pin 5 to 1N4004 cathode and radio PTT pin
- USB sound card headphone jack -> 600:600 audio transformer (across one set of windings, connect the tip and ring together)
- 2k resistor across the second set of windings
- One side of the second set of windings to radio mic gnd
- Other side of the second set of windings to 0.1uF cap then to radio mic input
- Then exactly the same again in reverse between the radio headphone/speaker jack and the USB sound card mic jack
My old FT-470, which I’m very proud of, has 1x 3.5mm jack, 1x 2.5mm jack, both mono. I had to go back to an old Gopher(!) post to find the details on hooking this up. Fortunately it’s pretty easy.
TX audio comes from the Easy Digi board, through a 0.1uF cap to the mic tip. PTT comes from the Easy Digi PTT pin, through a 2k resistor, also to the mic tip. RX audio comes straight from the rig’s headphone jack to the Easy Digi RX audio in.
OS is Raspbian minimal.
Software is Dire Wolf which is fairly easy to install and configure. More on this in due course. I’ll also put up a script that preps an install with the hardware above.
I had a 4×20 dot matrix LCD display kicking around, so I ended up building this in too – this has ended up more as an APRS “terminal” than a pure tracker. I wrote a basic framebuffer-esque application which handles writes to the screen, and takes updates from other applications via (of all things) local HTTP. All the custom software in this tracker is C# on Mono. I’ve implemented two screens – one with last RX and TX times (for debugging), and another with current position, speed, GPS time, national grid ref, Maidenhead square, and positional accuracy. A closest recent stations screen is an obvious addition.
Here’s Mk 1.
I’m probably going to leave this intact, then for Mk 2, start afresh and iterate a few times as I refine the design.
- Finish writing up more of the above – particularly around the box, hardware integration and software integration
- Try out 2m modules like Dorji DRA818V instead of a discrete radio – should be easy to drive from the Pi
- Maybe with a small linear amplifier!
- Switch out the full Raspberry Pi 2 to a Raspberry Pi Zero, or today’s newly announced Raspberry Pi Zero W
- Build in a battery
- Get the software published – both as a guide for installation from scratch, and as an SD card image – burn and go. I plan to put all my home-grown code up on github.
- Look at putting together some kits for audio and PTT isolation, similar to above, but reasonable cost in the UK