RFM69 OOK signals sampled with RSSI

By polling the RFM69 RSSI register at rates ranging from 25us to 100us, an oscilloscope like picture can be generated for OOK signals.

This has been achieved using a RFM69 interface to a Nucleo STM32 F103RB board, and using ChibiOs V3. The RSSI register is polled with a maximum rate of 25us. The 8-bit values are stored in a circular buffer of 10000 samples. A high RSSI value is used as a trigger, after which at maximum the full buffer length will be acquired. However, a pre-time is defined (10 ms in this case), giving the opportunity to have some acquired signal before the trigger happens. After sampling has been completed, the data is printed over the serial line for further storage and graphing.

Realtime data can only be acquired with a minimum of 100us. Sending one byte per sample over the 115200bps serial ink is the limitation. This requires processing SW at the receiving side.

Code will soon be posted in github.

2 thoughts to “RFM69 OOK signals sampled with RSSI”

  1. Hi,

    I’ve been reading your posts about your OOK journey. It’s fascinating how deep you digged into this and the time you spent experimenting with the RFM69 modules is enormous. I’ve written my own OOK implementation (https://github.com/kobuki/RFM69OOK/), but I’d like to do something similar to your purely RSSI-based solution. However I cannot seem to find a way to read a meaningful value out of the module’s RSSI register when in OOK continuous mode. All your relevant sources seem to use this same mode yet you seem to be able to use the register for the purpose. Could you help me a bit by nudging me to the right path regarding this RSSI readout? Is it available in OOK mode at all? I can read it fine with FSK mode. You also seem to have found weird behaviour and discovered that in OOK mode the register is supposedly used for something else… Yet you still seem to use it with OOK mode to act on thresholds, etc.


    1. Well, my comment is still waitng on moderation, and I just wanted to say that I can read the RSSI after all. Until the RSSI threshold is reached by an incoming signal, the RSSI reg. just returns some arbitrary constant. Then it starts changing according to the RSSI it currently senses and stays that way. Your RSSI-based OOK decoder just sets the threshold to the lowest value (highest sensitivity) and values start changing right away.

Leave a Reply

Your email address will not be published. Required fields are marked *