Skip to content

stephanelsmith/micro-aprs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Micro APRS MODEM

A python/micropython based library for encoding/decoding, modulating/demodulating APRS/AX.25 packets in AFSK audio.

The purpose of this library is to thread-the-needle of both enabling APRS/AX.25/AFSK from PC to microcontroller while maintaining portability and readability of python. This library is optimized for embedded systems, especially micropython supported targets and platforms and small computers, not to mention Cpython and Pypy!

In practice this means we:

  • Avoid floating point and math libraries and dependencies in critical sections.
    • 👍 Integer math only
    • 👍 NO external libraries (numpy/scipy/pandas).
  • Special care for memory allocation
    • 👍 Pre-computing buffer/array sizes and modifying in place
    • 👎 Dynamically appending items to a list
  • Single threaded, multitask friendly
    • 👍👍 Asyncio

Micro-Aprs decodes 1000+ error-free frames on the TNC CD Track 2. That's 1010 👀 in a balanced mode at 1020 🎆 in a more computational intensive mode! (TNC CD Track 2 is the universal test for APRS demod, this performance is very good!)

🎓 Tutorials

As many who've gone down this path have mentioned, there's surprisingly little useful information out there covering these topics. I hope these tutorial sections will provide you additional information on getting started!

🏇 Start here!

Basic command line for encoding and APRS strings to AFSK audio samples and the reverse.

  • Encode APRS strings to AFSK audio samples.
  • Decode AFSK audio samples to APRS strings.
  • Micropython Encode/decode, but with embedded system friendly (also great on big machines too!).
  • Pypy, another supported options faster than C python.

🖥️ Applications and examples

Applications using aprs_mod.py and aprs_demod.py.

📟 Embedded ports and examples

With Micropython, these examples show some examples for embedded systems. I primarily target ESP32-S3 at the moment.

💡 Future Work

  • Rx/Tx digipeating
  • Deploy as a 🎈 HAB payload!

🙌 Acknowledgements

License

GNU General Public License v3.0

About

A light weight AFSK mod/demod for microcontrollers

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages