Inspiration
Two members of our group have ham radio licenses, and so the idea of using them to implement some type of packet radio was appealing. Our overarching goal is to create an SSH client using a USB keyboard, screen, and Raspberry Pi Pico that can connect to a terminal on some server computer, if the client and server both have radios.
What it does
It currently allows us to encode and decode 16 bit byte pattern into audio signals which can be sent from one radio to the other. It also has various pieces (custom cyclic audio buffers) that form different parts of the complete rx/tx firmware event-loop.
How we built it
We used VSCode and the Raspberry Pi C SDK to write code for the Pi that could interact with a Baofeng radio via DAC and ADC ports.
Challenges we ran into
We wanted to do everything from scratch, but unfortunately some aspects of the project were just too large to be done in one night, such as the fast fourier transform to decode bits. Writing code in C is in general rather difficult, and designing our own custom buffer data structures to meet our needs was challenging.
Accomplishments that we're proud of
We developed an entire protocol for handshaking with message arbitration that allows for detection of most errors through radio waves.
What we learned
- how to use two different fast fourier transform packages to determine the constituent frequencies of a combined signal
- to give mad respect to network engineers, and to complain less about packet loss
What's next for Packet Radio-Based UART
- we intend to continue work on this during our free time in the rest of the semester, starting with the event loop for the Raspberry Pi Pico thread that manages interfacing with the radio, and then working our way up to the full terminal device by writing the hardware modules and overall firmware loop.
Built With
- c
- c++
- embedded
- kiss-fft
- raspberry-pi
Log in or sign up for Devpost to join the conversation.