Erste Versuche mit LoRa und TTN

24.12.2020

Spätestens seit einem der Vorträge auf dem 33C3 interessiere ich mich für Kommunikation in und mittels LoRa. Eng damit in Zusammenhang steht mein Interesse für The Things Network (TTN). Nunmehr habe ich erste praktische Versuche gestartet.

Ich habe bereits vor einiger Zeit festgestellt, dass ich nicht einfach so mit eigenen Sensoren am TTN teilnehmen kann - rund um meinen gewöhnlichen Aufenthaltsort ist auf der Abdeckungskarte des TTN ein großer weißer Fleck. Das bedeutet, dass ich ein eigenes Gateway aufstellen muss, um am TTN teilzunehmen. Diese Teile sind aber teuer - und aus meiner Sicht so teuer, das ich davor zurückschrecke, eines für einen kleinen Test anzuschaffen.

Nun gibt es aber im Internet Berichte und Anleitungen zur Erstellung eines simplen Packet-Forwarders, der im Prinzip aus einem Breakout-Board eines RFM95 und ein paar Drähten besteht.

In der vergangenen Woche habe ich Zeit gehabt, mich hinzusetzen und das einmal auszuprobieren. Bis auf einen kleinen Schluckauf bei der Registrierung des Gateways (oder treffender: Legacy Packet Forwarders) lief alles genau wie in den Aleitungen beschrieben: Ich konnte das Gateway in Betrieb nehmen und es hat sich mit dem TTN verbunden.

An dieser Stelle sei eine kleine Abschweifung erlaubt: Das, was ich da gebaut hatte, trägt "legacy" aus guten Gründen im Namen: Zunächst erst einmal wird davon nur ein Kanal von insgesamt 8 abgedeckt - das bedeutet, dass Geräte, die auf den 7 anderen senden mit meinem Forwarder nichts anfangen können. Beispielcode für ESP8826 und andere umgehen ein solches Problem, indem sie für jedes Paket ein anderes Band verwenden. Das würde aber im Bereich meines Forwarders bedeuten, dass nur jedes 8. Paket durchkommt. Ich habe das getestet und konnte genau dieses Resultat bestätigen.

Eine weitere wichtige Einschränkung ist die Tatsache, dass ein solcher Packet Forwarder eine Einbahnstraße ist: Ich kann darüber keine Informationen an die Node funken - es ist lediglich möglich, Signale der Node zu empfangen und an TTN weiterzuleiten. Es gibt natürlich viele Anwendungsfälle - und mein angestrebter ist einer davon - wo es nicht nötig ist, Daten an die Node zu senden und in solchen Fällen bedeutet dieser Fakt dann auch keine Einschränkung.

Den Packet Forwarder habe ich mit einem Raspberry Pi 3B realisiert und anschließend mit einem Wemos D1 Mini eine SensorNode aufgebaut. Die Software bestand aus Beispielcode, der der Bibliothek beilag und den ich geringfügig angepasst habe. Damit konnte ich auch die oben ausgeführte Tatsache validieren, dass im TTN nur jedes achte Paket ankam.

Wichtig dabei ist noch zu wissen, dass nach Einschalten die Pakete im FrameCounter wieder bei 0 beginnen zu zählen. TTN hat eine Sicherheitsmaßnahme, die verhindert, dass Pakete weitergeleitet werden, deren FrameCounter kleiner oder gleich ist als der des zuletzt weitergeleiteten Pakets. Das führte dazu, dass mir schien, dass nur der erste Test - dessen Pakete ich sehen konnte - erfolgreich war und alle weiteren nicht. Dieses Feature lässt sich glücklicherweise ausschalten, denn wenn man in meinem Beispiel den Deep Sleep des ESP nutzt beginnt das Programm wieder von vorn und zählt natürlich auch die PacketCounter wieder von 0.

Ich habe noch keine Möglichkeit gefunden, den Startwert dieses Zählers zu setzen - ginge das, könnte ich mir vor dem einschlafen den aktuellen Wert im Flash oder EEPROM merken und nach dem Aufwachen von dort holen und dann damit weiterarbeiten.

Ich habe mir die Nachrichten natürlich nicht nur in der Web-Konsole von TTN angesehen, sondern sie auch per MQTT empfangen - etwas, das ganz wunderbar und zuverlässig funktionierte.

Die nächsten Schritte sind jetzt die Bestimmung der Reichweite meines Packet Forwarders und ein Test (wahrscheinlich kombiniert mit einem GPS-Empfänger) des Übergangs zwischen mehreren Gateways.

Ich habe hier die Links zusammengestellt, die mir letztlich halfen, zu einem funktionierenden System zu kommen:

Artikel, die hierher verlinken

The Things (Network) Stack v3

19.09.2021

Ich berichtete vor einiger Zeit über meine ersten Versuche der Beschäftigung mit LoRaWAN und The Things Netzwork.

Alle Artikel rss Wochenübersicht Monatsübersicht Github Repositories Gitlab Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Mandelbrot-Sets mittels Shadern berechnen

    17.05.2019

    Nachdem ich in den letzten verregneten Tagen auf Youtube in den Videos von Numberphile versunken bin, hat mich eines davon angestachelt, mich selbst mit dem Mandelbrotset zu beschäftigen. Als ich dann noch Code fand, der behauptete, das auf einer Graphikkarte mittels Shadern berechnen zu können, war es um mich geschehen...

    Weiterlesen...

Neueste Artikel

  • Erste Vor-Version eines Gis-Plugin für die sQLshell

    Wie bereits in einem früheren Artikel erwähnt plane ich, demnächst ein Plugin für die sQLshell anzubieten, das eine Visualisierung von Daten mit räumlichem Bezug im Stil eines Geoinformationssystems erlaubt.

    Weiterlesen...
  • bad-certificates Version 2.1.0

    Das bereits vorgestellte Projekt zur automatisierten Erzeugung von Zertifikaten mit allen möglichen Fehlern hat eine Erweiterung erfahren und verfügt über ein Partnerprojekt - beide sind nunmehr in der Version 2.1.0 freigegeben

    Weiterlesen...
  • SQLite als Geodatenbank

    Wie bereits in einem früheren Artikel beschrieben treibe ich derzeit Anstrengungen voran, die sQLshell attraktiver für Nutzer zu machen, die mit Geodatenbanken arbeiten.

    Weiterlesen...

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muß damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen GitHub-Repositories findet man hier - meine öffentlichen GitLab-Repositories finden sich dagegen hier.