Mein erster low cost LoRaWAN Node

lorawan logoWie hier bereits angekündigt, steige ich etwas in das Thema LoRaWAN ein. Nun ist es auch soweit und ich werde versuchen meinen ersten LoRaWAN Node selber zu bauen. Da ich leider noch nicht die Teile für ein Gateway habe, muss es erst mal der Node sein. Ich hoffe einfach mal, dass ich in der Reichweite eines der verfügbaren Gateways in Köln bin, ansonsten weiß ich nicht ob es wirklich klappt. In Köln gibt es aktuell drei Gateways, von denen zwei vollwertig sind, somit ist meine Chance gar nicht mal so schlecht etwas ins Netz zu bekommen. Der Node wird erst mal nur Hello World schicken, da ich keinen Sensor habe. Der Aufbau stellt also das absolute Minimum dar.

Grundsätzlich bin ich nach dieser Anleitung vorgegangen, musste aber das Pin Mapping anpassen, damit ich erfolg hatte.

lorawan node

Verwendete Hartware für den LoRaWAN Node

Der Aufbau besteht nur aus drei Komponenten:

Dazu dann noch die üblichen Drähte.

!! ACHTUNG. Der von mir verwendete Arduino Nano verwendet an seinen Ausgängen 5V, was aber für den Dragino Bee zu viel ist. Für einen Testaufbau mag es ok sein, aber auf Dauer ist das nicht empfehlenswert. Ein Arduino Pro Mini in der 3,3 Volt Variante ist besser geeignet. Ansonsten muss ein Pegelwandler eingebaut werden !!

Hier seht ihr wie ich meinen LoRaWAN Node zusammengebaut habe:

Bezeichnung Arduino Nano Dragino Bee
VCC 3.3V 1
GND GND 10
DIO0 2 12
DIO1 3 13
NSS 10 17
MOSI 11 11
MISO 12 4
SCK 13 18

In der Schaubild, seht ihr zwar einen Adafruit RFM95 aber die Anschaltung ist ähnlich.

lorawan node schaltung

 

Einen TTN Account registrieren und eine Application erstellen

Solltet ihr noch keinen Account für TTN haben, dann solltet ihr dieses jetzt hier nachholen. Anschließend fügt ihr in euerer Konsole eine Applikation hinzu, indem ihr auf add application drückt.

Ihr gebt der Applikation einen ID und eine Beschreibung, mehr benötigt es nicht um die reine Applikation zu erstellen.

ttn_console_add_application

Eurer Applikation ist aber noch kein Device zugeordnet, was wir aber jetzt nachholen werden. In eurer Applikation wählt ihr Devices und anschließend register devices. Ihr vergebt wieder eine ID und lasst euch eine Device EUI zuweisen. Damit eine EUI generiert wird, drückt ihr auf das Doppelpfeil-Symbol.

ttn_register_device

 

Anschließend wechselt ihr in die Settings eueres Device und ändert die Activation Method von OTAA ABP.

ttn device activation method

 

Zurück in der Übersicht könnt ihr euch jetzt bereits die Device Address und den Network- bzw. App-Session Key kopieren. Die Keys müssen im msb Format kopiert werden, dieses ist aber der Default. Um brauchbare Werte zu bekommen drückt ihr vorher auf den Doppelpfeil ( <>) und danach auf kopieren. Diese drei Werte benötigt ihr für euren Arduino Sketch.

ttn device

 

Konfiguration des Arduinos

Ihr müsst euch erst mal die Arduino IDE laden und installieren. Die Software gibt es hier. Anschließend passt ihr unter Werkzeuge euer Board  und den Com-Port an.

arduino ide werkzeuge

 

Anschließend müsst ihr die IBM LMIC Bibliothek einbinden. Dazu geht ihr unter Sketch >> Bibliothek verwalten >> Bibliothek einbinden. In dem daraufhin erscheinenden Fenster gebt ihr als Suchbegriff lmic ein und installiert die Bibliothek.

arduino ide bibliothek

 

