LoRa-Funktechnik bei Arduino Hannover

LoRa Platine - Arduino Hannover

Mit der LoRa-Funktechnik können Sensoren über große Distanzen von 200 m bis 20 km im kostenlosen 868-MHz-Band kommunizieren. Die LoRa-Technologie zeichnet sich durch sehr geringen Energiebedarf und große Reichweite aus und ist für kleine Datenraten geeignet. Die Arduino Hannover LoRa-Gruppe verwendet verschiedene LoRa-Module für Arduino, mbed und Linux (PI), welche untereinander kommunizieren. Auf der Maker Faire Hannover 2017 werden wir ein eigenes Arduino 32-Bit LoRa-Board präsentieren, welche mit eigener Funkprotokollsoftware über Jahre hinweg batteriebetrieben kommunizieren kann. Die vorhandenen LoRa-Module namhafter Hersteller konnten uns nicht überzeugen, daher haben wir die Hard- und Software komplett eigenständig neu entwickelt und sind überzeugt, eine bahnbrechende LoRa-Funklösung mit verschiedenen Sensor-Anwendungen präsentieren zu können.

LoRa-Grundlagen

LoRa-verwendet eine spezielle Frequenzspreizung-Modulation (englisch spread spectrum). Grundsätzlich kann diese Modulation auf allen Frequenzen verwendet werden, gängig sind die kostenlosen Frequenzbereiche 433 MHz sowie 868 MHz in Europa. Wir nutzen 868 MHz, da das Band weniger belegt und besser reguliert ist und somit eine bessere Funkbasis bietet.

LoRa Konzentrator

Kommerzielle LoRa Funktechnik mit Konzentrator

Es gibt bereits ein standardisiertes LoRaWAN-Protokoll, das einen speziellen Konzentrator voraussetzt und die Daten an einen Internetserver weiterleitet. Der Konzentrator, welcher mehrere Kanäle gleichzeitig empfangen kann, bietet bei sehr großen Installationen Vorteile, allerdings unterstützt das LoRaWAN-Protokoll keine direkte Knoten-zu-Knoten-Kommunikation und ist für Hobbyisten zu teuer und kompliziert. Andere freie Softwarealternativen wie RadioHead bieten hingegen nur einen Bruchteil der möglichen Funktionen und sind nicht stromsparend.

Wir haben eine neue LoRa-Funkprotokollsoftware entwickelt, die sehr effizient schnell und sicher Nachrichten zwischen einfachen LoRa-Modulen verschicken kann. Diese Software ist gleichermaßen als Knoten (Node), oder als Station einsetzbar und unterstützt verschiedene LoRa-Chips (RFM95_SX1276, MURATA_SX1276, SX1276MB1MAS, SX1276MB1LAS).

Beispiellösungen, die von uns auf der Maker Faire Hannover 2017 gezeigt werden:

Temperatursensor (batteriebetrieben)
Ein Temperatursensor misst regelmäßig die Temperatur und schickt die Ergebnisse an eine Zentrale zur Weiterverarbeitung. Ein eigens entwickeltes LoRa Adapterboard welches universell an verschiedenen Systemen (Arduino, mbed und Raspberry PI ) verwendet werden kann. Das Board läuft natürlich mit der von uns entwickelten LoRa Funkprotokollsoftware.

LoRa Platine am STM Demoboard

Selbstentwickeltes LoRa Board am STM32L4 Demoboard

Feinstaubsensor (batteriebetrieben)
Ein Sensor misst regelmäßig die Feinstaubwerte und übermittelt die Daten per LoRa-Funktechnik an eine Station, welche diese an das Internetportal http://luftdaten.info weiterleitet.

Feinstaubsensor mit LoRa-Datenfunk

Feinstaubsensor mit LoRa-Datenfunk

Fernbedienung (batteriebetrieben)
Per Tasten werden Meldungen zu einer Station übertragen

LoRa - Knoten zu Knoten

LoRa mit direkter Knoten zu Knoten Kommunikation

Netzwerktrace iC880A Concentrator
Der Concentrator wird als Netzwerktracer eingesetzt, um den kompletten LoRa Datenverkehr auf allen Kanälen mit unterschiedlichen Spreadingfaktoren zu protokollieren.

STM Lora Board (batteriebetrieben)
Es werden regelmäßig Temperaturdaten übertragen. Das Ganze passiert hier mit einer STM32L0 Entwicklerboard welche einen Murata Lora Chip mit STM MCU verwendet.

STM LoRa Board

LoRa-Board mit Software
Eigenentwicklung der LoRa-Gruppe des Arduino Treffpunkts Hannover

LoRa Board Prototypen der Arduino Hannover Gruppe

Hardware:

Unser Board enthält alles was das MAKER-Herz erfreut anwenderfreundlich und Arduino-kompatibel auf einer Platine = kein Frust durch lose/falsche Steckverbindungen.

  • Arduino-kompatibles Genuino Zero-Board
  • Atmel D21 MCU 32-bit ARM Cortex-M0+
  • 256 kB Flash, 32 kB RAM=> ausreichend Speicher
    für Anwendungen und LoRa Protokoll.
  • Integtrierte RTC => für sleep Funktionen und zur Datenerfassung
  • 5 Taster => keine externe Verdrahtung für einfache Eingaben nötig
  • Arduino Zero kompatible Steckerleiste
  • USB-Anschluss zur Stromversorgung & Programmierung
  • Anschlussleiste für optionalen, ansteckbaren TFT-Bildschirm, Strom abschaltbar
  • Batterieoptimiert:
    • 1,7-3,6 V Betriebsspannung
    • Batteriefach (2 AA-Batterien/-Akkus)
    • Spannungswandler erzeugt 3,3 oder 5 V aus 2x AA-Batterien
    • Stromverbrauch im Sleep Modus (ca. 8 µA)
  • LoRa-Chip 168 dB link budget (Semtech SX1276 basierend)
    • Angepasste Antenne:
    • 8,2 cm externer Draht (Groundplane-Gegenpol ist auf der Platine vorhanden)
    • u.FL Kupplung (ist bestückt, Brücke muss gesetzt werden.)
    • SMA Steckverbinder optional (reservierter Platz auf der Platine)

Entwicklungsumgebungen:

  • Standard Arduino-Entwicklungsumgebung für Mac, Windows und Linux
  • Atmel Studio 7 IDE unter Windows
  • ARM mbed (geplant)

Funkprotokollsoftware (RadioShuttle):

  • Gesicherte Nachrichtenübertragung (max. 232 Bytes Nutzdaten),
    der Empfang wird bestätigt, verlorene Daten werden automatisch wiederholt.
  • Ungesicherte Nachrichtenübertragung (benötigt weniger Zeit/Strom),
    für Anwendungen, bei denen regelmäßig Nachrichten verschickt werden
    und eine verlorene Nachricht kein Problem darstellt (z. B: Temperaturdaten).
  • Paralleles Versenden von unterschiedlichen Nachrichten an identische
    oder verschiedene Stationen (läuft alles stromsparend im Hintergrund).
  • Eindeutige 32-bit Device-ID (Gerätenummer) pro LoRa-Teilnehmer,
    eindeutige 16-bit AppID (Programmnummer zur Kommunikation).

Datensicherheit:

  • Anmeldung von Knoten an die Station erforderlich (auch abschaltbar).
    Anmeldung mit verschlüsseltem Kennwort (SHA-256 mit Zufallszahl verschlüsselt).
  • Verschlüsselte Nachrichtenübertragung (einstellbar pro Nachricht).
    AES 128-bit Verschlüsselung, AES Nachrichten benötigen min.
    16 Bytes Daten, ohne AES können auch kleinere Nachrichten verschickt werden.
    Es werden keine Kennwörter übertragen. Gesichert gegen Hacken durch Protokollieren bzw. Wiederholen von verschlüsselten AES-Nachrichten oder Anmeldungen.
  • Air Traffic Control: Die Knoten senden nur, wenn auf dem Kanal kein LoRa-Signal aktiv ist. Die Stationen erstellen einen automatischen Netzplan, welche Knoten und Stationen wann kommunizieren dürfen. (ist geplant)
  • Optimiertes Protokoll
    Nachrichtenzustellung innerhalb von 110 ms (SF7, 125 kHz, bei freiem Kanal).
    Nachrichten benötigen nur 2 x 12 Bytes (Protokoll-Overhead).
    Default LoRa-Spreadingfaktor SF7 (SF7-SF12 einstellbar).
    Default LoRa-Bandbreite 125 kHz (125/250/500 kHz einstellbar).
    Kleinere Bandbreiten bieten eine größere Reichweite.
  • Automatische Anpassung der Sendeleistung. Das spart erheblich Strom und das Funknetz ist für Nachbarstationen weniger belegt.

