LoRa i LoRaWAN część 3.

Pora na omówienie przykładu.

Wybaczcie, że musieliście tak długo czekać na trzecią część o LoRa i LoRaWAN. Jeśli nie widzieliście poprzednich, zapraszam tutaj (część 1, część 2).

W tym wpisie trochę o przykładzie – wykorzystaniu LoRaWAN, nad którym pracuję. Jest to stacja meteo. Przygotowałem na razie pierwszą wersję i chciałbym się z Wami podzielić wiedzą, jaką pozyskałem podczas tego projektu.

Całość oczywiście możecie odtworzyć u siebie w domu (zarówno hardware, jak i oprogramowanie są otwarte) lub w trakcie warsztatów takich jak te – link (o ile nadarzy się okazja na organizację).   

Założenia

Stacja meteo musi być przygotowana do pracy na zewnątrz, tam, gdzie Wi-Fi niekoniecznie dociera, a istnieje możliwość doprowadzenia zasięgu LoRa i jak najdłużej na bateriach, by dostarczać ciekawych informacji o środowisku.

W celu przyspieszenia i ułatwienia pracy skorzystałem z LoRaWAN, ponieważ miejsce, w którym chciałem użyć mojej stacji ma pokrycie z pobliskiej bramy.

Pierwsza wersja, póki co, dokonuje pomiarów: temperatury, wilgotności powietrza, ciśnienia atmosferycznego oraz natężenia światła.

Do budowy użyłem płytki Arduino MKR 1300, o której wspominałem w poprzednich częściach. Nie miałem jeszcze przyjemności testować, ale Arduino wypuściło już płytkę MKR 1310 także działającą z LoRaWAN. Wszystko powinno być kompatybilne, ale o tym, mam nadzieję, przekonam się w przyszłości.

Czujniki, które zastosowałem to: BME280, DS18b20 w wersji wodoszczelnej oraz fotorezystor. Użyłem obudowy z odpowiednim IP wyposażonej w dwie dławnice, którą miałem na stanie. Potrzebowałem jeszcze anteny do Arduino. Wybrałem taką, o której już wcześniej wspominałem. Płytka ma przygotowane zaciski pod zasilanie z dwóch paluszków 1,5 V. Użyłem AAA.

Najpierw wszystko poskładałem na płytce prototypowej. Potem stwierdziłem, że dawno nie projektowałem żadnego PCB i to jest dobra okazja. Przygotowałem pierwszą wersję z pomocą programu KiCad.

Nie jest to najbardziej profesjonalny projekt, ale udało się wygenerować gerbery, czyli format pliku, który należy wysłać do przygotowania płytki. Skorzystałem z usług firmy Satland. Zrezygnowałem z zamówienia z Chin. Czas realizacji były prawdopodobnie mniej korzystny ze względu na pandemię. Chciałem także przetestować firmę z rynku lokalnego. Tutaj link, jeśli ktoś chciałby policzyć koszt płytek -> kalkulator cen.

Płytki z Satlanda są świetnej jakości. Wiem, że spokojnie mogę zejść z szerokością ścieżek oraz wielkością pól pod Arduino. Zapewne kolejną wersję zamówię z tego samego źródła.

Kod

Cały program wgrany na płytkę wraz ze schematem i dekoderem dla TTN znajdziecie na repozytorium tutaj.

Przygotowany jest pod Platform IO. Jeśli ktoś jeszcze nie korzystał z tego środowiska, zapraszam do notki.

W projekcie znajdziecie plik konfiguracji (src/Config.h). Tam znajduje się wszystko, co należy edytować, aby przystosować projekt – m.in. miejsca na wybranie sposobu autoryzacji oraz wpisanie kluczy. Wskazówki związane z przygotowaniem znajdziecie w poprzednich częściach artykułu. Dla ułatwienia pracy znajdują się tam także interwał do uplinku (co jaki okres stacja wysyła pomiar) oraz opcja const_data_rate odpowiedzialna za automatyczne dopasowania date rate modemu i bramy. Ustawienie tego ostatniego pola jest przydatne. Warto zacząć pracę z true, a potem ewentualnie zmienić na false.