In der LMIC Bibliothek ist bereits ein Beispielprogramm (Sketch) enthalten, dieses werden wir fast unverändert in den Arduino einspielen. Einzig das Pinmapping für den Dragino müssen wir anpassen und natürlich die eben ausgelesenen Keys eintragen. Den Sketch findet ihr unter Eigene Dokumente >> Arduino >> libraries >> IBM_LMIC >> examples >> ttn.

[code lang=“java“]

// LoRaWAN NwkSKey, network session key
// This is the default Semtech key, which is used by the prototype TTN
// network initially.
static const PROGMEM u1_t NWKSKEY[16] = { 0xE7, 0x11, 0xA6, 0xFD, 0xE2, 0x1B, 0x60, 0x6F, 0x65, 0x0C, 0x8B, 0x26, 0xAA, 0xBB 0xCC, 0xDD };

// LoRaWAN AppSKey, application session key
// This is the default Semtech key, which is used by the prototype TTN
// network initially.
static const u1_t PROGMEM APPSKEY[16] = { 0x71, 0x68, 0x53, 0xE9, 0x4C, 0x9A, 0x08, 0xED, 0xD0, 0x14, 0x00, 0xEE, 0xAA, 0xBB, 0xCC, 0xDD };

// LoRaWAN end-device address (DevAddr)
// See http://thethingsnetwork.org/wiki/AddressSpace
static const u4_t DEVADDR = 0x12345678 ; // &lt;– Change this address for every node!

[/code]

 

[code lang=“java“]

// Pin mapping
const lmic_pinmap lmic_pins = {
.nss = 10,
.rxtx = LMIC_UNUSED_PIN,
.rst = LMIC_UNUSED_PIN,
.dio = {2, 3},
};

[/code]

Anschließend könnt ihr den Sketch überprüfen und in euren Arduino hochladen.

arduino ide

 

Test des LoRaWAN Nodes

Der Arduino ist bespielt und alles zusammengesteckt, nun sollten wir auch mal schauen ob alles funktioniert. Wenn ihr den seriellen Monitor startet, den ihr unter Werkzeuge >> Serieller Monitor findet, solltet ihr folgendes sehen. Euer LoRaWAN Node versendet Daten, damit habt ihr es fast geschafft.

arduino ide serieller monitor

Solltet ihr etwas sehen wie

Starting
FAILURE
/(Path)/IBM_LMIC_framework/src/lmic/radio.c:659

dann kann euer Dragino Bee, bzw. der RFM95W auf ihm, nicht initialisiert werden. Überprüft in diesem Fall alle Steckverbindungen. Bei mir lag der Fehler im Mapping. Hier kann eine Google-Suche helfen. Ein Hardwaredefekt ist natürlich auch möglich, aber davon wollen wir erst mal nicht ausgehen.

 

Also der Arduino versucht zu senden. Um jetzt zu sehen ob Daten auch wirklich Empfangen werden, müssen wir zu TTN wechseln. Wenn ihr auf euer Device geht und den Reiter Data öffnet, solltet ihr empfangene Daten sehen.

lorawan noad payload

 

Um die HEX-Daten in lesbares Umzuwandeln, könnt ihr erst mal diese Webseite benutzen. Und siehe da, der Node sagte Hello, world!

hex to ascii

 

Ich hoffe ich konnte euch etwas helfen und wünsche viel Spaß mit LoRaWAN.

 

 

5 Gedanken zu „Mein erster low cost LoRaWAN Node“

  1. Hallo Björn,
    schöne Anleitung, leider habe ich keinen Erfolg.
    Ausgabe an der Arduino Konsole ist identisch wie im Beitrag. Aber weder am Gateway (eigenes) noch am Device kommen Daten an. Ich habe ein eigenes GW und einen LHT65-Sensor – beides funktioniert.
    Device-Status ist (grüner Punkt) „never seen“.
    LMIC Lib ist von https://github.com/mcci-catena/arduino-lmic
    Hast Du einen Tipp, wie ich zum Erfolg komme?
    vG
    LS

    Antworten

Schreibe einen Kommentar