Betriebsmodus:

  • Betrieb als Station, feste Stromversorgung empfohlen
    (12 mA im Empfangsmodus, Senden (20 … 100 mA)
  • Betrieb als Node Online, feste Stromversorgung empfohlen
    Der Knoten ist permanent empfangsfähig
    Ansonsten die Funktionen wie „Node Offline“
    (12 mA im Empfangsmodus, Senden (20 … 100 mA).
  • Betrieb als Funksensor (Node Offline-Checking)
    Der Knoten meldet sich regelmäßig, um ggf. Daten zu empfangen
    Der Empfang von Nachrichten kann bis zu 30 Sekunden dauern
    Ansonsten die Funktionen wie „Node Offline“
    (1 µA im Ruhemodus, Batteriebetrieb über Jahre).
  • Betrieb als Funksensor (Node Offline).
    Der Knoten ist nur aktiv, wenn Ereignisse zu melden sind.
    (1 µA im Ruhemodus, Batteriebetrieb über Jahre).

Resourcen für die RadioShuttle Library:

  • Speicherbedarf (Stand 07/2017)
    100 kB Flash for RadioShuttle Library mit MD5 & AES.
    5 kB RAM für Node-Offline-/Checking-/Online-Betrieb.
    10 kB RAM für Station-Basic-Betrieb (RAM ist abhängig vom Anzahl der Knoten).
    1 MB RAM für Station-Server-Betrieb (Raspberry PI, 10.000 LoRa-Knoten).
  • Genaue Timer mit Auflösung von of 0,5 ms und Interrupt.
  • Unterstützte LoRa- und MCU-Boards
    LoRa: RFM95_SX1276, MURATA_SX1276, SX1276MB1MAS, SX1276MB1LAS
    STM Discovery kit for LoRaWAN (STMicroelectronics B-L072Z-LRWAN1)
    Arduino Zero, Arduino M0 (Atmel ATSAMD21 MCU 32-bit )
    mbed STM32L0, STM32L4
    Linux Raspberry PI/Orange PI (ist geplant)

Allgemeines zur LoRa Reichweiten:

Es gibt viele Faktoren welche die Reichweite beeinflussen: Antenne, Wände, Stahlbetondecken, Funk-Reflexionen, andere Sender auf identischen Frequenzen und Vieles mehr. Daher sprechen wir in diesem Dokument von 200 m bis 20 km Reichweite, welche im Vergleich zu anderen Funktechniken mit LoRa auf jeden Fall um ein Vielfaches besser ist.

868 MHz Standardmodulationen (ohne LoRa) welche die in Deutschland erlaubten 14 dBm Sendeleistung verwenden, kommen im Freien ca. 50 Meter weit und in Gebäuden gerade mal durch eine Wand. Praktisch gibt es mit der 868 MHz Standardmodulation schon innerhalb einer Wohnung Empfangsprobleme.

Mit der 868 MHz LoRa-Modulation – ebenfalls 14 dBm Sendeleistung – haben wir Tests durchgeführt, in denen der Empfang sogar über 9 Stockwerke in einem großen Gebäudekomplex funktionierte. Auch bei weiteren Tests in einem großen Konferenzraum mit 5000 Smartphones und vielen weiteren Funk-Übertragungstechniken lief die LoRa-Funktechnik einwandfrei. Ein wesentlicher Vorteil von LoRa ist dabei, dass die LoRa-Modulation auch auf standardbelegten 868 MHz Funkkanälen überlagernd funktioniert.

LoRa läuft auch über 9 Stockwerke übertragunssicher

Die Kommunikation zwischen zwei benachbarte Orte mit mehreren Kilometern Distanz und vielen Gebäuden dazwischen stellte für die LoRa-Datenkommunikation keinerlei Problem dar. Bei komplett freier Sicht sind mit LoRa sogar Reichweiten von über 20 km möglich.

Auch wenn man durch Richtantennen die zulässige Sendeleistung von 14 dBm nicht überschreiten darf, erzielt man mit ihnen einen guten Empfangsgewinn.

Viele weitere Details zur LoRa Funktechnik kann man Helmuts Vortrag entnehmen, den er im Mai 2017 bei Arduino Hannover gehalten hat. Ihr könnt den Vortrag selbst auf YouTube anschauen und die Vortragsunterlagen als PDF herunter laden.

*Info: In diesem Beitrag verweisen orangefarbende Links auf Affiliates.