LoRa i LoRaWAN część 2.

Urządzenia końcowe oraz aplikacja na serwerze – niezbędne informacje

Na początek, jeśli jeszcze nie czytaliście, zapraszam do pierwszej części tej serii.

Dzisiaj przejdę do praktyki, jednak nie zamieszczę jeszcze wszystkiego ze względu na obszerność tematu. W tym materiale skupię się na rzeczywistych urządzeniach i połączeniu ich do LoRaWAN.

TTN

O tej sieci wspominałem już przy okazji poprzedniego wpisu. Teraz zajmę się praktycznym połączeniem urządzenia końcowego w sieć TTN. Okazuje się, że to naprawdę proste.

Oczywiście, na początek należy się zarejestrować. link

Daje to możliwość łączenia z kontem bram oraz tworzenia aplikacji wraz z urządzeniami końcowymi.

Bramy

Niestety, póki co Polska nie jest w tak dobrej pozycji jak kraje zachodnie, jeśli chodzi o pokrycie zasięgiem LoRaWAN. Ja akurat mam szczęście mieszkać w zasięgu jednej z takich bram. Mimo to planuję w przyszłości i tak postawić swoją, dokładając cegiełkę do sieci TTN. Takiego sprzętu nigdy dość; o szczegółach i korzyściach z większej ilości bram jeszcze opowiem. Niestety, jest to spory koszt. Ceny najtańszych zestawów zaczynają się od około 1500 zł. Ciekawostką jest, że można znaleźć wiele rozwiązań opartych na Raspberry Pi (; Niedługo będę miał możliwość przetestowania jednej z bram i podzielę się wrażeniami na YouTube.

Zobacz też: Warsztaty Raspberry Pi

Na stronie TTN można znaleźć mapę bram i sprawdzić, czy jest coś w okolicy, aby zacząć przygodę z LoRaWAN.

Kiedy w pobliżu znajdują się trzy lub więcej bram, dostępna jest dodatkowa funkcjonalność. Każda nadana wiadomość z urządzenia jest odbierana przez wszystkie bramy w zasięgu. TTN umożliwia, korzystając z triangulacji i czasu przyjścia wiadomości, określenie lokalizacji urządzenia. Nie jest to może dokładność GPS, ale do oszacowania, ile trzeba będzie jeszcze czekać na dostawcę z pizzą, wystarczy.

Przykładowe urządzenia końcowe

Miałem już przyjemność przetestować poniższe cztery płytki z LoRaWAN, może lista się jeszcze poszerzy (;

ST B-L072Z-LRWAN1

Sercem tej płytki jest układ Muraty – CMWX1ZZABZ-091 – powszechnie stosowany w LoRaWAN. W jego małej obudowie znajdują się ARM Cortex M0+ STM32L0 (na który można wlać gotowe przykłady LoRaWAN lub Sigfox ze strony ARM mbed) i transceiver firmy Semtech (który zajmuje się modulacją LoRa, FSK i OOK). Ta platforma daje szansę na szybki i przyjemny początek pracy nawet ze środowiskiem online. Cena to około 175 zł.

Microchip SAMR34 Xplained Pro Evaluation Kit

Na tej płytce popracowałem tylko chwilę przy okazji WirlessDay 2019. Z pomocą Atmel Studio i gotowych przykładów udało się szybko połączyć z siecią. Cena takiej płytki to około 370 zł.

TTN-ND-868

W to urządzanie wbudowane są akcelerometr, przycisk, LED, termometr oraz czujnik natężenia światła. Wszystko wraz z miejscem na 3 paluszki AAA zamknięte jest w wodoszczelnej obudowie. Trochę gotowiec; nie trzeba męczyć się z elektroniką. W prosty sposób, korzystając z Arduino IDE, możemy przygotować układ do działania. Cena w okolicach 235 zł.

Zobacz też: Programowanie Arduino na alternatywnie

Arduino MKR 1300 WAN

Opis w formie wideo poniżej. Właśnie tej płytki użyję do własnego projektu, więc jeszcze będzie o niej mowa (;

Aplikacja

Przygotowaną płytkę należy połączyć z aplikacją na TTN. Musimy takową stworzyć na stronie, a następnie dodać urządzenie końcowe tak jak na zamieszczonych zrzutach. Jak widać, jest to dość banalne.

Sposób autoryzacji ustawiony jest domyślnie na OTAA(Over-the-Air Activation), który jest popularniejszy od ABP(Activation By Personalization) z powodów bezpieczeństwa i wygody. W zakładce ustawienia można to jednak zmienić. Z pewnych względów, jak np. pierwsze nawiązanie komunikacji i wymuszony downlink w OTAA, czasem ta druga opcja wydaje się właściwsza. Przy obu metodach wykorzystywane są inne klucze, które należy wprowadzić.   

Muszą one być także zapisane na urządzeniu, czy to na sztywno w kodzie, czy podawane i zapisywane w jakiejś konfiguracji. Tak jak to prezentowałem na przykładzie z Arduino w filmiku.

Integracja

Kiedy połączenie z aplikacją jest już nawiązane, dostępnych jest kilka możliwości dalszej integracji TTN z innymi usługami. Można to nawet przećwiczyć bez urządzenia, ponieważ istnieje opcja symulacji uplinku (wysyłania wiadomości z urządzenia) oraz downlinku (wysyłania informacji do urządzenia).

W LoRaWAN z powodu limitowanego czasu on air należy starać się wiadomości ograniczać do jak najkrótszych, najlepiej strumienia bajtów (tak jak na przykładzie ze zrzutu). Zapomnijcie o typach string (;

Na serwerze TTN można takie dane przerobić do bardziej czytelnej formy. Służą do tego decoder, converter czy validator.  Do przygotowania downlinku możemy korzystać z encodera. Najczęściej formatem, który uzyskamy po takiej przeróbce, będzie JSON (JavaScript Object Notation; bardzo popularny format zapisu danych); przykład poniżej.

W zakładce integracji znajduje się między innymi IFTTT, można także posłużyć się MQTT, czy np. specjalną paczką dla Node-RED, o którym obecnie powstaje mały kurs na YT. W każdym z tych przypadków dane dostępne są w postaci całego JSONa albo pod nazwami pól dla uniknięcia tworzenia parsera. Wszystkie powyższe możliwości szczegółowo pokażę przy okazji projektu.  

Podsumowanie

Kiedy przygotowane są już urządzenie i aplikacje na TTN, można wszystko poskładać w projekt. Warto najpierw spróbować sił na przykładach, jak pokazałem w filmie, a następnie zbudować na tym swoją aplikację.

W kolejnym wpisie omówię problemy, jakie mnie spotkały przy projekcie, jak korzystam z integracji oraz wyniki niektórych pomiarów. Jeśli macie pytania lub chcecie się czymś podzielić, zachęcam do kontaktu (;

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *