Projekt demo LoRaWAN

LoRaWAN Demo Project Tutorial

Blog post opisuje tutorial, przedstawiający przykład zastosowania protokołu LoRaWAN w dziedzinie IoT.

Przygotowany program został przetestowany na płytce rozwojowej B-L072Z-LRWAN1, przesyłającej wiadomości do chmury TTN(The Things of Network), wykorzystując w tym celu protokół LoRaWAN.

Jako broker sieci LoRaWAN wykorzystano urządzenie lpnGate. Jego opis jest zamieszczony pod podanym linkiem.

Jak działa projekt demo?

Program wgrany do urządzenia końcowego sieci LoRaWAN B-L072Z-LRWAN1, odpowiada za obsługę przerwań, generowanych poprzez naciśnięcie przycisku USER(niebieski przycisk, znajdujący się na powierzchni modułu). W rezultacie timer ulegał przepełnieniu. Program zawiera 2 procedury obsługi przerwań. Pierwsza odpowiada za obsługę przerwań, generowanych przez naciśnięcie przycisku USER. Z kolei druga procedura obsługuje generowane na skutek przepełnienia sprzętowego timera.

W ramach pierwszej procedury program włącza/wyłącza diodę LED1 i ustawia flagę, umożliwiającą przesłanie do chmury TTN wiadomości, zawierającej kod wygenerowanego przez wciśnięcie przycisku przerwania.

Druga procedura ISR dokonuje zmiany stanu diody LED2, co 2 sekundy i ustawia flagę umożliwiającą przesłanie do TTN wiadomości, zawierającej kod przerwania, wygenerowanego na skutek przepełnienia timera. Opracowany program umożliwia debugowanie komunikacji po sieci LoRaWAN, poprzez wykorzystanie monitora portu szeregowego.

Konfiguracja urządzenia

W pierwszym kroku zaopatrz się w zestaw uruchomieniowy B-L072Z-LRWAN1.

Następnie zdobądź i skonfiguruj bramę LPN, zgodnie z podaną instrukcją.

Dodaj aplikację

W pierwszym kroku przejdź do strony The Things of Network’s i zaloguj się na swoje konto na TTN (jeśli go jeszcze nie masz, zarejestruj je).

W następnym kroku umieść kursor myszy na swoim awatarze i wybierz opcję Console-> Applications.

Jeśli chcesz dodać nowe urządzenie końcowe, kliknij opcję “Add application”. Tam wstaw identyfikator swojej aplikacji.

Rejestracja urządzenia

TTN utworzy nową aplikację. Następnie musisz jeszcze zarejestrować swoje urządzenie. Wybierz opcję Devices->register device. Wprowadź identyfikator urządzenia oraz jego EUI(wartość EUI ustala użytkownik).

TTN powinien wygenerować EUI aplikacji oraz klucz dla nowo zarejestrowanego urządzenia.

Konfiguracja deskryptora TTN

Aby TTN był w stanie odpowiednio przetworzyć otrzymane wiadomości, wysłane z urządzenia końcowego, należy utworzyć funkcję deskryptora komunikatów. Deskryptory TTN muszą być opracowane w języku JavaScript.

Aby skonfigurować funkcję deskryptora, na stronie głównej TTN zaloguj się na swoje konto. Przejdź do opcji Console->Applications. Wybierz swoje urządzenie i wybierz opcję “Payload Formats”.

Wybierz opcję dekodera. W danym polu wprowadź funkcję deskryptora. W przypadku projektu demo, deskryptor ma następujący szablon:

function Decoder(bytes, port) {
  // Decode plain text; for testing only
  return {
      myTestValue: String.fromCharCode.apply(null, bytes)
  };
}

Następnie zapisz funkcję. Przetestuj, czy funkcja poprawnie przetwarza odebrane dane. W etykiecie “Payload” wstaw przykładowe dane (ciąg bajtów) i kliknij opcję “Test”. Poniżej powinieneś zobaczyć wynik funkcji.

Przygotuj projekt w Mbed Online Compiler

Pobierz projekt mbed-os-example-lorawan

Projekt demonstracyjny został opracowany w kompilatorze Mbed Online. Daje on swoim użytkownikom nie tylko możliwość programowania kodu aplikacji w oparciu o Mbed OS, ale także jego kompilacji.

