index

Home

Links:

About Me:

I like the outdoors, exploring, software development, radio communication systems, and some video games from time-to-time. My current project is a device that connects to any analog radio and turns it into a mesh network for off-grid communication. See (peregrine-constellation)

Projects

Peregrine Constellation: MANET for legacy radios
Project Peregrine: Autonomous drone for stealth operations

Blog

Blog

2026-08-16

Ground Work

I thought it would be kinda fun to do a little blog thing. Something short and simple to just go over updates on this project and what not. Not sure if this will keep happening or if it will only be once in a blue moon, but here we go.

Working on the project today, I realized that I needed to take a step back and do some ground work. I have the basic signal decoding working pretty well at 200 symbols/sec which is great, but it's no where near where I want to be. Every time I try to bring it up through I get SERIOUS decoding issues. It basically all just turns to noise.
One of the features that I was planning on implementing was compounding energy for symbol decision making #87. Meaning that instead of just measuring a single sample in the middle of each symbol to determine its value, I would add up the energy over the entire symbol size and then make the decision. This should make it far less sensitive to noise and should therefore allow me to run at higher baud rates. When I implemented a very crude version of this I got all of my unit tests passing just fine and decided to amp it up a little bit. To my surprise, basically nothing had changed. There was actually some more incorrect readings. I tried messing with the filtering parameters to see if I could get it to at least decode something, and I did get it to register the preamble/sync-word, so that was good. However, that was about as far as I got. After attempting to make little adjustments for a while with seemingly random results I made the decision that I really need to take a step back and build a more systematic approach.

Now, everyone likes just diving straight on in to the solution because it's fun building the core thing itself, but in order to build something strong you need to first do the ground work. In my case, that's building a recording system so that I can analyze the actual signals going through the FSK decoder in order to understand how the parameters affect the signal. On the peregrine-constellation side, it was actually pretty simple and eve on the pico-constellation it was. All I did was expose a debugging function that would be called by the fsk_decoder if a certain compile flag was enabled and then the pico-constellation project could handle sending that over USB. A little bit of ChatGPT and we had a simple script up and working that send raw data to a host computer.
I still need to implement the host software, but at least I got a little something done that will help me better understand the system in the long run.
That's all for my first post. You can check out the related links below: