I wanted to develop an APRS client on an MCU (ESP-32) instead of a SBC (Raspberry Pi).
This client would use a modem/radio combination (Mobilinkd TNC3/Baofeng UV-5R) to get on the air (144.390 MHz). The client connects to the TNC3 over a Bluetooth Low Energy (BLE) link and is secure against Man-In-The-Middle attacks,
Looking around, I settled on hardware similar to that Amazon’s AWS IoT EduKit workshop uses https://edukit.workshop.aws/en/ but using APRS instead of the internet—of course.
I choose the (relatively) inexpensive M5Stack Core2 unit (https://m5stack.com/products/m5stack-core2-esp32-iot-development-kit).
Or I might ultimately build my own using an ESP32 development board.
The video demonstrates the first step in using APRS–position beaconing and registering with a station having an APRS-IS (internet) connection. After the first beacon, you must transmit a beacon every 30 minutes to stay current in the system.
Step 1 for APRS, beacon your position and register with APRS-IS.
Step 2 to follow…
Video Notes:
Next time use a script
It’s APRS-IS not -SI
Be cool. Don’t sound so excited when it works!
An Interesting project — I am looking to do the same for the TNC2, have a micro self contained APRS in the M5stack. Can you share your code ? Also would like to create a WSPR beacon on the same platform (with additional hardware). I’m interested in possible collaboration.
LikeLike
TNC2 and 3 are very different. TNC2 uses BT Classic (Serial UART style) TNC3 uses BT Low Energy (services and characteristics). Also TNC3 uses security. Not much reuse. And the code is not ready to release. I will put out a new video when I release.
LikeLike
Oops, see the my next post, meant to be a reply.
LikeLike
If you need any help…I’m an embedded SW engineer, sort of having some fun in retirement. I can speak many [computer] languages…
LikeLike
Thank you
LikeLike
Hey Bob — I finally got my M5stack talking to my mobilink TNC2 via BR bluetooth. On one screen I put up the mobilinik input volume and carrier detect — I got tired of going from one the Mobilink config app to the APRSdroid app, now they will be in the same m5stack. I had a lot to build up on the m5 (BR, display, multitasking). Now I want to add the APRS beaconing feature as you have done, maybe next a weather beacon, was thinking of an APRS igate later too. There aren’t many APRS units in my area, so I’m limited on my testing ….maybe I’ll find them closer to town. Any hints about your APRS code? thanks.
LikeLike
As I mentioned
“And the code is not ready to release. I will put out a new video when I release.”
I haven’t been able to work on that project recently.
LikeLike
ok. Can I ask a question then. The TNC decodes the message and sends it to a client (like APRS Droid) in KISS format (C0 xxxxxxx C0). I’m pretty sure that an APRS is specifically encoded (Base 91) so that all characters are printable. Is the APRS message inside the KISS wrapper directly or do we have a X.25 wrapper inside the KISS message, and the APRS message inside the X.25. My aim right now is to receive a message and display it on the M5 LCD like you see on the APRSDroid screen. Thanks.
LikeLike
Here is the only trick. When they added addressing of variable length, they had no way to signal the end of addresses. So they shift the addresses one bit and signal the end with a 1 in the LSB or something like that. Maybe a 1 in the MSB. That isn’t documented in ax.25 because APRS rides apart of ax.25. That was the only trick. Just read the spec ax.25 and the KISS spec for the rest. I have no more time.
LikeLike