LoRaWAN Transceiver in The Things Stack (TTS) einbinden
LoRaWan (Long Range Wide Area Network) nutzt eine von Semtech entwickelte proprietäre Funktechnik und sie ermöglicht es, kostenfrei im lizenzfreien SDR/ISM 868 MHz Band Datenpakete via Funk zu übertragen. Mit dieser Technik im Sub-GHz-Bereich mit wesentlich geringerer Freiraumdämpfung, werden teilweise beeindruckende Reichweiten von bis zu mehreren Kilometern erzielt (abhängig von der Antenne bzw. Antennengewinn). Dieser Artikel zeigt die Einrichtung dieses MakerKits für LoRaWAN, die Konfiguration sowie die komplette Einbindung in das TTS (The Things Stack V3) auf. Weitere Informationen zum Thema LoRaWAN P2P Verbindung Transceiver Receiver einrichten.
Umbau MakerKit
Das vorhandene MakerKit kann so umgebaut werden, dass zwei vollwertige LoRaWAN Module Daten via eines LoRa Gateways in das TTN schicken können.
The Things Stack Account anlegen / Daten des Funkmoduls eintragen/generieren
Um mit den LoRa Funkmodulen über das TTS zu kommunizieren muss zwingend ein Account in The Things Stack eingerichtet werden.
Hinweis: TTN ist nicht zu empfehlen, da hier bereits die Migration auf V3 läuft. (legacy / Alter Standard)
- Rufen Sie den Cluster Picker auf: The Things Network Cluster Picker
- Wählen Sie auf der Weltkarte Europe 1 aus, oder folgen Sie diesem Link: The Things Network Account
- Nach der Einrichtung kann man auf der Frontpage hier direkt die Konfiguration vornehmen:
-
Den Abschnitt Applications auswählen.
-
Dann den Reiter --> add application auswählen.
-
Dann Application ID / Description nach eigenem Ermessen eintragen, siehe Beispiel weiter unten. Dann per Create Application bestätigen.
Beispiel: Bezeichnung
- Application ID : meine-lora-module
- Application Name: meine-lora-module-pool
- Description: Hier sind alle meine LoRa Module aufgelistet... Beispieltext
Jetzt ist die Application eingerichtet, wir befinden uns auf der Übersicht / Application Overview. Nun muss das eigentliche LoRa Funkmodul / Sensor registriert werden (momentan 0 End Devices).
-
Jetzt müssen die Endgeräte/LoRa Module eingerichtet werden. Wählen Sie +Add end device an.
-
Definieren Sie nun das LoRa Board aus dem MakerKit im TTS.
In diesem Beispiel werden folgende Einstellungen verwendet:
'''Select End Device :''' Brand --> Heltec Automation Model --> Wifi LoRa 32 (V2) Class A ABP Hardware Version --> auf Unknown belassen Firmware Version --> auf 1.0 Profile Region --> EU_863-870 Mhz
'''Enter registration Data''' Frequency plan --> Europe 863-870 Mhz (SF9 for RX2 -recommended) Device Address: generieren lassen ApplicationSessionKey AppSky: generieren lassen NetworkSessionKey NwkSky: generieren lassen
-
End device ID: mein-neues-device
-
Dann mit Register End Devices bestätigen.
-
Das neue Device ist nun vollständig angelegt. Es wird eine Übersicht über das Device angezeigt.
Erforderliche Keys/Schlüssel
Wir brauchen aus dieser Oberfläche folgende Keys/Schlüssel um das Gerät später richtig zu authentifizieren:
- Device Address
- NetworkSessionKey
- ApplicationSessionKey
Hinweis: Diese Schlüssel werden später bei der Programmierung des LoRa Modules benötigt. Diese müssen im msb Format vorliegen. Es kann mit dem Symbol <> neben z.B. AppSKey gleich passend adaptiert werden.
Hier im Beispiel die gezogenen Daten, die später noch wichtig werden:
| Device Address | 260BB744 |
| NetworkSessionKey | 0xDC, 0x5D, 0xA2, 0xD6, 0xFB, 0x78, 0x9A, 0x9E, 0xC6, 0x00, 0x9D, 0xBD, 0xA6, 0x5E, 0x6C, 0xE3 |
| ApplicationSessionKey | 0x6E, 0xB3, 0xC4, 0x6F, 0x38, 0x2C, 0xD8, 0xB7, 0x61, 0x89, 0xD1, 0x87, 0xDE, 0xB9, 0x79, 0xB6 |
LoRa Transmitter zusammenbauen / konfigurieren
Dieser Abschnitt zeigt den Aufbau einer Node to TTN Kommunikation, hier bezieht ein LoRa Controller Werte von einem Sensor (Luftdruck, Luftfeuchte und Temperatur). Datenpakete werden periodisch via Funk zur Weiterverarbeitung über ein LoRa Gateway an das TTN geforwarded / gepusht.
Übersicht über die nachfolgenden Inhalte
Sie finden nachfolgend eine Zusammenfassung über die angesprochenen Inhalte der weiteren Abschnitte dieses Artikels:
- Schematischer Aufbau der Controller
- Kommunikation zwischen zwei ESP32 Controller LoRa WAN
- Entwicklungsumgebung einrichten
- Software kompilieren und Flash Speicher schreiben
- Ansprechen von zusätzlichen angebrachten Sensoren am Controller (hier im Beispiel ein Barometrischer Sensor BME 280 der die Werte Luftdruck (auch dann als Höhenmesser), Temperatur und Feuchtigkeit liefert)
- Wie Datenpakete vom Transceiver auf über ein Gateway in das TTN übermittelt werden
- Dekodierund der Daten im TTN
Wichtiger Hinweis zur Inbetriebnahme
Bei der Inbetriebnahme (auch bei Tests) unbedingt vorher die Antenne 868 Mhz konnektieren, das Funkmodul könnte ohne Antenne durch Überlastung beschädigt werden.
Verwendete Komponenten
Es wird das LoRa Board Heltec V2 mit ESP32 CPU verwendet.
- Funktechniken:
- LoRa
- WiFi
- BLE (Bluetooth Low Energy)
- 0.96 Zoll OLED Display (Wird in diesem Beispiel angesteuert)
ESP32 Board Spezifikation
Dieser Abschnitt zeigt die technischen Spezifikationen in einer tabellarischen Darstellung.

