LoRaWAN

LoRa Was??

LoRa funkt im unlizensierten Frequenzband (in Europa 868Mhz) und kann so von jedem ohne Kosten oder Anmeldung benutzt werden. LoRa basiert auf einem Spread-Spektrum Prinzip, das sehr breitbandig bei extrem geringer Sendeleistung funkt. Daher können auch nur sehr geringe Datenmengen verschickt werden. Am besten eignet es sich für Sensorik. Z.B.:

  • Wetterstation
  • Umweltsensoren
  • Parkplatzmanagement
  • Detektion für unser Haselmausprojekt
  • GPS Tracking (z.B. Wetterballon)
  • Alles, was dezentral vernetzt werden soll, ohne, dass es etwas kostet

Auch, wenn das LoRa Protokoll selber proprietär ist (Basiert alles auf einem Chip von Semtech), so ist die ganze Infrastruktur offen für Erweiterungen und sehr gut dokumentiert. Es gibt europaweit eine sehr aktive Community.

Erste Schritte mit einem Sensorknoten

Ich habe mich für das Draguino LoRaWAN Shield entschieden.
Es verwendet ein HopeRF RFM9x Modul mit dem Semtech SX1272 Chip, das man auch einzeln kaufen kann. So können wir später – ähnlich c-trone – einen C-Hack-Sensorknoten bauen.

Die Arduino Software zum HopeRF Modul gibt es hier:
https://github.com/matthijskooijman/arduino-lmic

Die Pinbelegung des Shields muss noch im lmic-Code angepasst werden:

const lmic_pinmap lmic_pins = {
.nss = 10,
.rxtx = LMIC_UNUSED_PIN,
.rst = 9,
.dio = {2, 6, 7},
};

Hier eine ganz simple Beispiel-Sketch, die einfach nur „Hello World“ sendet.
minimal_ttn-template.ino

The Things Network (TTN)

Nun hat man einen Knoten, der Dummy-Daten sendet und was nun?
Jetzt kommt TheThingsNetwork ins Spiel. Auf der ganzen Welt gibt es jede Menge Gateways, die von privaten Betreibern ins TheThingsNetwork eingebunden sind. Dieses macht dann die Daten jedes einzelnen Knotens verfügbar, egal, mit welchen Gateway er gerade über Funk verbunden ist.

Bei uns in der Nähe gibt es jetzt drei Gateways (Stand März 2019).

Das Stammheimer Gateway soll dann final in den c-turm wandern.

Ich will hier nicht das ganze Anmeldeprozedere für TTN nochmal aufschreiben, da es wirklich gut dokumentiert ist. Hier ein paar Links:
TTN Device Registration Doku
Youtube Tutorial für Draguino-LoRa-Shield

Bis es funktionierte, habe ich etwas gebraucht, da ich nicht wusste, dass bei dem ABP-Anmeldeverfahren dieses Flag nicht gesezt sein darf:

Alles Andere ist so gut beschrieben, dass ich hie keine Details erklären muss.

Weiterverarbeitung der Daten

Wenn du einen Account bei TTN angelegt hast, dann kannst du in der Console unter deinem angemeldeten Device die Daten sehen, die das Netzwerk von deinem Knoten empfängt. Allerdings ist das ein recht langweiliger String von Hex-Zahlen.
Um den weiter zu verarbeiten, kannst du ihn vom TTN speichern lassen und per HTTP auf die Daten zugreifen. Die bleiben dort 7 Tage lang gespeichert.
Wie das geht findest du unter Integrations in deinem TTN Account.

TTN kann die Daten aber auch an einen Server schicken, auf dem z.B. NodeRed läuft. So etwas werden wir dann vielleicht im C-Hack machen.

Oder man benutzt einen öffentlichen Server wie z.B. Cayenne
Hier kann man sich kostenlos einen Account verschaffen und dann Daten hübsch anzeigen, auch auf dem Handy:

Hierzu muss der Knoten im CayennLPP-Format senden.
Das ist keine Wissenschaft und wird von einer Arduino Library erledigt, die es hier gibt:
github

So sieht dann das Verschicken von ein paar Messwerten in der Arduino-Sketch aus:

lpp.reset();
lpp.addTemperature(1, 22.5);
lpp.addBarometricPressure(2, 900.21);
lpp.addGPS(3, 52.37365, 4.88650, 2);
if (ev == EV_TXCOMPLETE) os_setTimedCallback(&sendjob, os_getTime()+sec2osticks(TX_INTERVAL), do_send);

LoRaWAN Radtour um Stammheim

Um die Reichweite auszuprobieren, haben wir eine kleine Radtour gemacht. Auch wenn LoRa theoretisch eine Reichweite von 15km hat und auch durch Mauern dringt, stellen Hügel eine unüberwindbare Hürde dar. Wald und Gestrüpp durchdringt Lora aber problemlos.

Die Sterne zeichen an, von wo aus wir die Dumy-Daten noch problemlos ins TheThingsNetwork senden konnten.

Stand März 2021

TTN Gateways

  • Wir haben jetzt unser Gateway im C-Turm am Laufen.
  • In Calw betreiben wir eine Gateway und eins wird von der Stadt betrieben
  • Stammheim ist abgedeckt mit einem weiteren Gateway

Wir haben auf ein paar Radtouren und Spaziergängen kartografiert, wo man überall LoRa-Abdeckung hat. Die Linien zeigen die Touren, die blauen Waypoints wo wir überall Empfang hatten. Da der Node nur alle 60s gesendet hat, sind das natürlich nur Anhaltspunkte. Es ist auch zwischen zwei nah benachbarten Punkten mit Empfang zu rechnen.

Unser CaLoRa-Node

Der Node ist mittlerweile fertig und funktioniert bestens. Wir haben 50 Rev. 1 Platinen fertigen lassen. Es gibt ein paar Kleinigkeiten, die wir bei einer Rev. 2 noch verbessern werden.
Das Hauptdesignkriterium war der möglichst lange Batteriebetrieb. Der Node wird im Sleep-Mode von der Batterie getrennt. Im Sleep-Mode läuft nur eine Real-Time-Clock weiter, die nach Ablauf der programmierten Periode den Node wieder weckt. So kann er mindestens ein Jahr aus zwei AA-Batterien versorgt werden, wenn er nur alle 30min aufgeweckt wird.

Alle HW und SW Sources sind natürlich open Source:
https://github.com/c-hack/CaLoRa-Node