RFM69HCW with Xiao ESP32s3

Has anyone used the RFM69HCW with XIAO ESP32S3?
I have the RFM95W working with the LoRa library, but I cannot get the RFM69HCW to work with any library “RadioLib, RadioHead, LowPowerLab” so far!
I am using Arduino to program the XIAO

//define the pins used by the transceiver module
#define ss D6
#define rst D7
#define dio0 D5

why would you mess with 433 when you have so much better to work with?

I have a boot load of the RFM69HCW at 915mHz so I would like to use them plus they are 1/2 the cost.

1 Like

Here is the code that I am using:

#include <SPI.h>
#include <RH_RF69.h>

// Singleton instance of the radio driver
//RH_RF69 rf69;
//RH_RF69 rf69(15, 16); // For RF69 on PJRC breakout board with Teensy 3.1
//RH_RF69 rf69(4, 2); // For MoteinoMEGA https://lowpowerlab.com/shop/moteinomega
//RH_RF69 rf69(8, 7); // Adafruit Feather 32u4

RH_RF69 rf69(D6, D7);

void setup() 
{
  Serial.begin(9600);
  while (!Serial) 
    ;
  if (!rf69.init())
    Serial.println("init failed");
  // Defaults after init are 434.0MHz, modulation GFSK_Rb250Fd250, +13dbM (for low power module)
  // No encryption
  if (!rf69.setFrequency(915.0))
    Serial.println("setFrequency failed");

  // If you are using a high power RF69 eg RFM69HW, you *must* set a Tx power with the
  // ishighpowermodule flag set like this:
  rf69.setTxPower(14, true);

  // The encryption key has to be the same as the one in the server
  uint8_t key[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
                    0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};
  rf69.setEncryptionKey(key);
}


void loop()
{
  Serial.println("Sending to rf69_server");
  // Send a message to rf69_server
  uint8_t data[] = "Hello World!";
  rf69.send(data, sizeof(data));
  
  rf69.waitPacketSent();
  // Now wait for a reply
  uint8_t buf[RH_RF69_MAX_MESSAGE_LEN];
  uint8_t len = sizeof(buf);

  if (rf69.waitAvailableTimeout(500))
  { 
    // Should be a reply message for us now   
    if (rf69.recv(buf, &len))
    {
      Serial.print("got reply: ");
      Serial.println((char*)buf);
    }
    else
    {
      Serial.println("recv failed");
    }
  }
  else
  {
    Serial.println("No reply, is rf69_server running?");
  }
  delay(400);
}


RFM69HCW with the XIAO: With the RadioHead: RH_RF69 Class but I get this error:

c:\Users\chris\OneDrive\Documents\Arduino\libraries\RadioHead\RH_ASK.cpp: In member function 'void RH_ASK::timerSetup()':
c:\Users\chris\OneDrive\Documents\Arduino\libraries\RadioHead\RH_ASK.cpp:533:23: error: too many arguments to function 'hw_timer_t* timerBegin(uint32_t)'
  533 |     timer = timerBegin(0, 80, true); // Alarm value will be in in us
      |             ~~~~~~~~~~^~~~~~~~~~~~~
In file included from C:\Users\chris\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.0\cores\esp32/esp32-hal.h:98,
                 from C:\Users\chris\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.0\cores\esp32/Arduino.h:36,
                 from c:\Users\chris\OneDrive\Documents\Arduino\libraries\RadioHead/RadioHead.h:1556,
                 from c:\Users\chris\OneDrive\Documents\Arduino\libraries\RadioHead/RHGenericDriver.h:9,
                 from c:\Users\chris\OneDrive\Documents\Arduino\libraries\RadioHead/RH_ASK.h:9,
                 from c:\Users\chris\OneDrive\Documents\Arduino\libraries\RadioHead\RH_ASK.cpp:6:
C:\Users\chris\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.0\cores\esp32/esp32-hal-timer.h:35:13: note: declared here
   35 | hw_timer_t *timerBegin(uint32_t frequency);
      |             ^~~~~~~~~~
c:\Users\chris\OneDrive\Documents\Arduino\libraries\RadioHead\RH_ASK.cpp:534:25: error: too many arguments to function 'void timerAttachInterrupt(hw_timer_t*, void (*)())'
  534 |     timerAttachInterrupt(timer, &esp32_timer_interrupt_handler, true);
      |     ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\chris\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.0\cores\esp32/esp32-hal-timer.h:50:6: note: declared here
   50 | void timerAttachInterrupt(hw_timer_t *timer, void (*userFunc)(void));
      |      ^~~~~~~~~~~~~~~~~~~~
c:\Users\chris\OneDrive\Documents\Arduino\libraries\RadioHead\RH_ASK.cpp:535:5: error: 'timerAlarmWrite' was not declared in this scope; did you mean 'timerWrite'?
  535 |     timerAlarmWrite(timer, 1000000 / _speed / 8, true);
      |     ^~~~~~~~~~~~~~~
      |     timerWrite
c:\Users\chris\OneDrive\Documents\Arduino\libraries\RadioHead\RH_ASK.cpp:536:5: error: 'timerAlarmEnable' was not declared in this scope; did you mean 'timerAlarm'?
  536 |     timerAlarmEnable(timer);
      |     ^~~~~~~~~~~~~~~~
      |     timerAlarm

exit status 1

Compilation error: exit status 1

Connections:

RFM69HCW:   Xiao ESP32S3:
MISO               D9
MOSI               D10
SCK                 D8
NSS                 D6
RESET            D7
DIO0                D5

I just figured it out!!!

1 Like