Hoping not to re-invent the wheel. My aim is to get RSSI output without having a second radio handshaking. I would like to read the background signal strength.
From the data sheet it appears that RSSI can only be read on the preamble in packet mode and the level is above rssiThreshold using FSK. Is this correct? If so, then I would need to use OOK. Unfortunately, OOK shifts the receiver away from zero IF mode. I would prefer to be in zero IF so that I can measure how "loud" rfm69 hears itself. This is one of the things that will limit the long distance operation with the current lib in low bit rate applications.
HopeRF has a rfm69 toolkit app that has a 'Spectrum Analyzer Mode'. Which is esentially what I want to do.
I wish I had thier interface board so I could use the app. Anyone want to reverse engineer it? It does actually talk to Felix's FTDI adapter.
Any thoughts? Any code?
TIA,
john
Hmm .. readRSSI() will return the current reading from that register, in RX mode. That's about where my deep insight into this area ends.
When the library transmits a packet it keeps reading that value until it is low enough to assume a clear channel for sending.
Not sure though what would be required to reverse engineer their app - which I've downloaded but it requires their board to do anything, so gave that up.
Check this post about a spectrum analyzer with RFM12b:
http://jeelabs.net/projects/cafe/wiki/NRfMon_-_nano_Spectrum_Analyzer_with_the_RFM12B
Perhaps this could be achieved with RFM69 since it's very similar in how it works (same hardware connections).
I'd like to graph the real time "background" RSSI to try to diagnose my range issues. There has been some discussion about this in the past [https://lowpowerlab.com/forum/index.php/topic,105.msg254.html#msg254]. I've been reading the data sheet, but what I can't figure out is which circumstances the readRSSI() call is valid. For instance, if the radio is in "sleep" mode, does readRSSI() return a valid value? (Usually seems to be -22DB when called on a node that is usually asleep.) How do I "power up" the radio and how long do I have to wait for readRSSI to be right?
Attached eye candy - some received packet RSSIs from my network.
Let's try to keep relevant things in the same topic.
readRSSI() simply reads the RSSI register. Without digging the datasheet I think you should be in RX mode before reading it. Imagine you are anesthetized, and the doctor screams at you - you can't hear or assess how loud his screaming was right? You need to be awake to do that. Same with the radio...
There is no wakeup function. After you sleep the radio:
- if you need to put it in RX mode: call receiveDone()
- if you need to send something: simply call send() or sendWithRetry()
Calling these functions will automatically wake the radio or switch it from SLEEP mode to STANDBY or RX/TX, hence there is no need for an explicit wakeup() because it has no context. What does wakeup mean to a radio? Wakeup and do what? Rx? Tx? Standby?
I hope this clears any confusion.
All functions available are in here: https://github.com/LowPowerLab/RFM69/blob/master/RFM69.h
@jgilbert,
Could you show some key relating separation to the colors on the graphic?
At least one node is way too close...