Partly working… documenting my work so far towards a truly inexpensive, standalone, reliable APRS tracker.
I’ve moved away from the Pi and back over to microcontrollers. This is based on practical experience using the Pi at an event. Too much complexity / unknowns. The Pi worked okay, but could have been better.
So this below is based on http://www.mobilinkd.com/2014/09/11/arduino-kiss-tnc/
Which in turn seems to be based on https://sites.google.com/site/ki4mcw/Home/arduino-tnc
There’s actually a bit on KI4MCW’s page about how deaf the ADC design below is, might be worth looking at his improvements which don’t seem to have made it into the Mobilinkd hacking page.
Others doing the same:
So, here’s what is working so far:
- Arduino Pro mini 5V clone @ approx £3
- USB – 5V TTL serial cable
- Baofeng / Wouxun / probably anything with 3.5+2.5mm TRS connector
- For PTT:
- 1k resistor
- BC547B
- 5V relay
- diode
- For TX audio:
- 100k preset
- 100nF / 0.1uF capacitor
- For RX audio:
- 2x 10k resistors
- 10nF capacitor
Download firmware file from here or here
WinAVR from here or here
avrdude -c arduino -p m328p -P COM3 -b 57600 -U mobilinkd-473-arduino.hex
Grab MobilinkdTncConfig-0.6.1-win32.msi from this page
Ignore the stuff about Bluetooth, fire it up, set delay to 80 (800ms – these radios are properly rubbish), expect no confirmation (there is no save button – the author says (and I have checked) that changes are saved into EEPROM as you click in the UI). Check transmit using 1200Hz tone + Execute button.
Fire up aprsisce/32 or similar
APRSISCE/32 wants a Simply(KISS) port set up, 38400 baud, 8-N-1, and sometimes wants you to disable and re-enable the port before it works. Sometimes have to reset the Arduino too.
Turn the radio volume up quite high.
I plan to use a second Arduino, running a GPS, to push APRS frames in to this unit over serial.
Even better, mod this firmware to talk to a GPS over serial, then format and send its own APRS frames.
Circuit:

(EDIT: the RX circuit above, marked as unverified, is now verified working.)
(Another edit: for better PTT reliability, change the transistor connections as follows:
Collector to relay coil and diode anode
Relay coil and diode cathode to +5V
Emitter to ground
Relay contacts across Baofeng PTT (bare wire / 3.5mm sleeve) and Baofeng ground (blue / 2.5mm sleeve)) – need to update the text below.
Connections, taken down from working (TX, RX and PTT) breadboard:
- Headset red -> 100nF cap
- cap -> one side of 100k pot
- mid pot -> D6
- other side of pot -> gnd
- Headset blue -> gnd
- Headset bare -> BC547B emitter
- BC547B base -> 1k resistor
- resistor -> D10
- BC547B collector -> gnd
- Arduino GND -> gnd
- Arduino VCC -> vcc
- Headset green -> 10nF cap
- potential divider: gnd -> 10k resistor -> 10k resistor -> VCC
- cap -> mid of potential divider (2.5v)
- mid of potential divider -> A10
Baofeng pin assignments are here.
Code.