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 ca76756c1b Code documentaion and minor changes 2021-08-01 18:24:32 +02:00
cmake Initial commit 2021-08-01 12:20:16 +02:00
doc Initial commit 2021-08-01 12:59:03 +02:00
include Code documentaion and minor changes 2021-08-01 18:24:32 +02:00
src Code documentaion and minor changes 2021-08-01 18:24:32 +02:00
.gitignore Eclipse dirs added 2021-08-01 17:18:48 +02:00
CMakeLists.txt Split into lib + example application 2021-08-01 17:18:36 +02:00
LICENSE Initial commit 2021-07-29 16:30:34 +02:00
README.md Image moved 2021-08-01 17:32:05 +02:00

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).

AFSK scope screenshot

Basically, this is the data/signal flow:

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

Both a static library libaprs_pico.a and an example application will be generated by the build.

Preliminaries

Your host platform is assumed to be LINUX.

  1. Install the Pico-SDK following the instructions given in the Raspberry Pi 'Getting Started' Guide (pdf)
  2. Set the PICO_SDK_PATH environment variable to point to your Pico-SDK installation directory

Hardware

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

band-pass filter

Build the library and the example application

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

build/lib/libaprs_pico.a and build/aprs_pico_example.xxx will be created.

Run the example application

cd build
(flash 'aprs_pico_example.uf2' or 'aprs_pico_example.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).

TODO (Aug 2021)

  • Thorough evaluation, in general
  • Send the APRS message on the console (USB or UART) rather than hard-coding
  • Show how to connect to a Baofeng HT
  • PTT control for RF tranceivers

Acknowledgements