![Arduino LoRa Sensor z radiem InAir9B Arduino LoRa Sensor z radiem InAir9B](https://img.gwsigeps.com/img/circuits/arduino-lora-sensor-with-inair9b-radio-3.jpg)
Spisu treści:
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”.