Aby skonfigurować i skompilować projekt, przejdź do strony firmy Mbed i zaloguj się na swoje konto (jeśli go jeszcze nie masz, zarejestruj je). Po zalogowaniu się na konto Mbed, wybierz opcję “Compiler”. Powinieneś zostać przekierowany do Mbed Online Compiler.

W obszarze roboczym programu zaznacz katalog “My programs” i wybierz opcję “Import”. W etykiecie “Search” wpisz nazwę przykładowego projektu LoRaWAN, utworzonego przez Mbed OS Group:

mbed-os-example-lorawan

Wybierz wersję tego projektu utworzoną przez “Team mbed-os-examples” i kliknij Enter. Pamiętaj, że musisz zaimportować projekt jako program.

Importuj pliki z repozytorium projektu demo LoRaWAN

Najpierw pobierz i rozpakuj z pliku demo_project.zip, główny kod i pliki konfiguracyjne dla projektu demonstracyjnego LoRaWAN.

Teraz podmień main.cpp i pliki konfiguracyjne (mbed_app.json i pliki umieszczone w katalogu config) z odpowiadającymi im plikami z paczki demo_project.zip. Najpierw usuń poprzednie wersje tych plików z programu mbed-os-example-lorawan. Usuń także niepotrzebny plik nagłówkowy DummySensor.h.

Następnie w obszarze roboczym programu zaznacz projekt mbed-os-example-lorawan i wybierz opcję “Import->Upload”. Załaduj do głównego projektu pliki main.cpp, SX127X_example_config.json oraz mbed_app.json.

Ustaw nazwę importowanego pliku jako „package”. Mbed Online Compiler powinien zaciągnąć do obszaru roboczego nowy program o nazwie “package”, zawierający zaciągnięte wcześniej pliki.

Przenieś każdy plik z programu “package” do odpowiednich lokalizacji programu mbed-os-example-lorawan (pamiętaj, aby plik SX127X_example_config.json umieścić w katalogu config, wewnątrz programu mbed-os-example-lorawan) i usuń już niepotrzebny program “package”.

Skonfiguruj pliki konfiguracyjne dla sieci Lora

W plikach mbed_app.json i SX127X_example_config.json dla elementu „target_overrides”, ustaw odpowiednie wartości następujących pól:

  • lora.device-eui
  • lora.application-eui
  • lora.application-key

Dla danego przykładu urządzenia końcowego należy wstawić następujące wartości tych pól:

"lora.device-eui": "{ 0x07, 0x00, 0xB3, 0x0D, 0x50, 0x7E, 0x0D, 0x00 }",
"lora.application-eui": "{ 0x70, 0xB3, 0xD5, 0x7E, 0xD0, 0x02, 0x96, 0x72 }",
"lora.application-key": "{ 0x0B, 0x24, 0x21, 0x68, 0xBC, 0x78, 0x95, 0x42, 0x82, 0x62, 0x46, 0x3E, 0xFD, 0x83, 0x7B, 0x92 }"

 

Skompiluj projekt

Na koniec wybierz platformę urządzenia końcowego (kliknij opcję „No device selected”).

W tym przykładzie powinna to być płytka rozwojowa DISCO-L072-LRWAN1. Jeśli nie została ona wcześniej wybrana, wejdź w opcję „Add Board”.

Nastąpi przekierowanie do następującej strony. Wyszukaj platformę DISCO-L072-LRWAN1 i dodaj ją do kompilatora Mbed Online.

W kompilatorze Mbed Online, kliknij opcję „Compile” na pasku menu. Po udanej kompilacji pobierz odpowiedni plik w formacie .bin.

Uruchom projekt demo LoRaWAN

Na koniec podłącz urządzenie końcowe B-L072Z-LRWAN1 do komputera, przy użyciu złącza USB. W eksploratorze plików, powinieneś zobaczyć urządzenie DIS_L072Z, podłączone do PC. Aby podejrzeć debugowe logi na monitorze szeregowym, sprawdź nazwę podłączonego urządzenia w Terminalu za pomocą następującej komendy:

$ dmesg

Terminal powinien wyświetlić to urządzenie jako ttyACM0:

