LoRa - LoRaWAN
contents
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);}