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 ad314db081 Minor improvements 2022-12-21 14:43:32 +01:00
cmake Update from origin 2022-12-21 14:22:28 +01:00
doc Minor improvements 2022-12-21 14:43:32 +01:00
include Minor corrections in the doxydoc 2021-11-13 12:25:49 +01:00
src Typo fixed 2021-11-13 12:15:20 +01:00
.gitignore Eclipse dirs added 2021-08-01 17:18:48 +02:00
CMakeLists.txt Comments only 2022-12-21 14:32:01 +01:00
LICENSE Initial commit 2021-07-29 16:30:34 +02:00
README.md Minor 2022-12-21 14:04:36 +01:00

README.md

GitHub last commit

raspi-pico-aprs-tnc

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.

Signal Flow

Block diagram showing the signal flow

An analog line-out audio signal will be generated by a band-pass filter connected to GPIO-pin 'GP0' which provides the binary PWM signal. You can probe it by 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

Image: Line-out signal (see below) probed by a DSO. We clearly see the 1200 Hz and 2200 Hz tones of the 1200 Bd 2-AFSK.

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

Prerequisites

Your host platform for cross-compilation 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
  3. Install the pico-extras libraries:
  cd $PICO_SDK_PATH/..
  git clone -b master https://github.com/raspberrypi/pico-extras.git
  cd pico-extras
  git submodule update --init

Hardware

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

band-pass filter

The line-out voltage can be as high as 2.7 Vpp (~1 Vrms) (at full-scale volume setting in the software and high-impedance load).

Build the library and the example application

git clone https://github.com/eleccoder/raspi-pico-aprs-tnc.git
cd raspi-pico-aprs-tnc
cmake -S . -B build
cmake --build build

build/lib/libaprs_pico.a and build/aprs_pico_example.uf2|.elf|.xxx will be generated.

Run the example application

cd build
Flash 'aprs_pico_example[.uf2|.elf|.bin]' to the Pico board as usual

The analog AFSK audio signal will be available at the filter's line-out. You can probe it by 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 (Sept. 2021)

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

Ingredients / Acknowledgements