Arduino + TNC + GPS = APRS station???

I’ve recently started getting back into ham radio after I got an arduino, and I was thinking one might be able to make a fairly simple APRS station using a simple rig (2 meter HT or base station), a TNC (cheapest one they can buy), an arduino and (hopefully) a gps receiver (either one they have or some module, thinking about a garman) and having the arduino parse the information from the gps, grab the position, format the correct transmit string, and send it to the TNC for transmitting.

One of the main problems I’m facing is that I need more then one serial port, though I suppose I could simply get away with using relays to switch between the rx and tx lines of the TNC and GPS.

Any thoughts on this? Has anyone else actually done anything like this (w/o implementing a packet modem on the arduino)?

That should be fairly simple. Most microcontroller TNC/APRS projects choose to implement the TNC in the microcontroller as well.

Here's a non-Arduino APRS tracker built on the ATmega8:

Here's a pseudo-TNC (really an OpenTracker processor with special firmware) in Arduino shield form:

If I were to use an Arduino simply create APRS packets and use an external TNC as you describe, I'd use either a TNC-X or an Opentracker, and use newsoftserial and tinyGPS to interface the arduino with the GPS. I'd probably go with a MAX232-based serial Arduino instead of a "standard" USB arduino, for ease of interfacing to the TNC.

Another option is to use an MX614 modem IC to generate tones and eliminate the TNC. Alternatives to the MX614 are an XR2211 plus XR2206 for tone detection and generation, respecively, plus other 1200 baud modem ICs that have been discontinued but are still available.

Typically one uses PWM + filtering or a resistor ladder to generate tones with the microcontroller directly. A DAC could help, too (not sure id general purpose audio-frequency DACs maintain phase continuity when changing frequencies, though).


one main reason I wanted to go the TNC route is because I don't want to have to program the tnc into the arduino (which will be a pain in the ass to implement something like tnc-x), plus it would be best for current ham operators who already have a tnc to just use the equipment they already have (as opposed to having to get a ton of new stuff).

With my idea, the Ham only has to buy an arduino, some basic parts, and have (or buy) a cheap gps receiver with serial out.

Another thing I was contemplating was looking into using my Android phone and bluetooth to transfer the serial data from the gps in the phone to the Arduino.

Its still very much in the planing stages =)

I have done this and it works very well. I have an Arduino Duemilanove with the 328 chip. I have this GPS Shield with this GPS and the Open Tracker+ TNC

I do almost exactly as kg4wsv suggested. The Arduino gets the NEMA sentences from the gps from the serial port. After that, you can parse the data anyway you like. I write it to a memory card with the readings from a few other sensors. I then use newsoftserial to create a second serial port on the Arduino. This is where I send the data to the TNC. The TNC reads the data and is configured to transmit every 2 minutes on an old HTX-202 2 meter hand held.

I have an Arduino Duemilanove with the 328 chip. I have this GPS Shield with this GPS and the Open Tracker+ TNC

In addition to the OT+, you may want to consider the Argent Data Radioshield, which is more or less an OT+ on an arduino shield. Since my previous post I've used it successfully to get nearly 1Hz APRS position reports.