Arduino LoRa Sensor z radiem InAir9B

Arduino LoRa Sensor z radiem InAir9B

Spisu treści:

Anonim

Tutaj opiszę krok po kroku, jak stworzyć działający czujnik LoRa ze stosem LoRaWAN opartym na module inAir9B i Arduino UNO (to samo można zastosować do Mega).

Nie znalazłeś kompletnego samouczka w dowolnym miejscu w sieci i postanowiłem to zrobić.

W końcu będziesz mógł użyć węzła końcowego LoRa wysyłając wiadomość „Witaj świecie” co minutę.

Jako przykład LoRaWAN zakładam, że masz już bramę LoRa.

Czego potrzebujesz:

1. Arduino UNO (Mega lub inne)

2. Moduł inAir9B (ponieważ możesz spróbować tego samego z innym modułem, ale jest poza zakresem tego przewodnika)

3. Przewody i falochron

4. Brama LoRa

5. PC lub laptop z Arduino IDE

6. Serwer LoRa Network, aby zobaczyć Twoje dane (używam tutaj loriot.io)

Przygotowanie:

Połącz bramę z serwerem sieciowym:

1) najłatwiejszym sposobem jest użycie darmowego konta na loriot.io. Zarejestruj się tam i dodaj swoją bramę. Udostępnia wszystkie instrukcje dotyczące konfiguracji bramy i pobierania niestandardowego oprogramowania, jeśli jest to wymagane. Gdy skończysz, zobaczysz swoją bramę jako „online” i „Połączony”

2) Utwórz aplikację sieciową na swoim serwerze.

3) Wygeneruj nowe urządzenie w swojej aplikacji. To da ci ustawienia takie jak 'Device EUI', DevADDR, NWKSKEY, APPSKEY i kilka innych, których teraz nie potrzebujemy.

Kieszonkowe dzieci:

Krok 1: Moduł okablowania

Niektóre z moich modułów w Air9B były z lutowanymi nogami (tuż na zdjęciu), a niektóre lutowałem sam (po lewej na zdjęciu). Rozproszone moduły mają nogi nad etykietami, które nie są przekonujące z mojego POV, ponieważ jeśli używasz kartonu, nie możesz zobaczyć, co jest na nim napisane. Więc moje moduły przylutowałem nogami. Ale od ciebie zależy, co wybierzesz.

Połącz inAir9B z Arduino w następujący sposób:

inAir9B - Arduino

D0 - 2

D1 - 5

D2 - 6

CS - 10

0V -GND

3V3 - 3,3V

SI - MOSI (w nagłówku ICSP)

SO - MISO (w nagłówku ICSP)

CK - SCK (w nagłówku ICSP)

Zobacz szpilki w nagłówku ICSP na zdjęciu

Krok 2: Programowanie

Obecnie istnieją 2 wersje bibliotek LoRaWAN dla Arduino:

1. http://github.com/matthijskooijman/arduino-lmic - ta biblioteka jest przenoszona z biblioteki IBM LoRaWAN in C. Problem polega na tym, że zużywa dużo pamięci (głównie z powodu części opisującej AES) iz tego powodu nie może być używany tak jak w Arduino UNO. Ale można go użyć po wyłączeniu niektórych funkcji (co powoduje zmniejszenie kodu).

2. http://github.com/things4u/LoRa-LMIC-1.51 - jest to ten sam port z biblioteki IBM, ale z inną biblioteką dla AES (mniejsza wersja).

Miałem problemy z uruchomieniem szkicu z drugiej opcji i postanowiłem zatrzymać się na pierwszej.

Aby zrobić to samo, należy pobrać bibliotekę z powyższego linku (wersja Matthijs Kooijman) i umieścić go w folderze „biblioteki” Arduino (rozpakowanym). Następnie uruchom ponownie Arduino IDE, a zobaczysz je w bibliotekach i przykładach.

Najpierw przejdź do folderu z biblioteką i otwórz plik „config.h”. Sprawdź tę linię

'#define CFG_sx1276_radio 1' jest odkomentowane i komentarz „// # define CFG_sx1272_radio 1”.

Odkomentuj linie '#define DISABLE_PING' i '#define DISABLE_BEACONS', aby zaoszczędzić miejsce na Arduino UNO (dla Mega możesz to pominąć).

Następnie otwórz w Arduino IDE: File -> Examples -> IBM LMIC framework -> ttn

Sprawdź szpilki, powinny być takie:

// Mapowanie pinów

const lmic_pinmap lmic_pins = {.nss = 10,.rxtx = LMIC_UNUSED_PIN,.rst = 5,.dio = {2, 5, 6},};

Ustaw NWKSKEY, APPSKEY, DEVADDR podczas zarządzania nim na serwerze sieciowym.

Zobacz załączone pliki jako przykład.

Prześlij swój szkic do Arduino. Gotowe!

Rozpocznie wysyłanie paczek do bramy, a następnie zostanie przesłany do serwera sieciowego.

Jeśli użyjesz 'loriot', możesz zobaczyć pakiety na twoim serwerze na stronie: http: //www.loriot.io/apps/gwtap.html? Gw = B8-27-EB -… (umieść MAC swojego GW tutaj)

A także możesz sprawdzić wiadomości przychodzące na serwer (patrz zdjęcia).

Możesz konwertować dane HEX na ASCII tutaj: http: //www.rapidtables.com/convert/number/hex-to-a …

W moim przypadku '48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 'oznacza „Witaj, świecie!”

Następne kroki:

Podłącz swoje prawdziwe czujniki do arduino i zaprogramuj je, aby wysyłały dane zamiast „Hello World”.