I've built a few baremetal fixed frequency RF systems, and am working on a long range frequency hopping product using a ARM Cortex M3. So we got some horsepower here!
I've got the the TX FCC Part 15.247 compliant hopping across 60 channels and using an extremely narrowband signal to hit our range requirements. Average message time is 190ms (~50ms pre-amble, 140ms sync word + packet).
Product market is USA, so everything is being done to be FCC compliant.
It's an odd system because the goal is to simply deliver one single packet and take advantage of the increased transmit limit.
If the system were more bursty, I would just start on Hopping Channel 1, and go through all 60. But we have a very tight latency requirement.
We need the system to respond within 300ms of a transmit. If we loop through all 60 channels, that takes nearly 10 seconds. If we change the bit rate, we won't hit our distance.
I've got the RX cycling ~800us per channel to an asynchronous scan of all 60 channel, taking an RSSI read, and than dwelling on the strongest channel.
On my desktop, I'm getting about 80% of the packets through.
I did some more digging, and it seems like I am getting a lot of ambient noise in the 900MHz range that trips up my detector.
I added an RSSI limit, and that improved the system to about 90% of the packets.
But this is simply on my desktop! From my experience I know this system isn't going to go far, this narrowband signal blends into the noise floor quickly but somehow the receiver is so sensitive it goes quite far (800 meters +).
I have thought about averaging the noise floor which might help (take your pick simple moving average or something more microcontroller friendly [I'm more of an 8 bit guy, so I have to see if the M3 really needs an MCU friendly scheme).
System mechanical really are one unit is TX, and one is the RX. So I haven't really digested a re-transmission scheme yet. The latency timing probably wouldn't work from a user perspective either.
Has anyone tackled a frequency hopping scheme like this? Any ideas how to mitigate the amount of 900MHz noise out there but still get our signal through?