bb08012dca | ||
---|---|---|
cmake | ||
doc | ||
include | ||
src | ||
.gitignore | ||
CMakeLists.txt | ||
LICENSE | ||
README.md |
README.md
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.
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).
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.
- Install the Pico-SDK following the instructions given in the Raspberry Pi 'Getting Started' Guide (pdf)
- Set the
PICO_SDK_PATH
environment variable to point to your Pico-SDK installation directory - 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:
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
- For APRS => AX.25 => PCM conversion I'm using my modified version of fsphil's ax25beacon
- For PCM => PWM conversion I'm using the
pico_audio_pwm
library from pico-extras (NOTE: ATTOW, maturity seems to be rather alpha/beta)