Dane

Jeśli chodzi o odbiór danych z mojej stacji meteo, wybrałem TTN i Node-RED, o którym wspominałem ostatnio. Wiele materiałów znajdziecie także tutaj.

W repozytorium dostępny jest taki kawałek, który możecie zainportować do Node-REDa. Efekt widać poniżej.

Podczas mierzenia zasięgu z własnej bramy, używałem zbierania danych do Google spreadsheet, o czym można posłuchać w tym filmie.

Problemy i dalsze pomysły

Wrócę do opcji const_data_rate, którą dodałem po problemach szczególnie z wiadomościami do urządzenia, czyli downlink. Nie ma ich w tym projekcie, ale zostawiłem sobie to jako przydatną flagę. Niestety, brama i urządzenie czasem ustalały na tyle wysoki data rate, że downlink przestawał działać. Możliwe, że było to związane z typami anten na bramie oraz moim urządzeniu. Nie jestem w technice radiowej specjalistą i nie zdiagnozowałem w pełni problemu, jednak obejścia, jakie zastosowałem, dały pozytywny rezultat.

Ważnym aspektem, nad którym muszę się skupić, jest zasilanie czujników. Potrafią one pobierać niewielką ilość prądu, nawet gdy nie są używane, co przy tej skali staje się ważne. Dopracowania wymaga ich usypianie/wyłączanie, czy to z kodu, czy elektrycznie. Niewykluczone, że będzie konieczne stworzenie kolejnej wersji płytki. Przy pomiarach co 10 minut urządzenie podziałało 2 miesiące na paluszkach. Obecnie będę robił pomiar co godzinę, co w zupełności mi wystarczy. Mam nadzieję, że przy tych dwóch zmianach urządzenie podziała dłużej. Dodatkowo znalazłem wiele wzmianek o tym, że płytka MKR 1300 z biblioteką, której używam podczas deep sleep, nie schodzi z prądem do tak niskiego progu, jak to fizycznie jest możliwe. Podejrzewam, że zostało to wyeliminowane właśnie w MKR1310 i stanowi to dobry powód, aby przetestować tę płytkę.

W przyszłości mam także zamiar wzbogacić stację o czujnik jakości powietrza i może pomiar prędkości wiatru oraz opadów.

Otwarta Sieć Rzeczy

Podczas Arduino & Raspberry Pi Day 2020 odbyła się bardzo ciekawa prelekcja poświęcona tematowi LoRaWAN. Możecie posłuchać o tym temacie oraz o dowiedzieć się co nieco o projekcie Signomix.

Plany

Wszystkich spragnionych dyskusji o LoRaWAN zapraszam do grupy na Facebooku. Niebawem na moim kanale YouTube będę pokazywał kolejne sprzęty, między innymi własną brama na Raspberry Pi oraz parę fajnych płytek, które mogą posłużyć za end pointy.

LoRaWAN update

3 thoughts on “LoRa i LoRaWAN część 3.

  1. Piękne uwielbiam takie majsterkowanie 🙂 Super sprawa to jest chciałbym miec kiedyś czas na takie cuda, ale na razie niestety tylko i wylacznie musze na spokojnie działac z zabudowy busów kielce do mojej firmy.

  2. Chyba większość z majsterkowiczów rozpoczyna swoją przygodę z elektroniką od gotowych modułów. Sam uczyłem się pierwszego i poprawnego lutowania na Arduino, które mogą być wykorzystywane na różnorodne sposoby i można z nich budować ciekawe konstrukcje.

  3. Bardzo ciekawy artykuł, po przeczytaniu na pewno odwiedzę Pana kanał na YouTube, ponieważ jestem ciekawa konstruowania bramy na Raspberry Pi oraz tych płytek, które mają posłużyć za end pointy.

Skomentuj Pola Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *