During the late part of 2012, I decided to start building a packet radio modem for 1200 baud AFSK (AX.25 style) from scratch. After spending a number of weeks on the project getting the basics all sorted out, it started to turn into something quite usable. I added on some small SPI SRAM chips that had 256kbit of memory each. However, these had to run at 3.3V and I was using a 5V Arduino. After setting it all up and create level shifters for the SPI bus, I noticed they also had 512kbit 23LC512 SPI SRAM chips that supported a native 5V interface. This made the actual layout and component count far simpler. It also doubled the available packet memory.
The design of the system is very straight forward:
To achieve this system design, I wanted to use the smallest external parts count I could and accomplish as much with software as possible. Some inspiration (and code) came from the BeRTOS AX.25 stack for the audio decoding. They had a very efficient and nice looking approach to the audio decode. However, I didn’t want to use the entire BeRTOS software and operating system on the Arduino, as I really only needed the AX.25 decoder part. I copied their code over and adapted it into the flow of my own software that had been worked out. It turns out their decoder is very accurate and sensitive.
The entire current source for the AX.25 project is available on my Github page. I originally had it all just in a private repository, but realized others may find the software useful. I opted not to use the Arduino IDE, using the Atmel Studio software instead. This let me have a lot more flexibility with the modules. There are a number of third party modules that are unmodified in the source tree to add features into the system. If you browse through, you’ll see a heavy emphasis on it being used for APRS tasks. Though this was the initial idea that spawned the project, I decided to turn it into a generic TNC with APRS capabilities instead.
I keep working on the project when I find time and the need to program. I hope to use it soon with my Raspberry Pi based iGate for a low power and low maintenance solution to my home based iGate setup.