Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Troubleshooting
  3. Newbie: RFM69 serial gateway

Newbie: RFM69 serial gateway

Scheduled Pinned Locked Moved Troubleshooting
16 Posts 6 Posters 9.8k Views 5 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • E Offline
    E Offline
    EJ3359113
    wrote on last edited by
    #1

    Hello,

    I'll tried to create a RFM69 Serial Gateway with RFM69HC module

    In a first step, i have only compiled the default sketch with RFM69 options and loaded on an arduino nano but i have no message on the console of the IDE.
    With the NRF24 options, i have the standard message (impossible to initialize radio).
    How to make to have debug message with the RFM69 options?

    Best regards

    1 Reply Last reply
    0
    • carlierdC Offline
      carlierdC Offline
      carlierd
      wrote on last edited by
      #2

      There is no debug message with RFM69.
      If I am right the RFM lib used is not up-to-date and there is some blocking code if the connection is not correctly done.

      Have you tried the hardware with simple code (without MySensors) ?

      David.

      1 Reply Last reply
      0
      • E Offline
        E Offline
        EJ3359113
        wrote on last edited by
        #3

        Thanks for the response

        No, i have not tried with a simple code.

        Do you have an example?

        Regards

        1 Reply Last reply
        0
        • carlierdC Offline
          carlierdC Offline
          carlierd
          wrote on last edited by
          #4

          The code for the transmitter:

          /**************************************************************************************/
          /* Simple sketch to check RFM69 is correctly connected to the Arduino.                */
          /*        Part of the Global Home Automation System GHAS.                             */
          /*                                                                                    */
          /*                                                                                    */
          /* Version: 0.0.5                                                                     */
          /* Date   : 28/12/2015                                                                */
          /* Author : David Carlier                                                             */
          /**************************************************************************************/
          /*                                ---------------                                     */
          /*                            RST |             |  A5                                 */
          /*                            RX  |             |  A4                                 */
          /*                            TX  |   ARDUINO   |  A3                                 */
          /*     RFM69 (DIO0) --------- D2  |     UNO     |  A2                                 */
          /*                            D3  |             |  A1                                 */
          /*                            D4  | ATMEGA 328p |  A0                                 */
          /*            +3.3v --------- VCC |             | GND --------- GND                   */
          /*              GND --------- GND |  8MHz int.  | REF                                 */
          /*                            OSC |             | VCC --------- +3.3v                 */
          /*                            OSC |             | D13 --------- RFM69 (SCK)           */
          /*                            D5  |             | D12 --------- RFM69 (MISO)          */
          /*                            D6  |             | D11 --------- RFM69 (MOSI)          */
          /*                            D7  |             | D10 --------- RFM69 (NSS)           */
          /*                            D8  |             |  D9                                 */
          /*                                ---------------                                     */
          /*                                                                                    */
          /*                                                                                    */
          /**************************************************************************************/
          /*                                                                                    */
          /* Used library:                                                                      */
          /*                                                                                    */
          /*     RFM69  : https://github.com/LowPowerLab/RFM69                                  */
          /*     Jeelib : http://jeelabs.net/projects/jeelib/wiki                               */
          /*                                                                                    */
          /**************************************************************************************/
          
          //Include low power library
          #include <JeeLib.h>
          
          //Include RFM69 library
          #include <RFM69.h>
          #include <SPI.h>
          
          //Active mode debug.
          #define DEBUG
          
          //Define RFM69 settings
          #define GATEWAYID   50
          #define NODEID      35
          #define NETWORKID   5
          #define FREQUENCY   RF69_868MHZ
          #define ENCRYPTKEY  "1234567890123456"	//Encrypt key must be 16 characters
          #define IS_RFM69HW
          
          //Setup the watchdog
          ISR(WDT_vect) {Sleepy::watchdogEvent();}
          
          //Declare RFM69 driver
          RFM69 radio;
          
          //Declare local constants
          #define LOOP_DELAY   58000
          
          //Data table
          typedef struct
            {
            float    rfmTemp;      //Temperature (°C)
            float    humidity;     //Humidity (%)
            float    voltage;      //Voltage of battery capacity (v)
            byte     measure;      //Measure number (from 0 to 250, +1 each new measurement)
            } Payload;
          Payload dataToSend;
          
          //Misc.
          const char VERSION[] = "GHAS RFM69 test (transmitter) v0.0.5";
          
          /**************************************************************************************/
          /* Initialization                                                                     */
          /**************************************************************************************/
          void setup()
            {
            //Open a serial connection to display values
            #ifdef DEBUG
              Serial.begin(115200);
              Serial.print("Starting ");
              Serial.println(VERSION);
            #endif
          
            //Initialize data
            dataToSend.measure = 0;
          
            //Initialize RFM69 driver
            radio.initialize(FREQUENCY, NODEID, NETWORKID);
            radio.setHighPower();
            radio.encrypt(ENCRYPTKEY);
          
            #ifdef DEBUG
              radio.readAllRegs();
              Serial.flush();
            #endif
          
            delay(1000);
            }
          
          /**************************************************************************************/
          /* Main loop                                                                          */
          /**************************************************************************************/
          void loop()
            {
            //Get informations
            dataToSend.voltage = getVoltage() / 100.0;
            dataToSend.rfmTemp = radio.readTemperature(0);
          
            //Insert number of measure
            dataToSend.measure++;
            if (dataToSend.measure > 250) {dataToSend.measure = 0;}
          
            //Send data on serial link
            #ifdef DEBUG
              Serial.print(dataToSend.rfmTemp, 1);
              Serial.print(" degC");
              Serial.print("   ");
              Serial.print(dataToSend.voltage);
              Serial.print(" v");
              Serial.print("   (");
              Serial.print(dataToSend.measure);
              Serial.println(")");
              Serial.flush();
            #endif
          
            //Send data
            if (radio.sendWithRetry(GATEWAYID, (const void*)(&dataToSend), sizeof(dataToSend)))
              {
              #ifdef DEBUG
                Serial.println("Transmission done without problem !");
                Serial.flush();
              #endif
              }
            else
              {
              #ifdef DEBUG
                Serial.println("Error with transmission !");
                Serial.flush();
              #endif
              }
            
            //Waiting time before next measurement (minimum 3 seconds)
            radio.sleep();
            //delay(LOOP_DELAY);
            Sleepy::loseSomeTime(LOOP_DELAY);
            }
          
          /**************************************************************************************/
          /* Allows to get the real Vcc (return value * 100).                                   */
          /**************************************************************************************/
          int getVoltage()
            {
            const long InternalReferenceVoltage = 1056L;
            ADMUX = (0<<REFS1) | (1<<REFS0) | (0<<ADLAR) | (1<<MUX3) | (1<<MUX2) | (1<<MUX1) | (0<<MUX0);
            delay(50);  // Let mux settle a little to get a more stable A/D conversion
            //Start a conversion  
            ADCSRA |= _BV( ADSC );
            //Wait for it to complete
            while (((ADCSRA & (1<<ADSC)) != 0));
            //Scale the value
            int result = (((InternalReferenceVoltage * 1023L) / ADC) + 5L) / 10L;
            return result;
            }
          

          As you can see, some debug informations are displayed in the console.

          The code for the receiver:

          /**************************************************************************************/
          /* Simple sketch to check RFM69 is correctly connected to the Arduino.                */
          /*        Part of the Global Home Automation System GHAS.                             */
          /*                                                                                    */
          /*                                                                                    */
          /* Version: 0.0.1                                                                     */
          /* Date   : 28/12/2015                                                                */
          /* Author : David Carlier                                                             */
          /**************************************************************************************/
          /*                                ---------------                                     */
          /*                            RST |             |  A5                                 */
          /*                            RX  |             |  A4                                 */
          /*                            TX  |   ARDUINO   |  A3                                 */
          /*     RFM69 (DIO0) --------- D2  |     UNO     |  A2                                 */
          /*                            D3  |             |  A1                                 */
          /*                            D4  | ATMEGA 328p |  A0                                 */
          /*            +3.3v --------- VCC |             | GND --------- GND                   */
          /*              GND --------- GND |  8MHz int.  | REF                                 */
          /*                            OSC |             | VCC --------- +3.3v                 */
          /*                            OSC |             | D13 --------- RFM69 (SCK)           */
          /*                            D5  |             | D12 --------- RFM69 (MISO)          */
          /*                            D6  |             | D11 --------- RFM69 (MOSI)          */
          /*                            D7  |             | D10 --------- RFM69 (NSS)           */
          /*                            D8  |             |  D9                                 */
          /*                                ---------------                                     */
          /*                                                                                    */
          /*                                                                                    */
          /**************************************************************************************/
          /*                                                                                    */
          /* Used library:                                                                      */
          /*                                                                                    */
          /*     RFM69  : https://github.com/LowPowerLab/RFM69                                  */
          /*     Jeelib : http://jeelabs.net/projects/jeelib/wiki                               */
          /*                                                                                    */
          /**************************************************************************************/
          
          //Include low power library
          #include <JeeLib.h>
          
          //Include RFM69 library
          #include <RFM69.h>
          #include <SPI.h>
          
          //Active mode debug.
          #define DEBUG
          
          //Define RFM69 settings
          #define NODEID      50
          #define NETWORKID   5
          #define FREQUENCY   RF69_868MHZ
          #define ENCRYPTKEY  "1234567890123456"  //Encrypt key must be 16 characters
          #define IS_RFM69HW
          
          //Setup the watchdog
          ISR(WDT_vect) {Sleepy::watchdogEvent();}
          
          //Declare RFM69 driver
          RFM69 radio;
          
          //Data table
          typedef struct
            {
            float    rfmTemp;      //Temperature (°C)
            float    humidity;     //Humidity (%)
            float    voltage;      //Voltage of battery capacity (v)
            byte     measure;      //Measure number (from 0 to 250, +1 each new measurement)
            } Payload;
          Payload dataReceived;
          
          //Misc.
          const char VERSION[] = "GHAS RFM69 test (receiver) v0.0.1";
          
          /**************************************************************************************/
          /* Initialization                                                                     */
          /**************************************************************************************/
          void setup()
            {
            //Open a serial connection to display values
            #ifdef DEBUG
              Serial.begin(115200);
              Serial.print("Starting ");
              Serial.println(VERSION);
            #endif
          
            //Initialize RFM69 driver
            radio.initialize(FREQUENCY, NODEID, NETWORKID);
            radio.setHighPower();
            radio.encrypt(ENCRYPTKEY);
            radio.promiscuous(true);
          
            #ifdef DEBUG
              char buff[50];
              sprintf(buff, "Listening at %d Mhz...\n", FREQUENCY==RF69_433MHZ ? 433 : FREQUENCY==RF69_868MHZ ? 868 : 915);
              Serial.println(buff);
              radio.readAllRegs();
              Serial.flush();
            #endif
          
            delay(1000);
            }
          
          /**************************************************************************************/
          /* Main loop                                                                          */
          /**************************************************************************************/
          void loop()
            {
            //Check if data have been received
            if (radio.receiveDone())
              {
              int dataValid = 0;
              if (radio.DATALEN != sizeof(dataReceived))
                {
                dataValid = 0;
                #ifdef DEBUG
                  Serial.print("Invalid payload received, not matching Payload struct!");
                #endif
                }
              else
                {
                dataValid = 1;
                dataReceived = *(Payload*)radio.DATA;
                }
          
              //Send an ACK if required by the node
              if (radio.ACKRequested())
                {
                //radio.SENDERID = NODEID;
                radio.sendACK();
                #ifdef DEBUG
                  Serial.print("[ACK-sent]");
                #endif
                }
            
              //Display information on serial line if required
              #ifdef DEBUG
                Serial.print("[RSSI:");
                Serial.print(radio.RSSI, DEC);
                Serial.print("]");
                Serial.print("[TEMP:");
                Serial.print(dataReceived.rfmTemp, DEC);
                Serial.print("]");
                Serial.print("[VOLTAGE:");
                Serial.print(dataReceived.voltage);
                Serial.print(" v]");
                Serial.print("[MEASURE:");
                Serial.print(dataReceived.measure);
                Serial.print("] ");
                Serial.println();
              #endif
              }
            }
          

          Hope it helps !

          David.

          chrilleC 1 Reply Last reply
          0
          • E Offline
            E Offline
            EJ3359113
            wrote on last edited by
            #5

            Thank's for all

            1 Reply Last reply
            0
            • W Offline
              W Offline
              Wijbe.Fryslan
              wrote on last edited by
              #6

              Did the last post from @carlierd helps? I.g. have you tried?

              1 Reply Last reply
              0
              • carlierdC carlierd

                The code for the transmitter:

                /**************************************************************************************/
                /* Simple sketch to check RFM69 is correctly connected to the Arduino.                */
                /*        Part of the Global Home Automation System GHAS.                             */
                /*                                                                                    */
                /*                                                                                    */
                /* Version: 0.0.5                                                                     */
                /* Date   : 28/12/2015                                                                */
                /* Author : David Carlier                                                             */
                /**************************************************************************************/
                /*                                ---------------                                     */
                /*                            RST |             |  A5                                 */
                /*                            RX  |             |  A4                                 */
                /*                            TX  |   ARDUINO   |  A3                                 */
                /*     RFM69 (DIO0) --------- D2  |     UNO     |  A2                                 */
                /*                            D3  |             |  A1                                 */
                /*                            D4  | ATMEGA 328p |  A0                                 */
                /*            +3.3v --------- VCC |             | GND --------- GND                   */
                /*              GND --------- GND |  8MHz int.  | REF                                 */
                /*                            OSC |             | VCC --------- +3.3v                 */
                /*                            OSC |             | D13 --------- RFM69 (SCK)           */
                /*                            D5  |             | D12 --------- RFM69 (MISO)          */
                /*                            D6  |             | D11 --------- RFM69 (MOSI)          */
                /*                            D7  |             | D10 --------- RFM69 (NSS)           */
                /*                            D8  |             |  D9                                 */
                /*                                ---------------                                     */
                /*                                                                                    */
                /*                                                                                    */
                /**************************************************************************************/
                /*                                                                                    */
                /* Used library:                                                                      */
                /*                                                                                    */
                /*     RFM69  : https://github.com/LowPowerLab/RFM69                                  */
                /*     Jeelib : http://jeelabs.net/projects/jeelib/wiki                               */
                /*                                                                                    */
                /**************************************************************************************/
                
                //Include low power library
                #include <JeeLib.h>
                
                //Include RFM69 library
                #include <RFM69.h>
                #include <SPI.h>
                
                //Active mode debug.
                #define DEBUG
                
                //Define RFM69 settings
                #define GATEWAYID   50
                #define NODEID      35
                #define NETWORKID   5
                #define FREQUENCY   RF69_868MHZ
                #define ENCRYPTKEY  "1234567890123456"	//Encrypt key must be 16 characters
                #define IS_RFM69HW
                
                //Setup the watchdog
                ISR(WDT_vect) {Sleepy::watchdogEvent();}
                
                //Declare RFM69 driver
                RFM69 radio;
                
                //Declare local constants
                #define LOOP_DELAY   58000
                
                //Data table
                typedef struct
                  {
                  float    rfmTemp;      //Temperature (°C)
                  float    humidity;     //Humidity (%)
                  float    voltage;      //Voltage of battery capacity (v)
                  byte     measure;      //Measure number (from 0 to 250, +1 each new measurement)
                  } Payload;
                Payload dataToSend;
                
                //Misc.
                const char VERSION[] = "GHAS RFM69 test (transmitter) v0.0.5";
                
                /**************************************************************************************/
                /* Initialization                                                                     */
                /**************************************************************************************/
                void setup()
                  {
                  //Open a serial connection to display values
                  #ifdef DEBUG
                    Serial.begin(115200);
                    Serial.print("Starting ");
                    Serial.println(VERSION);
                  #endif
                
                  //Initialize data
                  dataToSend.measure = 0;
                
                  //Initialize RFM69 driver
                  radio.initialize(FREQUENCY, NODEID, NETWORKID);
                  radio.setHighPower();
                  radio.encrypt(ENCRYPTKEY);
                
                  #ifdef DEBUG
                    radio.readAllRegs();
                    Serial.flush();
                  #endif
                
                  delay(1000);
                  }
                
                /**************************************************************************************/
                /* Main loop                                                                          */
                /**************************************************************************************/
                void loop()
                  {
                  //Get informations
                  dataToSend.voltage = getVoltage() / 100.0;
                  dataToSend.rfmTemp = radio.readTemperature(0);
                
                  //Insert number of measure
                  dataToSend.measure++;
                  if (dataToSend.measure > 250) {dataToSend.measure = 0;}
                
                  //Send data on serial link
                  #ifdef DEBUG
                    Serial.print(dataToSend.rfmTemp, 1);
                    Serial.print(" degC");
                    Serial.print("   ");
                    Serial.print(dataToSend.voltage);
                    Serial.print(" v");
                    Serial.print("   (");
                    Serial.print(dataToSend.measure);
                    Serial.println(")");
                    Serial.flush();
                  #endif
                
                  //Send data
                  if (radio.sendWithRetry(GATEWAYID, (const void*)(&dataToSend), sizeof(dataToSend)))
                    {
                    #ifdef DEBUG
                      Serial.println("Transmission done without problem !");
                      Serial.flush();
                    #endif
                    }
                  else
                    {
                    #ifdef DEBUG
                      Serial.println("Error with transmission !");
                      Serial.flush();
                    #endif
                    }
                  
                  //Waiting time before next measurement (minimum 3 seconds)
                  radio.sleep();
                  //delay(LOOP_DELAY);
                  Sleepy::loseSomeTime(LOOP_DELAY);
                  }
                
                /**************************************************************************************/
                /* Allows to get the real Vcc (return value * 100).                                   */
                /**************************************************************************************/
                int getVoltage()
                  {
                  const long InternalReferenceVoltage = 1056L;
                  ADMUX = (0<<REFS1) | (1<<REFS0) | (0<<ADLAR) | (1<<MUX3) | (1<<MUX2) | (1<<MUX1) | (0<<MUX0);
                  delay(50);  // Let mux settle a little to get a more stable A/D conversion
                  //Start a conversion  
                  ADCSRA |= _BV( ADSC );
                  //Wait for it to complete
                  while (((ADCSRA & (1<<ADSC)) != 0));
                  //Scale the value
                  int result = (((InternalReferenceVoltage * 1023L) / ADC) + 5L) / 10L;
                  return result;
                  }
                

                As you can see, some debug informations are displayed in the console.

                The code for the receiver:

                /**************************************************************************************/
                /* Simple sketch to check RFM69 is correctly connected to the Arduino.                */
                /*        Part of the Global Home Automation System GHAS.                             */
                /*                                                                                    */
                /*                                                                                    */
                /* Version: 0.0.1                                                                     */
                /* Date   : 28/12/2015                                                                */
                /* Author : David Carlier                                                             */
                /**************************************************************************************/
                /*                                ---------------                                     */
                /*                            RST |             |  A5                                 */
                /*                            RX  |             |  A4                                 */
                /*                            TX  |   ARDUINO   |  A3                                 */
                /*     RFM69 (DIO0) --------- D2  |     UNO     |  A2                                 */
                /*                            D3  |             |  A1                                 */
                /*                            D4  | ATMEGA 328p |  A0                                 */
                /*            +3.3v --------- VCC |             | GND --------- GND                   */
                /*              GND --------- GND |  8MHz int.  | REF                                 */
                /*                            OSC |             | VCC --------- +3.3v                 */
                /*                            OSC |             | D13 --------- RFM69 (SCK)           */
                /*                            D5  |             | D12 --------- RFM69 (MISO)          */
                /*                            D6  |             | D11 --------- RFM69 (MOSI)          */
                /*                            D7  |             | D10 --------- RFM69 (NSS)           */
                /*                            D8  |             |  D9                                 */
                /*                                ---------------                                     */
                /*                                                                                    */
                /*                                                                                    */
                /**************************************************************************************/
                /*                                                                                    */
                /* Used library:                                                                      */
                /*                                                                                    */
                /*     RFM69  : https://github.com/LowPowerLab/RFM69                                  */
                /*     Jeelib : http://jeelabs.net/projects/jeelib/wiki                               */
                /*                                                                                    */
                /**************************************************************************************/
                
                //Include low power library
                #include <JeeLib.h>
                
                //Include RFM69 library
                #include <RFM69.h>
                #include <SPI.h>
                
                //Active mode debug.
                #define DEBUG
                
                //Define RFM69 settings
                #define NODEID      50
                #define NETWORKID   5
                #define FREQUENCY   RF69_868MHZ
                #define ENCRYPTKEY  "1234567890123456"  //Encrypt key must be 16 characters
                #define IS_RFM69HW
                
                //Setup the watchdog
                ISR(WDT_vect) {Sleepy::watchdogEvent();}
                
                //Declare RFM69 driver
                RFM69 radio;
                
                //Data table
                typedef struct
                  {
                  float    rfmTemp;      //Temperature (°C)
                  float    humidity;     //Humidity (%)
                  float    voltage;      //Voltage of battery capacity (v)
                  byte     measure;      //Measure number (from 0 to 250, +1 each new measurement)
                  } Payload;
                Payload dataReceived;
                
                //Misc.
                const char VERSION[] = "GHAS RFM69 test (receiver) v0.0.1";
                
                /**************************************************************************************/
                /* Initialization                                                                     */
                /**************************************************************************************/
                void setup()
                  {
                  //Open a serial connection to display values
                  #ifdef DEBUG
                    Serial.begin(115200);
                    Serial.print("Starting ");
                    Serial.println(VERSION);
                  #endif
                
                  //Initialize RFM69 driver
                  radio.initialize(FREQUENCY, NODEID, NETWORKID);
                  radio.setHighPower();
                  radio.encrypt(ENCRYPTKEY);
                  radio.promiscuous(true);
                
                  #ifdef DEBUG
                    char buff[50];
                    sprintf(buff, "Listening at %d Mhz...\n", FREQUENCY==RF69_433MHZ ? 433 : FREQUENCY==RF69_868MHZ ? 868 : 915);
                    Serial.println(buff);
                    radio.readAllRegs();
                    Serial.flush();
                  #endif
                
                  delay(1000);
                  }
                
                /**************************************************************************************/
                /* Main loop                                                                          */
                /**************************************************************************************/
                void loop()
                  {
                  //Check if data have been received
                  if (radio.receiveDone())
                    {
                    int dataValid = 0;
                    if (radio.DATALEN != sizeof(dataReceived))
                      {
                      dataValid = 0;
                      #ifdef DEBUG
                        Serial.print("Invalid payload received, not matching Payload struct!");
                      #endif
                      }
                    else
                      {
                      dataValid = 1;
                      dataReceived = *(Payload*)radio.DATA;
                      }
                
                    //Send an ACK if required by the node
                    if (radio.ACKRequested())
                      {
                      //radio.SENDERID = NODEID;
                      radio.sendACK();
                      #ifdef DEBUG
                        Serial.print("[ACK-sent]");
                      #endif
                      }
                  
                    //Display information on serial line if required
                    #ifdef DEBUG
                      Serial.print("[RSSI:");
                      Serial.print(radio.RSSI, DEC);
                      Serial.print("]");
                      Serial.print("[TEMP:");
                      Serial.print(dataReceived.rfmTemp, DEC);
                      Serial.print("]");
                      Serial.print("[VOLTAGE:");
                      Serial.print(dataReceived.voltage);
                      Serial.print(" v]");
                      Serial.print("[MEASURE:");
                      Serial.print(dataReceived.measure);
                      Serial.print("] ");
                      Serial.println();
                    #endif
                    }
                  }
                

                Hope it helps !

                David.

                chrilleC Offline
                chrilleC Offline
                chrille
                wrote on last edited by
                #7

                @carlierd Thanks for providing the test code. I am trying to set up RFM69 modules for the first time and have issues, and your code is very welcome. I have the two RFM69C modules connected to an Arduino Pro Mini each. Both Arduinos are able to read all the registers, and the TX node reads temperate and VCC and sends them off to the RX node
                Most measurements are received several times, but some goes missing

                [ACK-sent][RSSI:-87][TEMP:22.0000000000][VOLTAGE:3.31 v][MEASURE:1]
                [ACK-sent][RSSI:-86][TEMP:22.0000000000][VOLTAGE:3.31 v][MEASURE:1]
                [ACK-sent][RSSI:-87][TEMP:22.0000000000][VOLTAGE:3.31 v][MEASURE:1]
                [ACK-sent][RSSI:-89][TEMP:22.0000000000][VOLTAGE:3.31 v][MEASURE:2]
                [ACK-sent][RSSI:-87][TEMP:22.0000000000][VOLTAGE:3.31 v][MEASURE:2]
                [ACK-sent][RSSI:-88][TEMP:22.0000000000][VOLTAGE:3.31 v][MEASURE:3]
                [ACK-sent][RSSI:-87][TEMP:22.0000000000][VOLTAGE:3.31 v][MEASURE:3]
                [ACK-sent][RSSI:-86][TEMP:22.0000000000][VOLTAGE:3.31 v][MEASURE:4]
                [ACK-sent][RSSI:-89][TEMP:22.0000000000][VOLTAGE:3.31 v][MEASURE:4]
                [ACK-sent][RSSI:-86][TEMP:22.0000000000][VOLTAGE:3.31 v][MEASURE:4]
                [ACK-sent][RSSI:-86][TEMP:22.0000000000][VOLTAGE:3.31 v][MEASURE:7]
                [ACK-sent][RSSI:-87][TEMP:22.0000000000][VOLTAGE:3.31 v][MEASURE:7]
                [ACK-sent][RSSI:-88][TEMP:22.0000000000][VOLTAGE:3.31 v][MEASURE:7]
                

                Notice 5 and 6 are missing

                On the sending side it looks like

                22.0 degC   3.31 v   (1)
                Error with transmission !
                22.0 degC   3.31 v   (2)
                Error with transmission !
                22.0 degC   3.31 v   (3)
                Error with transmission !
                22.0 degC   3.31 v   (4)
                Error with transmission !
                22.0 degC   3.31 v   (5)
                Error with transmission !
                22.0 degC   3.31 v   (6)
                Error with transmission !
                22.0 degC   3.31 v   (7)
                Error with transmission !
                

                Both RFM69's have a 4.7uF capacitor across GND+VCC and both modules are powered from the Arduino VCC pin, and the Arduinos are USB powered. Any suggestions on why this isn't working reliable is much appreciated!
                The modules have external antennas and are 1 meter apart

                1 Reply Last reply
                0
                • carlierdC Offline
                  carlierdC Offline
                  carlierd
                  wrote on last edited by
                  #8

                  Hello,

                  I think that the RSSI is very low especially with external antennas and at 1 meter each other !
                  You have the good antenna length ? You could try to increase the caps to 10uF.

                  It's a pro mini at 3v ? you have not resistor divider for the RFM ?

                  David.

                  chrilleC 1 Reply Last reply
                  0
                  • carlierdC carlierd

                    Hello,

                    I think that the RSSI is very low especially with external antennas and at 1 meter each other !
                    You have the good antenna length ? You could try to increase the caps to 10uF.

                    It's a pro mini at 3v ? you have not resistor divider for the RFM ?

                    David.

                    chrilleC Offline
                    chrilleC Offline
                    chrille
                    wrote on last edited by
                    #9

                    @carlierd The antennes are 868 MHz rubber antennas with SMA connectors and supposed to be 2dBi gain. They are connected to a SMA connector wired to the RFM69 with as short wires as possible. The Arduinos are 3.3V, so no level converter is required
                    The low RSSI values made me think about if the antennas were faulty (I did buy them from China!), and replaced the antennas with jumper wires and suddenly things started to work, although with -90 dbm RSSI. I replaced the jumper wires with the antennas, one at a time, and still things are OK, but RSSI values are still bad (-84 to -78 dbm). Later today I will try to replace the SMA connectors with a wire soldered directly to the module to rule out bad connectors. Also I will try to change the decouple cap to 10 uF

                    I assume I can rule out any issues with the wiring between the module and the Arduinos, since both now sends and receive

                    I am right to assume that in my scenario I should expect at least -50 dbm RSSI, even with a non-H version of the RFM69?

                    1 Reply Last reply
                    0
                    • carlierdC Offline
                      carlierdC Offline
                      carlierd
                      wrote on last edited by
                      #10

                      Arf ! Remove the cable between RFM and SMA connector. Use only RF cables. You can do the job with a cable of 17,3 cm directly connected to the antenna pin of the RFM. It's very good for testing and you can reach more than 100 meters with it.

                      David.

                      1 Reply Last reply
                      1
                      • chrilleC Offline
                        chrilleC Offline
                        chrille
                        wrote on last edited by
                        #11

                        I think I am missing something very basic about how RFM69 modules work with MySensors!

                        Still have 2x Pro Mini 3.3V each with a RFM69CW module. If I install the following sketches on two modules, everything is fine

                        Sending:
                        https://github.com/LowPowerLab/RFM69/blob/master/Examples/Node/Node.ino

                        Receiving:
                        https://github.com/LowPowerLab/RFM69/blob/master/Examples/Gateway/Gateway.ino

                        One module receives data, and acks go back. RSSI is great and now I feel very confident about the hardware being OK

                        I pulled the latest 2.0 beta from github and opened the DallasTemperatureSensor sketch and connected a DS18B20 to pin 3 of the sensor Arduino. Changed MY_RADIO_NRF24 to MY_RADIO_RFM69 and enabled MY_DEBUG. The default values for MySensors seems to be network ID 100 and 868 Mhz, so I should be good to go. Sketch builds and installs and I see messages in the serial debug window - but nothing is seen on the node running the Gateway sketch - even in promiscuous mode

                        What am I missing?

                        hekH 1 Reply Last reply
                        0
                        • chrilleC chrille

                          I think I am missing something very basic about how RFM69 modules work with MySensors!

                          Still have 2x Pro Mini 3.3V each with a RFM69CW module. If I install the following sketches on two modules, everything is fine

                          Sending:
                          https://github.com/LowPowerLab/RFM69/blob/master/Examples/Node/Node.ino

                          Receiving:
                          https://github.com/LowPowerLab/RFM69/blob/master/Examples/Gateway/Gateway.ino

                          One module receives data, and acks go back. RSSI is great and now I feel very confident about the hardware being OK

                          I pulled the latest 2.0 beta from github and opened the DallasTemperatureSensor sketch and connected a DS18B20 to pin 3 of the sensor Arduino. Changed MY_RADIO_NRF24 to MY_RADIO_RFM69 and enabled MY_DEBUG. The default values for MySensors seems to be network ID 100 and 868 Mhz, so I should be good to go. Sketch builds and installs and I see messages in the serial debug window - but nothing is seen on the node running the Gateway sketch - even in promiscuous mode

                          What am I missing?

                          hekH Offline
                          hekH Offline
                          hek
                          Admin
                          wrote on last edited by hek
                          #12

                          @chrille

                          Strange. What does the log say? Wish I could help you more. Can't access my RF69 rig tonight here.

                          Also, I'm only having the RFM69W what are the differences compared to RFM69CW?

                          chrilleC 2 Replies Last reply
                          0
                          • hekH hek

                            @chrille

                            Strange. What does the log say? Wish I could help you more. Can't access my RF69 rig tonight here.

                            Also, I'm only having the RFM69W what are the differences compared to RFM69CW?

                            chrilleC Offline
                            chrilleC Offline
                            chrille
                            wrote on last edited by
                            #13

                            @hek This what I'm seeing in the log on the sensor side

                            Starting sensor (RRNNA-, 2.0.0-beta)
                            Radio init successful.
                            find parent
                            send: 255-255-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,st=bc:
                            find parent
                            send: 255-255-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,st=bc:
                            find parent
                            send: 255-255-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,st=bc:
                            find parent
                            send: 255-255-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,st=bc:
                            Init complete, id=255, parent=255, distance=255
                            find parent
                            send: 255-255-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,st=bc:
                            

                            The RFM69C/RFM69CW are a version, that's pin compatible with the RFM12. It happened to be version available from China when I ordered the modules. As I understand it's 100% compatible with the non-C version, except for the pinout

                            I think it would be useful if the radio driver could output some info when debugging is turned on, like node id, network id, frequency, pin mappings etc

                            1 Reply Last reply
                            0
                            • hekH hek

                              @chrille

                              Strange. What does the log say? Wish I could help you more. Can't access my RF69 rig tonight here.

                              Also, I'm only having the RFM69W what are the differences compared to RFM69CW?

                              chrilleC Offline
                              chrilleC Offline
                              chrille
                              wrote on last edited by
                              #14

                              @hek I am still trying to get this to work. Can you confirm that you the following gateway combination working:

                              • ESP8266 based gateway (telnet or MQTT)
                              • RFM69 (H- or non-H)
                              • Mysensors 2.0 beta code

                              What version of the board manager do you use? (2.0 or 2.1RC)
                              How did you wire the RFM radio to the ESP?
                              Could you share the actual sketch you're using (feel free to remove IP/SSID stuff)

                              It seems that at least some of my issues were related to my USB Serial adaptor not being able to provide sufficient power to the radio (even with a -13dbm/non-H radio). However I still see crashes of the gateway as soon as the node sends traffic.

                              • Jan
                              mfalkviddM 1 Reply Last reply
                              0
                              • hekH Offline
                                hekH Offline
                                hek
                                Admin
                                wrote on last edited by
                                #15

                                Sorry, I haven't rigged ESP with RFM69 myself yet.

                                1 Reply Last reply
                                0
                                • chrilleC chrille

                                  @hek I am still trying to get this to work. Can you confirm that you the following gateway combination working:

                                  • ESP8266 based gateway (telnet or MQTT)
                                  • RFM69 (H- or non-H)
                                  • Mysensors 2.0 beta code

                                  What version of the board manager do you use? (2.0 or 2.1RC)
                                  How did you wire the RFM radio to the ESP?
                                  Could you share the actual sketch you're using (feel free to remove IP/SSID stuff)

                                  It seems that at least some of my issues were related to my USB Serial adaptor not being able to provide sufficient power to the radio (even with a -13dbm/non-H radio). However I still see crashes of the gateway as soon as the node sends traffic.

                                  • Jan
                                  mfalkviddM Offline
                                  mfalkviddM Offline
                                  mfalkvidd
                                  Mod
                                  wrote on last edited by mfalkvidd
                                  #16

                                  @chrille this thread might help you, I finally got an esp8266 gateway working tonight.

                                  1 Reply Last reply
                                  0
                                  Reply
                                  • Reply as topic
                                  Log in to reply
                                  • Oldest to Newest
                                  • Newest to Oldest
                                  • Most Votes


                                  20

                                  Online

                                  11.7k

                                  Users

                                  11.2k

                                  Topics

                                  113.1k

                                  Posts


                                  Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                                  • Login

                                  • Don't have an account? Register

                                  • Login or register to search.
                                  • First post
                                    Last post
                                  0
                                  • MySensors
                                  • OpenHardware.io
                                  • Categories
                                  • Recent
                                  • Tags
                                  • Popular