LoRa, LoRaWAN, TTN
    SP6KZ pisze:

      EI2KK pisze:

      Ogólnie LoRa fajna rzecz.. 'rozwojowa' cool
      Może warto wydzielić tematyke LoRa do osobnego tematu, żeby tu wam balona nie zaśmiecać..?


    jestem za, temat również mnie zaciekawił


No to zacznę, chociaż sam mam wiele jeszcze do nauczenia w tej dziedzinie.

LoRa to w skrócie pisząc, rodzaj emisji cyfrowej mającej zapewnić łączność przy minimalnej mocy na maksymalną odległość.

LoRaWAN to specyfikacja sieci, protokołów, uwierzytelniania itp..

TTN (The Things Network) to serwis społecznościowy, platforma pozwalająca włączyć swoje urządzenia i aplikacjie do sieci LoRaWan

To oczywiście uproszczone i pobieżne definicje.


Jak to działa...
Sieć tworzą użytkownicy, każdy może postawić gateway i zarejestrować w TTN.

Są różne rodzaje gateway - tzw 'pełne' które odbierają na kilku kanałach jednocześnie i każdy rodzaj SF (Spread Factor) oraz Packet Forwarder, czyli popularnie zwane 1 channel gateway. Pierwsze drogie (ok €300) drugie DIY i tanie (€10). Pełne i drogie pominę, bo to się poprostu zamawia, płaci, instaluje..

Wersja 1 channel zwykle oparta jest o kod dostępny na licencji MIT czy podobnej, uruchamiane na przeróżnych platformach, nedrogich, np. WeMos czy RaspberryPi. Do tego potrzebny jest moduł radiowy, sporo oprogramowania wspiera serię RFM (dla Europy np. RFM95W w paśmie 868MHz). Gateway powinien mieć dostęp do internetu, sensownie jest żeby miał stałe zasilanie jeśli ma pracować 24/7. Zasadniczo gateway jest stacjonarny, ale może on również wysyłać własną pozycję do TTN - nie testowałem jeszcze, ale pewnie niedługo sprawdzę. Tak więc Gateway to urządzenie kóre odbiera dane z innych urządzeń (nodes) przesyła je (uplink) na serwer TTN (i/lub inny) ale również ma możliwość przesłania danych z aplikacji TTN do node (downlink). Z założenia każda gateway obsługuje wszystkie nodes. Nie trzeba mieć własnej gateway żeby uruchomić node.

No to teraz o nodes, czyli tych urządzeniach które nadają coś do sieci.
Tu również są komercyjne (pomijamy) oraz DIY - znowu, kod i przykłady dostępne w Internecie, platforma dużo mniej wymagająca, Arduino Pro Mini (3.3V) doskonale daje sobie radę, największe obciążenie to kodowanie payload. Dane jakie przesyłamy są dowolne i zależą tylko od naszych potrzeb, jednak podlegają pewnym ograniczeniom wynikającym ze specyfikacji. Generalnie nie przesyłamy danych w postaci tekstu, tylko kodowane wartości liczbowe. Należy zawsze dążyć do jak najmniejszego rozmiaru payload, gdyż wpływa on na ilość pakietów jakie możemy wysłać w ciągu doby. Dla pasma 868MHz i SF-7 limit 'grzecznościowy' TTN jest 30 sekund Tx na dobe na każdy node, nawet jeśli odbierasz go wyłącznie na swojej bramce. Żeby to jakoś zobrazować, w tej chwili pracuje u mnie testowo node wysyłający 5 bajtów danych (+13 bajtów systemowych) co pozwala mi wysłać jeden pakiet co trzy minuty bez obawy o przekroczenie limitu. Konsola TTN udostępnia fajne narzędzie do kodowania/dekodowania i testowania payload zanim zaczniemy cokolwiek nadawać. Jeszcze pracuje nad zmniejszeniem ilości bajtów, ale dla przykładu balonowego (w ramach samokształcenia) podam przykład następujący (dane przypadkowe):

payload:

0B ,72 ,2B ,4F ,01 ,58 ,19 ,12 ,23 ,57 ,B3 ,AE ,06

Co zawiara nastepujące informacje:


