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 (;
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ł.
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
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 (;