Arduino Uno WiFi Rev 2 and RFM69HCW Breakout - Please Help

Good morning,

I have an Arduino UNO WiFi Rev 2 and a RFM69HCW (434MHz) breakout. I have verified the Arduino works and the RFM69HCW works (I swapped it for its twin in another project). I have connected the two devices as shown in the hookup guide (https://learn.sparkfun.com/tutorials/rf … okup-guide) for 5V Arduinos and I’m using the logic level converter. I have also verified jumper wire connections and voltages with a multimeter. I’m using the sample code (with appropriate modifications for frequency, network ID, etc). All I am trying to accomplish is for the Arduino to receive data from a node on the RFM69HCW network. I’m not yet trying to upload it to ThingSpeak, but that is a requirement down the road - so I need to use something with WiFi and ThingSpeak capabilities. Please help me, any advice you have would be greatly appreciated.

Thank you,

Mativi

Are you experiencing any technical issues with the products?

I found a couple things by googling “thingspeak rfm69hcw arduino uno wifi” like this one https://www.arduino.cc/en/Tutorial/WiFi … taUploader that might be able to guide you when you are ready for the upload portion of your project.

I am experiencing issues getting the two products to work together. I cannot get the Arduino UNO WiFi Rev 2 to receive data using the RFM69HCW breakout (I have a separate RFM69HCW breakout broadcasting a number repeatedly for testing). I need to get the Arduino UNO WiFi Rev 2 working with the RFM69HCW breakout before I worry about getting it to upload data to ThingSpeak. However, I have already done a separate test with just uploading dummy data to ThingSpeak with no RFM69HCW involved and that worked fine. Please help me regarding functionality between the Arduino UNO WiFi Rev 2 and the RFM69HCW breakout. Right now I don’t need to worry about the ThingSpeak portion, that’s down the road. Right now I really need help getting the Arduino UNO WiFi Rev 2 and the RFM69HCW breakout to work together.

How are you connecting the breakout too your Arduino? Can you supply a photo showing the connections?

As I said in my original post, I am connecting as shown in the hookup guide (https://learn.sparkfun.com/tutorials/rf … okup-guide) for 5V Arduinos using a logic level converter. I have double and triple checked these connections and I have verified voltages and jumper wires with a multimeter.

Please provide a photo of your set-up a diagram for the connections made, so that we may double-check as well…it will impossible to troubleshoot these based on what has been provided so far.

Also please share the code being used

Am I correct to assume that you were able to get the Arduino UNO WiFi Rev 2 and RFM69HCW to work together on your end?

Here are my connections:

Arduino UNO WiFi Logic Converter RFM69HCW

13 HV2–LV2 C

12 HV4–LV4 O

11 HV3–LV3 I

10 HV1–LV1 S

2 - 0

3.3V LV 3.3V

5V HV -

GND GND–GND -

GND - G

I have attached a picture, too.

Were you able to make the Arduino UNO WiFi Rev 2 and the RFM69HCW 434MHz breakout work together on your end?

Thank you for including a photo, it really helps us to understand what you’re working with on your end! Everything looks perfect in your photo.

There are some significant differences between the Uno and the Uno WiFi V2 and I’m wondering if those are causing your troubles. Unfortunately I don’t happen to have a WiFi v2 to test with as we’re still working remote. The first thing I would try is skipping the LED, I don’t know how well the micro controller on the WiFi V2 is able to cope with a LED that has no resistor on it. (It might not be capable of handling the amount of current the LED allows to flow where a regular Uno is pretty forgiving to excessive current.

It also looks like the SPI pins for the Uno WiFi V2 aren’t broken out in the usual place on pins 11,12 and 13, I found a post that indicates MOSI, MISO and CLK are on the 6 pin ICSP header instead. Try moving the wires on 11,12 and 13 to the locations shown in the picture below and see if that gets you running.

I tried moving pins 11, 12, and 13 to the locations you suggested and I removed the LED. It’s still not working. I tested this code (with one change for the setCS on the ProMicro) and the code worked great and that was with the same RFM69HCW I’m trying to use. So that verified the code and the radio module. The Arduino has worked previously as far as uploading to ThingSpeak (I’m not trying to do that right now, just trying to get the radio and UNO WiFi to play nicely). Here is my code:

//#include <WiFiNINA.h>
//#include "secrets.h"
//#include "ThingSpeak.h" // always include thingspeak header file after other header files and custom macros
#include <RFM69.h>
#include <SPI.h>

// Addresses for this node. CHANGE THESE FOR EACH NODE!
#define NETWORKID     1   // Must be the same for all nodes
#define MYNODEID      2   // My node ID
#define TONODEID      1   // Destination node ID

// RFM69 frequency, uncomment the frequency of your module:
#define FREQUENCY   RF69_433MHZ

// AES encryption (or not):
#define ENCRYPT       false // Set to "true" to use encryption
#define ENCRYPTKEY    "TOPSECRETPASSWRD" // Use the same 16-byte key on all nodes

// Use ACKnowledge when sending messages (or not):
#define USEACK        false // Request ACKs or not

// Packet sent/received indicator LED (optional):
#define LED           9 // LED positive pin
#define GND           8 // LED ground pin

//char ssid[] = SECRET_SSID;    //  your network SSID (name) 
//char pass[] = SECRET_PASS;   // your network password
//int keyIndex = 0;            // your network key Index number (needed only for WEP)
//WiFiClient  client;

//unsigned long myChannelNumber = SECRET_CH_ID;
//const char * myWriteAPIKey = SECRET_WRITE_APIKEY;

//int number = 0;

RFM69 radio;

void setup() 
{
  Serial.begin(9600);

  // Set up the indicator LED (optional):
  pinMode(LED,OUTPUT);
  digitalWrite(LED,LOW);
  pinMode(GND,OUTPUT);
  digitalWrite(GND,LOW);

  // Initialize the RFM69HCW:
  //radio.setCS(10);  //uncomment this if using Pro Micro
  radio.initialize(FREQUENCY, MYNODEID, NETWORKID);
  radio.setHighPower(); // Always use this for RFM69HCW

  // Turn on encryption if desired:
  if (ENCRYPT)
    radio.encrypt(ENCRYPTKEY);
}

void loop() 
{
// RECEIVING
  // In this section, we'll check with the RFM69HCW to see
  // if it has received any packets:

  if (radio.receiveDone()) // Got one!
  {
    // Print out the information:

    Serial.print("received from node ");
    Serial.print(radio.SENDERID, DEC);
    Serial.print(", message [");

    // The actual message is contained in the DATA array,
    // and is DATALEN bytes in size:

    for (byte i = 0; i < radio.DATALEN; i++)
      Serial.print((char)radio.DATA[i]);

    // RSSI is the "Receive Signal Strength Indicator",
    // smaller numbers mean higher power.

    Serial.print("], RSSI ");
    Serial.println(radio.RSSI);

    // Send an ACK if requested.
    // (You don't need this code if you're not using ACKs.)

    if (radio.ACKRequested())
    {
      radio.sendACK();
      Serial.println("ACK sent");
    }
    Blink(LED,10);
  }
}

void Blink(byte PIN, int DELAY_MS)
// Blink an LED for a given number of ms
{
  digitalWrite(PIN,HIGH);
  delay(DELAY_MS);
  digitalWrite(PIN,LOW);
}

I have encryption and ACKs off to make things as simple as possible.

Would you be willing/able to try this setup on your end sometime soon, please? I understand you’re still working remotely, but I have no clue if that means any access to stuff is completely cut-off or not.

To recap: I tried moving the SPI pins, no luck. I tried it without the LED, no luck. I have included my code. This code (again, with the inclusion of setCS) and this radio module work with a Pro Micro, but I need the ThingSpeak compatibility, too, so I really need the Arduino UNO WiFi to work.

Any other ideas, please?

//radio.setCS(10);

You might try un-commenting that on the Uno WiFi as well to force pin 10 to be CS. After that, I’m out of ideas. It could just be that the library isn’t compatible with the ATmega4809 that the Uno WiFi uses, the library was developed before this board even existed so it’s possible that some of the code in the library compiles but doesn’t function correctly. Sadly we’re not able to assist in changing the library to make it work, that’s something you’d need to do on your end.

Worst case, you might need a regular Uno or Arduino Pro Mini to manage the RFM69 and you could then pipe that data over to the Uno WiFi for transmission via WiFi. It’s not a very elegant solution though.

I already tried it with/without the setCS call, out of desperation. It didn’t make a difference. Is there any way for you (SparkFun) to verify that the UNO WiFi Rev 2 and RFM69HCW are not compatible? (And maybe mention that on the product pages? Because if that’s the case I now have some serious egg on my face and I have to eat any additional costs…)

I really don’t want to pipe the data from a ProMicro to the UNO WiFi - like you said, not very elegant - but if that’s the only way, I will have to make do…

Any other thoughts? Please?

Thank you very much for your time and help thus far, too.

My only other suggestion would be to search through the SPI.h library being used by the WiFi Rev2 and look for any mis-matches; perhaps ensure use of an SPI.h library specific to the WiFi Rev2