| Komponenten | Eigenschaften |
|---|---|
| ESP32 Controller | |
| WiFi |
|
| Bluetooth |
|
| LoRa Chip | |
| Anschlüsse |
|
| Weitere Eigenschaften | |
| Abmessungen | 50.2 x 25.5 x 9.74 mm |
| Stromverbrauch gemessen |
|

| Vorderseite |
|
| Rückseite |
Aufbau LoRa Transceiver
Dieser Abschnitt zeigt den Gehäuseaufbau der beiden Geräte die auch als LoRa Transceiver verwendet werden können. Später kann das Board mit der mitgelieferten Antenne direkt mit dem U.FL / IPEX Antennenanschluss auf der PCB verbunden werden.
LoRa Transceiver
Der LoRa Transceiver besteht aus folgenden Komponenten:
- BME 280
- 868 MHz Antenne
- Gehäuse
Gehäuse
Für das Gehäuse für LoRa Transceiver gibt es ebenso STL Dateien, Sie finden diese ebenso am Ende des Artikels.
- LoRa_Case_Transceiver_Cover.stl
- LoRa Case_Transceiver_Body.stl
Später kann das Board mit der mitgelieferten Antenne direkt mit dem U.FL / IPEX Antennenanschluss auf der PCB verbunden werden. Bei Nutzung der vorhandenen Schraublöcher, sehr kurze Schrauben verwenden. Um generell den barometrischen Sensor für erste Tests ohne Aufbau anzuschließen, kann dieser wie folgt mit dem Board verbunden/verlötet werden (siehe fliegender Aufbau):

Hinweis: Für spätere Verwendung des Boards im Custom Case, ist es ratsam die Kabel vom BME nicht wie hier auf der Rückseite, sondern direkt auf der Vorderseite anzulöten. Beachten Sie dazu das Bild wie das Kabel im Gehäuse verbaut wurde weiter unten.
Kontaktierung / Schema
Das folgende Schema zeigt die korrekte Kontaktierung der Platine. Tipp: Ein kleiner Tropfen Heißkleber fixiert die Zuleitungen am BM280.
ESP LoRa32 <----> BME 280 Sensor Kontaktierungen: PIN 15 <-------> SCL PIN 4 <-------> SDA GND <-------> GND 3.3V+ <-------> VIN
Zusammenbau
Folgende Vorgehensweise gilt für den korrekten Zusammenbau des Sensors:
- Stecken sie den barometrischen Sensor BME 280 vorsichtig in die Aussparung bzw. Öffnung.
- Das Antennenkabel ist (ohne Knicke) um die runden Aussparungen zu legen.
- Bemessen Sie die Zuleitung gerade so lang, dass die Antenne optimal verstaut werden kann.

Einrichtung der Softwarekomponenten
Der vorherige Abschnitt zeigte die Konfiguration der Hardware (LoRa Transceiver),
nun zeigen wir Ihnen wie Sie die erforderlichen Softwarekomponenten installieren und einrichten.
Einrichtung der Entwicklungsumgebung Arduino IDE
Um die Kompatibilität zu anderen Systemen zu erhöhen, um es schlicht "so einfach wie möglich" zu halten, wurde hier auf die Kompilierung in der Linux Shell verzichtet.
Das Mittel der Wahl ist die Arduino IDE die für Linux sowie Windows kostenfrei erhältlich ist.[1]
Die weitere Vorgehensweise bezieht sich hier im Artikel dabei auf die Einrichtung unter Ubuntu Linux.
Einrichten des Boards ESP32 / Arduino IDE
Da das DevBoard der IDE noch unbekannt ist, müssen die Informationen hierzu über einen Link zugänglich gemacht werden.
Der nachfolgende Link wird unter "Additonal Board Manager URLs" eingetragen werden (siehe unten)
-
Gehen Sie zu File → Preferences → Settings und geben Sie die folgende URL ein: https://dl.espressif.com/dl/package_esp32_index.json
-
Danach kann die Board Gruppe installiert werden. Gehen Sie zu Tools → Board → Boardmanager, suchen Sie nach esp32 und installieren Sie diese.
-
Wählen Sie das passende Heltec Board aus: Heltec Wifi LoRa (V2) Das ESP32 Board ist nun eingerichtet.
Übersicht der erforderlichen Libraries
Um alle zusätzlichen Eigenschaften zu verwenden, sind weitere Libraries erforderlich:
- Library OLED Display
- Library BME 280 Sensor
- Library LoRa WAN MCCI-catena Funktionalität
Einrichtung der Library OLED Display
Ziehen sie die Bibliotheken für das Oled Display über den Menüpunkt Sketch Include Library → Manage Library nach.
-
Suchen Sie nach der Library U8g2. Wählen Sie diese aus und installieren Sie diese.
Einrichtung der Library BME280 Sensor
Suchen Sie nach folgender aktueller Library: Adafruit bme 280
-
Adafruit BME280 Library, es wird dann automatisch die Adafruit Unified Sensor Library mit installiert.
Anpassung des PinMappings
Hier ist zu beachten das das ursprüngliche PinMapping mit dem Board nicht übereinstimmt. Konfigurieren Sie dazu eine Datei um, diese liegt im Arduino Verzeichnis. Der Speicherort der Datei kann sich je nach Installationsart oder Version bzgl. der Grundinstallation unterscheiden:
- /.arduino15/packages/esp32/hardware/esp32/1.0.6/variants/heltec_wifi_lora_32_V2/pins_arduino.h
In der Datei nach folgenden Einträgen suchen:
static const uint8_t SDA = 21; static const uint8_t SCL = 22;
Die SDA und SCL Pinbelegung ändern auf:
static const uint8_t SDA = 4; static const uint8_t SCL = 15;
Nach dieser Änderung kann der BME 280 einwandfrei vom ESP32 angesprochen werden.
Einrichtung der Library MCCI LMIC für LoRa WAN Funktionalität
Suchen Sie nach der Library MCCI LMIC library (im Test wurde die Version 4.0 genommen):
-
Hier die MCCI LoRaWAN LMIC Library auswählen (aktuell 4.0.0)
Nach der Installation der Library müssen noch Anpassungen in der Config vorgenommen werdenFunkfrequenzen stehen ab Default auf US Standard, hier aber die europäischen ISM Bänder benötigen:
Speicherort: ..Arduino/libraries/arduino-lmic-master/project_config/lmic_project_config.h
Da die Datei auch je nach Installationsart unterschiedlich im Dateisystem liegen kann, bemühen wir die die Dateisuche.
Unter Linux zum Beispiel mit folgendem Kommando:
find / -path /proc -prune -false -o -name lmic_project_config.h
-
Hier ist das richtige EU Setting setzen #define CFG_eu868 (siehe PIC) und die US Config auskommentieren.
Einrichtung des LoRa Transceivers / Programmcodes für die Verwendung mit TTN The Things Network
Nachdem alle Bibliotheken in der Arduino IDE vorhanden sind, wird das angepasste Programm (siehe unten / Programmcode) in die Arduino IDE geladen (Drag&Drop)

