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. Wymagane pola są oznaczone *