Receiving an RF 868 Mhz signal with the dragino LoRa Bee

Hello,

I'm trying to receive a signal sent from another RF device.
The idea is to recognize the different messages that are sent, and act based on the received message.

The sender is a custom remote keyboard using the Telit LE50 (868Mhz) transmitter with GFSK modulation.
I can see the signal using my USB Airspy and SDR#, but I need to receive the signal using an arduino.
I'm trying to do that with a dragino LoRa Bee hat (SX1278 transceiver) and the Radiolib library. Both the transciever and library support FSK.
But so far I'm not able to receive any data. Below is my sketch.
It is waiting ok, but I keep getting a timeout and no data.

Can anyone help ?
If you need any extra information, please let me know.

/*
   RadioLib SX127x Receive Example

   This example listens for LoRa transmissions using SX127x Lora modules.
   To successfully receive data, the following settings have to be the same
   on both transmitter and receiver:
    - carrier frequency
    - bandwidth
    - spreading factor
    - coding rate
    - sync word
    - preamble length

   Other modules from SX127x/RFM9x family can also be used.

   For default module settings, see the wiki page
   https://github.com/jgromes/RadioLib/wiki/Default-configuration#sx127xrfm9x---lora-modem

   For full API reference, see the GitHub Pages
   https://jgromes.github.io/RadioLib/
*/

// include the library
#include <RadioLib.h>

// SX1278 has the following connections:
// NSS pin:   10
// DIO0 pin:  2
// RESET pin: 9
// DIO1 pin:  3
SX1276 radio = new Module(10, 2, 9, 3);
int i;

// or using RadioShield
// https://github.com/jgromes/RadioShield
//SX1278 radio = RadioShield.ModuleA;

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

  // initialize SX1278 with default settings
  Serial.print(F("[SX1278] Initializing ... "));
  
  int state = radio.beginFSK(868.85, 48.0, 7, 125, 10, 16, false);
  if (state == ERR_NONE) {
    Serial.println(F("success!"));
  } else {
    Serial.print(F("failed, code "));
    Serial.println(state);
    while (true);
  }
}

void loop() {
  Serial.print(F("[SX1278] Waiting for incoming transmission ... "));

  // you can receive data as an Arduino String
  // NOTE: receive() is a blocking method!
  //       See example ReceiveInterrupt for details
  //       on non-blocking reception method.
  String str;
  int state = radio.receive(str);

  // you can also receive data as byte array
  
  /*  byte byteArr[8];
    int state = radio.receive(byteArr, 8);*/
  

  if (state == ERR_NONE) {
    // packet was successfully received
    Serial.println(F("success!"));

    // print the data of the packet
    Serial.print(F("[SX1278] Data:\t\t\t"));
    Serial.println(str);
        
    // print the RSSI (Received Signal Strength Indicator)
    // of the last received packet
    Serial.print(F("[SX1278] RSSI:\t\t\t"));
    Serial.print(radio.getRSSI());
    Serial.println(F(" dBm"));

    // print the SNR (Signal-to-Noise Ratio)
    // of the last received packet
    Serial.print(F("[SX1278] SNR:\t\t\t"));
    Serial.print(radio.getSNR());
    Serial.println(F(" dB"));

    // print frequency error
    // of the last received packet
    Serial.print(F("[SX1278] Frequency error:\t"));
    Serial.print(radio.getFrequencyError());
    Serial.println(F(" Hz"));

  } else if (state == ERR_RX_TIMEOUT) {
    // timeout occurred while waiting for a packet
    Serial.println(F("timeout!"));

  } else if (state == ERR_CRC_MISMATCH) {
    // packet was received, but is malformed
    Serial.println(F("CRC error!"));

  } else {
    // some other error occurred
    Serial.print(F("failed, code "));
    Serial.println(state);

  }
}

First time I have seen anyone using FSK mode on a LoRa device.

You need to be sure that the sketch\configuration\library combination is actually working in the first place and for that another LoRa module setup is needed to act as a transmitter.

Whilst both devices you are trying to connect are FSK I would not assume that their data formats are compatible, have you checked through both devices datasheets ?

I do not see anywhere in your code where you set any of the required parameters, as noted in the comments.

Paul

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.