Technologia LoRa rewolucjonizuje komunikację bezprzewodową w robotyce, elektronice i automatyce, umożliwiając transmisję danych na wiele kilometrów przy bardzo niskim zużyciu energii.

Połączona z platformą Arduino pozwala szybko budować skalowalne sieci dalekiego zasięgu, idealne dla IoT, monitoringu środowiskowego i inteligentnych systemów miejskich.

Czym jest technologia LoRa?

LoRa (Long Range) to protokół radiowy dalekiego zasięgu o niskiej mocy, zaprojektowany dla Internetu Rzeczy, gdzie liczą się zasięg, pobór prądu i odporność na zakłócenia. Działa w nielicencjonowanych pasmach ISM, m.in. 868 MHz w Europie oraz 433 MHz w innych regionach, wykorzystując modulację spread spectrum (rozpraszanie widma), co zapewnia wysoką czułość odbiornika (nawet do -148 dBm) i moc nadawczą do +27 dBm.

W porównaniu z Wi‑Fi i Bluetooth LoRa nie wymaga infrastruktury operatorskiej, dlatego świetnie sprawdza się w trudno dostępnych lokalizacjach, np. w rolnictwie czy przemyśle. Prędkość transmisji jest niska (do kilkudziesięciu kbps), ale w pełni wystarczająca dla danych telemetrycznych (sensory, GPS). Rozwiązania opierają się o układy Semtech SX1301 (bramki) oraz SX1278/SX1262 (węzły końcowe), co gwarantuje stabilną łączność w mieście i w terenie otwartym.

Zalety LoRa w projektach z Arduino

Integracja LoRa z Arduino łączy tanią, otwartą platformę z efektywną łącznością dalekiego zasięgu. Moduły (np. SX1278, RA01) podłącza się przez SPI, co upraszcza programowanie w Arduino IDE. Najważniejsze korzyści to:

  • zasięg – do 10–15 km w terenie otwartym; w mieście zwykle 2–5 km dzięki wysokiej czułości;
  • niskie zużycie energii – w odbiorze typowo kilka–kilkanaście mA, a w uśpieniu mikroampery – idealne dla urządzeń bateryjnych;
  • odporność – wysoka odporność na zakłócenia i wielodrogowość sygnału;
  • skalowalność – topologie punkt–punkt i LoRaWAN dla dużych sieci, a także sieci mesh z wykorzystaniem projektów open‑source (np. Meshtastic).

W Polsce łatwo dostępne są m.in. TZT 433 MHz SX1278 w niskiej cenie, kompatybilne z Arduino Uno/Nano. Dla bardziej złożonych projektów warto rozważyć Heltec LoRa z ESP32 (mikrokontroler + OLED + radio LoRa).

Komponenty do budowy sieci LoRa z Arduino

Poniżej zebrano kluczowe moduły i bramki przydatne do startu:

Komponent Pasmo Chipset Moc nadawcza Czułość Zastosowanie
Arduino Pro Gateway LoRa 868 MHz (EU) SX1301 +27 dBm -137 dBm Bramka 8‑kanałowa na Raspberry Pi; LoRaWAN/TTN
RA01 LoRa 433 MHz SX1278 +20 dBm -148 dBm Moduł końcowy, interfejs SPI, Arduino
Heltec LoRa ESP32 433/868 MHz SX1278 do +20 dBm wysoka Węzeł z ESP32 i OLED, idealny do mesh
Waveshare SX1262 433 MHz SX1262 wysoka wysoka DTU z RS232/485 do automatyki

SX1301 w bramce umożliwia równoległy odbiór wielu pakietów na 8 kanałach (multi‑SF), a funkcje LBT/AFA mogą pomóc w spełnieniu wymagań dla wybranych podpasm. Szacunkowy pobór prądu zestawu z Raspberry Pi: ok. 600 mA (RX) i 800+ mA (TX) przy 5 V. Do prostych węzłów końcowych wystarczy Arduino + SX1278; typowe piny: VCC (3.3 V), GND, NSS (10), SCK (13), MOSI (11), MISO (12), DIO0 (2).

Budowa prostego węzła LoRa z Arduino – krok po kroku

Na początek zbudujmy nadajnik temperatury na Arduino Nano + SX1278 + DHT22:

