Author Topic: Frequency Hopping To Monitor Signals from different Weather Sensors.  (Read 275 times)


  • Newbie
  • *
  • Posts: 2
I have a current arrangement that is monitoring Acurite(433Mhz) and Ambient(915Mhz) weather sensors and Acurite rain gauge(433Mhz) with the same RFM69, as a receiver, only. The controller is a ESP8266. While trying to change from one freq to the next there was a problem with timing, the ESP8266 being faster than the RFM69 which required entering the FM (Frequency Synthesizer) mode first, BEFORE writing to the carrier frequency registers, and inserting a delay for the RFM69 to internally change modes and make those FM registers available before writing to them.  A delayMicroseconds(100) seems to work fine. Still finding out how short the delay can be. Without a delay, the RFM69 dumps its freq default values into the registers, the receiver is then off freq and everything stops. If you're having trouble with freq hopping, try changing to the FM mode first and if the unit controlling it is fast, add a delay before writing to the FM registers.

The rfm69 library appears to write before the FM registers are available:
// set the frequency (in Hz)
void RFM69::setFrequency(uint32_t freqHz)
  uint8_t oldMode = _mode;
  if (oldMode == RF69_MODE_TX) {
  freqHz /= RF69_FSTEP; // divide down by FSTEP to get FRF
  writeReg(REG_FRFMSB, freqHz >> 16);    <--------  This appears to be writing to the FRF registers while in RF69_MODE_RX
  writeReg(REG_FRFMID, freqHz >> 8);
  writeReg(REG_FRFLSB, freqHz);
  if (oldMode == RF69_MODE_RX) {

This only seems to work during the first initialization when writing the entire config and when freq hopping is on the fly, the (FM) Frequency Synth Mode should be entered before writing to the carrier freq (FRF)registers.

The RFM69 Doc:
Receiver  hop from Ch  A  to  Ch  B:
 (0)  RFM69CW  is in  Rx mode  in Ch A
 (1) Change  the  carrier  frequency  in the  RegFrf  registers
 (2) Program  the RFM69CW  in  FS  mode
 (3) Turn  the transceiver  back  to Rx  mode
 (4) Respect the Rx start procedure, described in section 4.2.4

This appears to be a vagueness in documentation. Steps 1 and 2 have confusing meaning until reversed. The FS mode should be entered before wrting to the RegFrf.

To cut down the time to change frequency, I reduced the initialization to a general set and made another specific set that only changes the carrier frequency , bit rate, sync length, sync words, payload length, and then a command to enter the RX mode. I suppose you could call it "frequency/sensor multiplexing" and it works with some loss of sensitivity in the out of manufactured band. Any transmissions that get truncated can be tossed when they fail the checksum.  I have used simple OOK receivers in the past and this RFM69 makes them seem like from the Flinstone age. No more chasing interrupts on every pulse, with lots more processing time for other things.
« Last Edit: January 03, 2019, 09:33:13 PM by Larry »