Arduino Mobilinkd breadboard KISS TNC

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:

  1. Headset red -> 100nF cap
  2. cap -> one side of 100k pot
  3. mid pot -> D6
  4. other side of pot -> gnd
  5. Headset blue -> gnd
  6. Headset bare -> BC547B emitter
  7. BC547B base -> 1k resistor
  8. resistor -> D10
  9. BC547B collector -> gnd
  10. Arduino GND -> gnd
  11. Arduino VCC -> vcc
  12. Headset green -> 10nF cap
  13. potential divider: gnd -> 10k resistor -> 10k resistor -> VCC
  14. cap -> mid of potential divider (2.5v)
  15. mid of potential divider -> A10

Baofeng pin assignments are here.

Code.

Leave a Reply

Your email address will not be published. Required fields are marked *