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).