[ 7337.681261] usb 1-1.3: Product: STM32 STLink
[ 7337.681263] usb 1-1.3: Manufacturer: STMicroelectronics
[ 7337.681264] usb 1-1.3: SerialNumber: 0665FF353830523457161547
[ 7337.736348] usb-storage 1-1.3:1.1: USB Mass Storage device detected
[ 7337.736699] scsi host6: usb-storage 1-1.3:1.1
[ 7337.737115] cdc_acm 1-1.3:1.2: ttyACM0: USB ACM device
[ 7338.768014] scsi 6:0:0:0: Direct-Access     MBED     microcontroller  1.0  PQ: 0 ANSI: 2
[ 7338.768402] sd 6:0:0:0: Attached scsi generic sg2 type 0
[ 7338.769164] sd 6:0:0:0: [sdb] 456 512-byte logical blocks: (233 kB/228 KiB)
[ 7338.769776] sd 6:0:0:0: [sdb] Write Protect is off
[ 7338.769778] sd 6:0:0:0: [sdb] Mode Sense: 03 00 00 00
[ 7338.770380] sd 6:0:0:0: [sdb] No Caching mode page found
[ 7338.770385] sd 6:0:0:0: [sdb] Assuming drive cache: write through
[ 7338.792416] sd 6:0:0:0: [sdb] Attached SCSI removable disk
[ 8308.981091] TCP: eno1: Driver has suspect GRO implementation, TCP performance may be compromised.

Uruchom monitor portu szeregowego minicom (musisz zainstalować minicom na komputerze) dla podłączonego urządzenia:

$ sudo minicom -b 115200 -o -D /dev/ttyACM0

Następnie zaprogramuj swój zestaw uruchomieniowy za pomocą skompilowanego FW, przenosząc zbudowany plik binarny do katalogu DIS_L072Z. Po kilku sekundach monitor portu szeregowego powinien wyświetlić następujący zbiór komunikatów:

Mbed LoRaWANStack initialized

 CONFIRMED message retries : 3

 Adaptive data  rate (ADR) - Enabled

 Connection - In Progress ...

 Connection - Successful
Timer Overflow Interrupt has been executed. Code: 15, Message: Timer overflow.
 2 bytes scheduled for transmission

 Message Sent to Network Server
Timer Overflow Interrupt has been executed. Code: 15, Message: Timer overflow.
 2 bytes scheduled for transmission

 Message Sent to Network Server
Timer Overflow Interrupt has been executed. Code: 15, Message: Timer overflow.
 2 bytes scheduled for transmission

 Message Sent to Network Server
Timer Overflow Interrupt has been executed. Code: 15, Message: Timer overflow.
 2 bytes scheduled for transmission

 Message Sent to Network Server
Timer Overflow Interrupt has been executed. Code: 15, Message: Timer overflow.
 2 bytes scheduled for transmission

 Message Sent to Network Server
Timer Overflow Interrupt has been executed. Code: 15, Message: Timer overflow.
 2 bytes scheduled for transmission

 Message Sent to Network Server
USER BUTTON Interrupt has been executed. Code: 10, Message: USER BUTTON pressed.
 2 bytes scheduled for transmission

 Message Sent to Network Server
USER BUTTON Interrupt has been executed. Code: 10, Message: USER BUTTON pressed.
 2 bytes scheduled for transmission

 Message Sent to Network Server
Timer Overflow Interrupt has been executed. Code: 15, Message: Timer overflow.
 2 bytes scheduled for transmission

Urządzenie końcowe powinno zmieniać stan diody LED2 co 2 sekundy (w wyniku obsługi przerwań, generowanych w wyniku przepełnienia timera) oraz powinnno zmieniać stan diody LED1, gdy użytkownik naciśnie niebieski przycisk (wynik obsługi przerwania, wyemitowanego na skutek naciśnięcia przycisku USER).

Odczyty w chmurze TTN

Aby zobaczyć dane wysłane przez urządzenie końcowe do TTN, otwórz listę urządzeń Twojej aplikacji, wchodząc w ten link. Wybierz swoje urządzenie i kliknij opcję “Data”. Odczytywane wyniki powinny mieć podobną postać:

Podsumowanie

Przygotowany tutorial przedstawia przykład możliwych zastosowań sieci LoRaWAN, z wykorzystaniem produktu lpnGate. Każdy z klientów firmy LPN Plant Sp. z o.o. może skorzystać z przygotowanego projektu demonstracyjnego LoRaWAN dla swoich celów, takich jak pomiar temperatury, ciśnienia lub przyspieszenia. Jeśli Państwo mają do nas jakieś pytania, prosimy o kontakt z naszą firmą.

Jeśli Państwo są zainteresowani zakupem produktów lpnGate, prosze przejść do strony sklepu firmy LPN Plant.

Dodaj komentarz

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