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:
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).
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
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)
Ü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.
Einrichtung der Library BME280 Sensor
Suchen Sie nach folgender aktueller Library: Adafruit bme 280
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):
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
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.
Ü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.
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.
- 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 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
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 zuständig. LPIC 3 zertifiziert, beschäftigt sich u.a. mit Aufbau / Programmierung Embedded Systemen.
|