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 831fc8922a Typo fixed 2021-08-01 01:06:33 +02:00
cmake Initial CMake config 2021-07-29 20:33:18 +02:00
src Initial commit 2021-08-01 00:26:44 +02:00
.gitignore Initial CMake config 2021-07-29 20:33:18 +02:00
CMakeLists.txt Minor 2021-08-01 00:26:29 +02:00
LICENSE Initial commit 2021-07-29 16:30:34 +02:00
README.md Typo fixed 2021-08-01 01:06:33 +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.

Basically, this is the data/signal flow:

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

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 low-pass filter to extract the AFSK-signal from the PWM signal. Just connect GPIO-pin 'GP0' to a 1k resistor and the latter to a 47 nF cap. The junction between the resistor and the cap is our signal output.

Build the application

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

Run the application

cd build
(copy any of the flash files 'aprs_pico.uf2' or 'aprs_pico.elf' to the Pico board)

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 an HT to bring it on the air (ham radio license required).

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)

  • 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
  • Scope screenshots
  • Schematic & Fritzings