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);
}