Skip to content

LoRa

LoRa with Arduino on 868.1MHZ

arduino-LoRa\ use 868.1MHZ with SpreadFactor 10

#include <SPI.h>
#include <LoRa.h>

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

  Serial.println("LoRa Receiver");

  if (!LoRa.begin(868.1E6)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
  LoRa.setSpreadingFactor(10);
}

void onReceive(int packetSize) {

  Serial.print("packet recv\n");
  // read packet
  for (int i = 0; i < packetSize; i++) {
    Serial.print((char)LoRa.read());
  }
}

void loop() {
  LoRa.receive();
  LoRa.onReceive(onReceive); 
}

Bruteforce all the EU frequencies and the SpreadFactor

#include <SPI.h>
#include <LoRa.h>

float freq[5] = { 868.3E6, 868.5E6, 867.1E6, 867.5E6, 867.7E6, 867.9E6 }; 

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

  Serial.println("LoRa Receiver");

  if (!LoRa.begin(868.1E6)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
  LoRa.setSpreadingFactor(10);
}

void onReceive(int packetSize) {

  Serial.print("packet recv\n");
  // read packet
  for (int i = 0; i < packetSize; i++) {
    Serial.print((char)LoRa.read());
  }
}

void loop() {

  LoRa.receive();
  LoRa.onReceive(onReceive);
  delay(5000);
  While(1) {
    int i;
    for(i=0; i < 5 ; i++)
    {

      LoRa.setFrequency(freq[i]);
      int j;
      for(j=7; j <= 12; j++)
      {

        // loop on spreading factor is finish, set new freq
        LoRa.setSpreadingFactor(i);
        delay(5000);
      }
    }
  }
}

Display RSSI of the packet

The Received Signal Strength Indication (RSSI) is the received signal power in milliwatts and is measured in dBm.

The RSSI is measured in dBm and is a negative value.\ The closer to 0 the better the signal is.

Typical LoRa RSSI values are:

  • RSSI minimum = -120 dBm.
  • If RSSI=-30dBm: signal is strong.
  • If RSSI=-120dBm: signal is weak.
#include <SPI.h>
#include <LoRa.h>

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

  Serial.println("LoRa Receiver");

  if (!LoRa.begin(867.1E6)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
     LoRa.setSpreadingFactor(8);
}

void onReceive(int packetSize) {
 Serial.print("packet recv\n");
 int rssi = LoRa.packetRssi();
 Serial.print(rssi);
}

void loop() {
  LoRa.receive();
  LoRa.onReceive(onReceive);
  delay(1000);
}