A TX-only TNC (Terminal Node Controller) to generate the AFSK (Audio Frequency-Shift Keying) audio tones for APRS (Automatic Packet Reporting System) messages using a RP2040 microcontroller on a Raspberry Pi Pico board.
 
 
Go to file
eleccoder 113778cbf5 Proper single shot/loop mode 2021-08-01 15:29:00 +02:00
cmake
doc
src Proper single shot/loop mode 2021-08-01 15:29:00 +02:00
.gitignore
CMakeLists.txt
LICENSE
README.md

README.md

raspi-pico-aprs-tnc

A TX-only TNC (Terminal Network Controller) to generate the AFSK audio tones for APRS (Automatic Packet Reporting System) messages using a Raspberry Pi Pico microcontroller board.

An analog line-out audio signal will be produced at GPIO-pin 'GP0'. You can observe it by using a scope, listen to it by using an audio amp, or connect it to any RF transceiver to send it on the air (ham radio license required).

Basically, this is the data/signal flow:

APRS (text msg + geo-coordinates + meta-data) -> AX.25 -> PCM -> PWM -> Low-Pass filtering -> AFSK signal

Preliminaries

Your host platform is assumed to be LINUX. If you have already installed the Pico-SDK, set the PICO_SDK_PATH environment variable accordingly to avoid installing the SDK twice.

Hardware

We just need a simple band-pass filter to extract the AFSK-signal from the PWM signal:

band-pass filter

Build the application

(cd into the cloned dir)
cmake -S . -B build
cmake --build build

Run the application

cd build
(flash 'aprs_pico.uf2' or 'aprs_pico.elf' to the Pico board as usual)

The GPIO-pin 'GP0' is the line-out for the analog AFSK-signal. You can observe it by using a scope, listen to it by using an audio amp, or connect it to any RF transceiver to send it on the air (ham radio license required).

AFSK scope screenshot

Modify the application

To send an APRS message of your choice, you have to modify the main() function in src/aprs_pico.c.

TODO (Aug 2021)

  • Thorough evaluation
  • Send the APRS message on the console (USB or UART) rather than hard-coding
  • Code documentation
  • Show how to connect to a Baofeng HT
  • PTT control for HTs

Acknowledgements