LoRaWAN Transceiver in The Things Stack (TTS) einbinden

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

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.

LoRaWan bei Thomas-Krenn

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)

  1. Rufen Sie den Cluster Picker auf: The Things Network Cluster Picker
  2. Wählen Sie auf der Weltkarte Europe 1 aus, oder folgen Sie diesem Link: The Things Network Account
  3. 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.

ESP32 Ansicht von oben (mit verschraubtem Display)
Technische Daten
Komponenten Eigenschaften
ESP32 Controller
WiFi
  • 802.11 b/g/n
  • 802.11n bis 150 Mbps
Bluetooth
  • V4.2 BR/EDR
  • Bluetooth Low Energy
LoRa Chip
Anschlüsse
  • Uart x3, SPI x2, I2C x2, I2S x1
  • 29 general GPIO
  • Micro USB Anschluss (USBtoUart Bridge CP1202)
  • LoRa Antennen Interface IPEX U.FL
  • Anschluß für Lithium Batterien 3.7V (mit Kurzschlussüberwachung)
Weitere Eigenschaften
Abmessungen 50.2 x 25.5 x 9.74 mm
Stromverbrauch gemessen
  • LoRa 10db Sendeleistung: 51 mA
  • LoRa 20db Sendeleistung: 132 mA
  • Wifi Scanning: 116 mA
  • Wifi Access Point Mode: 136 mA
ESP32 Ansicht von oben (mit abgeklapptem Display)
Board Layout
Vorderseite
  • MicroUSB Connector
  • Semtech Chip SX1276 / LoRa Modul
  • Antennenanschluß IPEX / U.FL
  • OLED Display Monochrome 0.96 Zoll/ 128x64 dotMatrix (Verschraubung gelöst, umgeklappt)
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):

LoRa Transceiver: BME 280 angeschlossen an ESP32 Board

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.
Case mit bestückten Komponenten (LoRa Board und BME 280)

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 LibraryManage 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)

Upload via Menü oder mit Tastenkombination STRG-U. Der Sketch wird nun direkt in den Flash Speicher des ESP32 geschrieben.

Im Programmcode die generierten Daten aus dem TTS einfach eintragen beziehungsweise austauschen, zum Beispiel:

Beispielwerte
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

  1. Software Arduino (arduino.cc)


Foto Wilfried Seifert.jpg

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.


Das könnte Sie auch interessieren

Apache Bandbreiten Limitierung unter Debian
ISO Image von CD oder DVD unter Linux erstellen
Linux Analyse der Ausführungszeit mit time