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 507b46cd5c Eclipse dirs added 2021-08-01 17:18:48 +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 Split into lib + example application 2021-08-01 17:18:36 +02:00
src Split into lib + example application 2021-08-01 17:18:36 +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 Split into lib + example application 2021-08-01 17:18:36 +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).

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

AFSK scope screenshot

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