Im Programmcode die generierten Daten aus dem TTS einfach eintragen beziehungsweise austauschen, zum Beispiel:
| Device Address | 260BB744 |
| NetworkSessionKey | 0xDC, 0x5D, 0xA2, 0xD6, 0xFB, 0x78, 0x9A, 0x9E, 0xC6, 0x00, 0x9D, 0xBD, 0xA6, 0x5E, 0x6C, 0xE3 |
| ApplicationSessionKey | 0x6E, 0xB3, 0xC4, 0x6F, 0x38, 0x2C, 0xD8, 0xB7, 0x61, 0x89, 0xD1, 0x87, 0xDE, 0xB9, 0x79, 0xB6 |
Laden Sie sich den Programmcode zur Integration in TTS runter: LoRaWAN-Demo-Thomas-Krenn
Flashvorgang
- Verbinden Sie hierzu den fertig aufgebauten LoRa Transceiver via Micro USB/USB mit dem Rechner.
- Wählen Sie den passenden Port aus, unter Linux-basierten Betriebssystemen meist /dev/ttyUSB0.
- Dann wird die Software direkt mit Hilfe der Arduino IDE auf den ESP geflasht.
Inbetriebnahme
In den vorherigen Abschnitten wurde das Gerät vorbereitet und ist nun einsatzbereit. Die Inbetriebnahme zeigt dieser folgende Abschnitt.
-
Nach Start und Anzeige des Thomas-Krenn Logos
-
Liest in regelmäßigen Abständen von 60 Sekunden die Werte Temperatur, Luftfeuchte und Luftdruck von dem BME 280 Sensor aus. (Um Temperaturabweichungen vorzubeugen werden Messungen nur alle 60 Sek. neu durchgeführt.)
-
Danach wird das LoRa WAN Paket aufbereitet und via LoRaWAN versandt.
-
Daten werden gesendet.
-
Zwischen den Messungen wird das Board in den DeepSleep Modus versetzt. Das OLED bleibt ab diesem Zeitpunkt dauerhaft ausgeschaltet, um Energie zu sparen und um die Werte nicht zu verfälschen.
-
Soll ein Frame manuell mit Displaymeldung verschickt werden, kann das mit der Taste links unten / Display angeschoben werden.
Überprüfung der Daten im TTS / The Things Stack
Wenn alles geklappt hat, sollten nun die Daten im TTN bei Application / bei dem Device / Live Data eintreffen.
-
Hier sieht man in der Live View, dass die Daten im TTS aufschlagen. Die Payload Anzeige nur als hexadezimale Werte.
Payload passend umwandeln / dekodieren
Die Payload mit den Temp/Luftdruck/Feuchtigkeitswerten liegt in hexadezimaler Form vor. Deshalb ist ein simpler Decoder erforderlich, der das passend in Klartext umwandelt.
- Wählen Sie wie im folgenden Screenshot dargestellt, den Formatter Type aus.
-
Applications -> Payload -> Formatter -> Downlink. Wählen Sie Formatter Type: javascript.
- Gehen Sie zu Applications -> Payload Formatters -> Uplink -> Default uplink payload formatter.
- Tragen Sie bei Formatter type: javascript Formatter parameters folgenden Code ein:
function Decoder(bytes, port) {
return {
Testwerte: String.fromCharCode.apply(null, bytes)
};
// Simples übersetzen von Hex nach ASCII
}
- Dann mittels des Buttons SAVE CHANGES die Änderungen speichern.
-
Payload von HEX to ASCII dekodieren. Wenn der Decoder richtig arbeitet kann die Payload die im TTS übertragen wird, jetzt gleich in der Console passend dekodiert werden.
- Payload dekodiert
Jetzt wird die Payload passend dekodiert: '''30.91C | 34.91 % | 978.17 mB''' Temperatur: 30.91 C° Luftfeuchte: 34.91 % Luftdruck: 978.17 mBar
Diese Werte können anschließend über weitere Broker weiterverarbeitet werden.
3D Cases für Receiver/Transceiver Module
Sie können 3D Cases mit allen Gehäusebauteilen im STL Format zum Slicen beziehungsweise Ausdrucken bei Thomas-Krenn herunterladen: LoRa_Cases.zip
-
FreeCAD Modell der Gehäuseteile.
Troubleshooting FAQs
Der Artikel LoRaWAN Troubleshooting FAQ liefert eine Sammlung an Lösungen, falls Probleme bei der Installation und Konfiguration auftreten.
Testumgebung
Die Eckdaten der Testumgebung:
- Thomas-Krenn LES plus
- Ubuntu 20.04 LTS 64-bit
- Kernel: Linux ubuntu 5.4.0-40-generic
Einzelnachweise
- ↑ Software Arduino (arduino.cc)
|
Autor: Wilfried Seifert Wilfried Seifert, tätig in der Abteilung Systems Engineering bei Thomas-Krenn, ist in seinem Arbeitsbereich für die System-/Prototypenentwicklung sowie Softwaredeployment / Rollout unterschiedlicher Architekturen zuständig. LPIC 3 zertifiziert, beschäftigt sich u.a. mit Aufbau / Programmierung Embedded (x64/ARM) Systemen.
|



