APRS TNC & Decoder

The idea of this project has raised up  few months ago. However, the final shape is far from assumption in terms of expected functionality. In the very beginning I just wanted to build up simply AX.25 decoder for APRS network with LCD/OLED display from scratch using the simplest uC as possible and the Baofeng as a source of  APRS signal.

I gave E29AHU  a chance  with Arduino, but I wasn’t able to force Atmega to decode any AX.25 frames. Rysiek SQ9MDD suggested me bad quality of Baofeng output and possible of cutting the beginning of signal. This is of course confirmed truth (that’s why the Baofeng has to have squelch turned off with the final version of this project – thank you Ryszard for suggestion), but even with clear audio APRS samples available here, it still hasn’t decoded APRS frames at all. Few different BIAS solutions were tested on the Atmega328p ADC input  without success.

I decided to use the ESP32 uC board with embedded OLED display coming from ideaspark with the iGate flash available here. HS5TQA  made a big gun for the APRS enthusiasts. I utilize only a small part of this project (decoding AX.25 frames and presenting them on the OLED display). I didn’t have to recompile the available PlatformIO code shared by author, becouse the OLED pinouts are the same for the ideaspark board. ESP32 decodes APRS frames much more better than Atmega328p – I mean it decodes them, Atmega doesn’t do that even with the same signal source.  Strange, but I decided to stay with ESP32.

HS5TQA iGate project has also possibility to connect the GPS receiver and use the same uC as a TNC modem with driving the PTT of the external transceiver. Appetite comes with eating . Why not? Unfortunately, my NEO-8M GPS receiver has a little bit different output coordinates structure than its older brother. For some reason I wasn’t able to recompile the PlatformIO code with modified TinyGPS library customized for support the NEO-8M. More informations can be find here .

That’s why I decided to use my favorite Atmega328p in Arduino mini-Pro edition  as a TNC modem. I used the Billy’s code with modified TinyGPS library on my own. I also had to make some changes within the genuine code to support NEO-8M GPS receiver. I also added additional button besides the exisiting one (used for manual localisation update). When pressed during the powering on the device, the APRS symbol would be changed from “car” to “walking man”.

I do like to listening the sound of APRS frames coming in. Unfortunately, when you plug in the mini-jack into the Baofeng, the internal speaker would be switched off. Splitting  the audio signal into ADC input of Atmega328p and the external speaker was the next challenge. I couldn’t make a simply short and splitting it this way, becouse the ESP32 ADC input stopped to decoding frames correctly. I had to use the buffer and decided to use TL072 as a audio splitter. It  works.

New components had to be connected to each other on a quite small(mobile!) area and easy to carry. I made a decision to make an eagle project from scratch.

This project can be an offer for DYI Ham Radio fans. You can find a ready-to-purchase devices with similar functionalities on popular chinese stores. However, using the external transceiver instead of embedded one with less than 1W TX power could be an advantage. Please note that squelch should be set to zero at Baofeng side. Incoming APRS frames are being cut at the beginning and can’t be decoded properly when the SQL is switched on. 

Arduino code, eagle schematic & board, additional informations could be found on my github page.

Hope you enjoy !

73 ! Jakub/SP5TOF