Potrzebne elementy:

  • Arduino Nano lub Uno,
  • moduł LoRa SX1278 433 MHz,
  • sensor DHT22 (temperatura/wilgotność),
  • antena 433 MHz,
  • bateria 3.7 V LiPo dla niskiego poboru.

Połączenia:

Arduino Pin -> SX1278
3.3V -> VCC
GND -> GND
10 -> NSS
13 -> SCK
11 -> MOSI
12 -> MISO
2 -> DIO0
DHT22: Data -> Pin 4

Przykładowy kod (biblioteka LoRa od Sandeep Mistry):

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

#define DHTPIN 4
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

void setup() {
Serial.begin(9600);
// Ustaw pasmo zgodne z regionem (np. 433E6 lub 868E6):
if (!LoRa.begin(433E6)) {
Serial.println("LoRa init failed");
while (1);
}
// Parametry łącza dla większego zasięgu/kosztem prędkości:
LoRa.setSpreadingFactor(12); // SF7..SF12
LoRa.setSignalBandwidth(125E3); // 125/250/500 kHz
LoRa.setTxPower(14); // dBm (dostosuj do limitów prawnych)
dht.begin();
}

void loop() {
float temp = dht.readTemperature();
if (isnan(temp)) return;

String data = "Temp:" + String(temp, 1) + "C";
LoRa.beginPacket();
LoRa.print(data);
LoRa.endPacket();

delay(5000); // wysyłaj co 5 s
}

Kod inicjalizuje LoRa, odczytuje temperaturę i nadaje pakiety. Odbiornik na drugim Arduino odczytuje je przez LoRa.parsePacket(). Dla zasięgu powyżej 1 km użyj poprawnie dostrojonej anteny (np. półfalowy dipol) i wyższych SF.

Zaawansowane sieci – mesh i LoRaWAN z Arduino

Sieć mesh (Meshtastic)

Meshtastic to otwartoźródłowa sieć LoRa mesh, w której każdy węzeł (np. Heltec ESP32 + LoRa) przekazuje pakiety dalej, tworząc samonaprawiającą się siatkę. Zastosowania: GPS, alarmy, sensory. Konfiguracja bez programowania Arduino – wgrywasz firmware przez USB.

LoRaWAN z bramką Arduino Pro

LoRaWAN obsługuje tysiące urządzeń i integruje się z chmurą (np. The Things Network). Arduino Pro Gateway na Raspberry Pi pracuje jako 8‑kanałowa bramka, a Arduino + LoRa jako urządzenia końcowe – idealne do zdalnych odczytów i monitoringu.

Zastosowania w robotyce i elektronice

LoRa z Arduino sprawdza się w wielu scenariuszach:

  • rolnictwie – sterowanie nawadnianiem, monitoring gleby na hektarach;
  • inteligentnych miastach – lampy uliczne, parkometry, czujniki zajętości;
  • robotach – floty pojazdów magazynowych komunikujących się poza Wi‑Fi;
  • automatyce przemysłowej – SCADA z modułami RS485 i DTU;
  • monitoringu środowiska – stacje pogodowe, detektory zanieczyszczeń.

W projektach typu Meshtastic dane GPS z dronów lub robotów mobilnych można przekazywać na kilometry przez sieć mesh.

Wyzwania i wskazówki

  • regulacje – w UE używaj 868 MHz, typowo do +14 dBm EIRP i pamiętaj o ograniczeniach duty‑cycle (1%/10%); +27 dBm możliwe w paśmie 869.4–869.65 MHz z LBT/AFA i ograniczeniami – zwykle dla bramek;
  • zakłócenia – stosuj anteny o zysku 3–5 dBi, montuj z dala od metalu i źródeł EMI;
  • zużycie energii – korzystaj z trybów sleep (mikroampery) i budź układ okresowo przez RTC, by wydłużyć czas pracy na baterii;
  • diagnostyka – monitoruj LoRa.packetRssi() i SNR; RSSI poniżej -100 dBm zwykle wskazuje na słaby link lub nieoptymalną antenę.

Wyniki z testów terenowych różnią się w zależności od ukształtowania terenu, zabudowy i anten – warto weryfikować parametry empirycznie (zasięgi rzędu 10–15 km są osiągalne w otwartym polu dla wysokich SF).