"alt": 4643,
"ber": 359,
"ind": 25,
"lat": 51.77688,
"lon": -7.50123,
"prs": 856,
"spd": 174,
"temp": -40


Nie ma konieczności dodawać do payload żadnego ID balonu gdyż każdy node ma swój identyfikator i możemy spokojnie rozpoznać po tym z kórego z naszych node dane pochodzą.

Aplikacja - to cała logiczna strona zdefiniowana przez nas w konsoli TTN, do każdej aplikacji przypisujemy jeden lub więcej node. Dane wysłane przez node zostaną zdekodowane (odszyfrowane) tylko w tej aplikacji, o ile można odczytać payload na gateway, to niewiele się da z tego wyciągnąc bez klucza aplikacji.
Poniżej przykładowy payload z mojej gateway:


"gw_id": "eui-b4e62dffffxxxxxxxxxx",
"payload": "QDsTASYAJQABNdQD8hlQVyi1",
"f_cnt": 37,
"lora":
"spreading_factor": 7,
"bandwidth": 125,
"air_time": 51456000
,
"coding_rate": "4/5",
"timestamp": "2018-05-17T10:35:32.729Z",
"rssi": -60,
"snr": 10,
"dev_addr": "26xxxxxx",
"frequency": 868099975


Airtime to ~51.45ms - przydatne przy ustalaniu ilości Tx na dobę, dev_addr to adres node odebranego przez gateway
Jak widzimy, gateway przesyała info o częstotliwości na której pakiet został odebrany (wiem, mój node ma 25Hz dewiacji, ale z tego co widzialem u innych to mają i po 5kHz, poza tym od tygodnia jest to dokładnie ta sama częstotliwość, zero 'pływania') - jeśli częstotliwość node-gateway nie jest zgodna z planem częstotliwości dla gateway, pakiet zostanie odrzucony przez TTN. Czy można postawić gateway w EU na innej częstotliwości? Nie wiem, nie sprawdzałem, wybiera się również na który serwer dane mają trafiac i możliwe że system nie pozwoli nam 'postawić' gateway na 70cm w Europie.



Integracja - to kolejna przydatna funkcja konsoli TTN - można wysyłać dane do jednego z wielu serwisów lub na własny serwer, otrzymujemy w tym drugim przypadku dane zawierające sporo informacji (więcej niż wysyłamy), na przykład ID i lokalizacje gateway która odebrała pakiet, SRN i RSSI, a także lokalizacje nadajnika. Tu nie mam jeszcze jasności jak to działa, przypuszczam że pakiet musi być odebrany przez kilka gateway, bo przy jednej gateway nie dostałem lokalizacji node z TTN. Zaznacze, że nie chodzi tu o dane wysyłane przez node, to współrzędne wyliczane przez TTN i dodawane do danych przesyłanych na serwis z kórym aplikacje integrujemy. Dalsza wizualizacja danych zależy od potrzeb i pomysłowości.


Do czego to można zastosować?
Oczywiście pierwsze co przychodzi na myśl to balony, ale nie ma co się oszukiwać, nie da się tego odbierać i dekodować na typowym sprzęcie krótkofalarskim - jednak łatwość i koszt postawienia gateway umożliwia każdemu włączenie się do zabawy. W tym rozwiązniu gateway kórego używam można odczytać podstawowe dane na OLED - czas, RSSI, SNR, numer node i ilość bajtów. Samego payload jak wspomniałem wcześniej nie odkodujemy, ale właściciel node/aplikacji może udostępniać info o tym które gateway dane odbierały.

No to tyle na początek, może trochę chaotycznie, proszę traktować to jako wstęp do wymiany doświadczeń.
Przypuszczam że nie jestem na tym forum jedynym który się LoRa zainteresował.


Sama gateway jest niedużym urządzeniem, dawałem już zdjęcie w 'zagadkowni' - największy jest na zdjęciu OLED, 3x3cm, ale spokojnie możemy go odłączyć przy instalacji gateway 'outdoor' Tak więc całość mieści się w kostce 30x30x20mm nie licząc anteny oczywiście - łatwe do ukrycia gdziekolwiek.




  PRZEJDŹ NA FORUM