Erste Versuche mit LoRa (ohne WAN) und Node 2 Node Verbindungen

Im April hatte ich mich auf eins von der Fa. Thomas Krenn ausgelobten Developer Kits für IoT-Entwicklungen beworben. Diese Kits setzen sich zusammen aus jeweils zwei Boards mit ESP32-Mikrocontroller, LoRa-Modul, OLED-Display und WiFi-, Bluetooth- und Micro-USB-Interface sowie die passenden USB-Anschlusskabel. Weiterhin ist auch ein BME280 Sensor zum Messen von Temperatur, Luftdruck und Luftfeuchtigkeit dabei. Bei den 2 Microcontrollern handelt es sich um die bekannten Heltec Lora32 V2 Controller.

Wie sich herausstellen sollte, hatte ich diesmal Glück. Anfang Mai klingelte der Briefträger und überreichte mir eins dieser Kits. Vielen Dank dafür an dieser Stelle an die Firma Thomas Krenn. Ich habe mich sehr darüber gefreut.

TK_Box.jpg

Praktisch, dass Thomas Krenn auf ihrer Website auch eine Schritt-für-Schritt-Anleitung zur Installation und Programmierung mittels Arduino-IDE veröffentlicht hat. Selbst fertig vorbereitete Sketche sind dort verfügbar, jeweils einer für Transceiver und einer für den Receiver. Somit war es klar, dass ich gleich mal die Arduino IDE geladen und die Sketche auf die Heltec V2 Controller gespielt habe.

Beide Sketche funktionieren auf Anhieb. Der Transceiver liest den BME280 Sensor aus, zeigt die gemessenen Werte auf dem Display an und sendet sie in einem String per LoRa an den Receiver. Danach fällt der Transceiver in einen zweiminütigen Tiefschlaf.

Auf dem Receiver wird der String ausgepackt und auf dem Display angezeigt.

Bis zu diesem Punkt brauchte ich nicht eine Zeile Code schreiben. Es war alles zum Test vorbereitet.

Schnell kam bei mir aber der Wunsch auf, noch weitere Transceiver Microcontroller im neuen Haus zu verteilen, um einen Überblick über die Restfeuchte aus der Bauphase des Hauses zu bekommen. Natürlich sollten die Messwerte der einzelnen im Haus verteilten Sensoren auch in die bestehende NodeRED, Influx-DB und Grafana Umgebung aufgenommen werden.

Gesagt, getan.

Dafür schaute ich mir die Sketche etwas genauer an und merkte, dass es nur ein paar Erweiterungen bedurfte, damit der Receiver auch mehr als einen Transceiver erkennen und verarbeiten konnte.

Auf der sendenen Transceiver-Seite musste nur eine kleine Ergänzung (String „Wohnzimmer“) im LoRa Message-String aufgenommen werden, damit der empfangene Transceiver erkennen kann, wer die Daten geschickt hat.

Serial.print("Sending Complete Data: ");
  LoRaMessage = String(temperature) + "/" + String(humidity) + "/" + String(pressure) + "/" + String("Wohnzimmer");
  Serial.println(LoRaMessage);

Auf der empfangenen Receiver-Seite waren die Änderungen/Ergänzungen am Code schon etwas umfangreicher.

Dort musste das Script zuerst einmal um WiFI- und MQTT Fähigkeiten erweitert werden. Dann war auch noch eine Routine für das Erkennen des sendenden Nodes und eine Routine für die MQTT Client.Publish Befehle zu schreiben.


  // Hier wird der passende Raum-Bezeichner aus der Variable "feld4" (Location) ermittelt und dann der ganze MQTT-Aufruf zusammengesetzt

  String temp_PreFix1 = "sensors/BME280/Temperatur/";
  String ort1 = feld4;
  String myString1 = temp_PreFix1 + ort1;
  const char * msg1 = myString1.c_str ();

  String temp_PreFix2 = "sensors/BME280/Luftfeuchte/";
  String ort2 = feld4;
  String myString2 = temp_PreFix2 + ort2;
  const char * msg2 = myString2.c_str ();

  String temp_PreFix3 = "sensors/BME280/MBar/";
  String ort3 = feld4;
  String myString3 = temp_PreFix3 + ort3;
  const char * msg3 = myString3.c_str ();

  String temp_PreFix4 = "sensors/BME280/Ort/";
  String ort4 = feld4;
  String myString4 = temp_PreFix4 + ort4;
  const char * msg4 = myString4.c_str ();

  String temp_PreFix5 = "sensors/BME280/Quality/";
  String ort5 = feld4;
  String myString5 = temp_PreFix5 + ort5;
  const char * msg5 = myString5.c_str ();


  connectToMQTT();

  client.publish (msg1, String(feld1).c_str());
  client.publish (msg2, String(feld2).c_str());
  client.publish (msg3, String(feld3).c_str());
  client.publish (msg4, String(feld4).c_str());
  client.publish (msg5, String(rxquality).c_str());
  
}

Mit diesen Änderungen ist der Receiver Controller in der Lage, den jeweils sendenden Transceiver eindeutig zu erkennen und die übermittelt bekommenen Messwerte in die geweils zuständigen MQTT Topics zu versenden.

Diese hier beschriebene LoRa Umgebung läuft hier bei mir jetzt seit mehreren Tagen quasi fehlerfrei. Ab und an resettet der Receiver kurz (um diesen Fehler habe ich mich noch nicht gekümmert), ist dann aber nach ganz kurzer Zeit wieder zum Empfang von gesendeten LoRa Paketen bereit.

Wettermonster eine Anleitung für die eigene Wetterstation

Einfach, Günstig, Gut…

…das ist die Idee hinter Wettermonster. Jeder Interessierte soll die Möglichkeit bekommen, selbst eine Wetterstation zu betreiben.

So wirbt Wettermonster auf ihrer Seite und hält das Versprechen auch ein.

Jan Dopheide hat im Rahmen einer Jugend-forscht-AG an seiner Schule und des Wettbewerbs Schüler experimentieren eine Wetterstation gebaut und im Nachgang dann die Webseite aufgebaut in der sehr gut erklärt wird wie man zu einer eigenen Wetterstation kommt.

Wir haben uns im Verein Nucleon e.V. nun zum Ziel gesetzt diese Wetterstation zu einer autonom arbeitenden LoRaWAN Wetterstation auszubauen. Das interessante an der Seite ist das neben dem Tutorial auch eine Karte mit den Stationen aufgebaut wurde an die man dann seine Daten senden kann. Da der verwendete MCU seine Daten aber mittels WLAN an die Seite sendet haben wir eine kleine Schnittstelle bauen müssen um die Daten unserer Stationen über LoRaWAN, dem The Things Network und Node-RED dann auch zu Wettermonster senden können.

Dieses werden wir hier nun näher beschreiben.

„Wettermonster eine Anleitung für die eigene Wetterstation“ weiterlesen

Wir haben nun ein Wiki

So der letzte Teil der Infrastruktur für die IoT Usergruppe ist erstellt. Nun gibt es auch ein Wiki in dem jeder seinen Beitrag leisten sollte um eine gute Dokumentation zu erhalten.

Das Wiki ist in Kategorien aufgeteilt so das man über das TTN, Gateways und Nodes sehr intuitiv die richtigen Dokumente finden kann. Ziel ist es auch eine Plattform zur Projektdokumentation zu haben so das man sein Wissen der Öffentlichkeit zu Verfügung stellen kann.

Wer Sensoren nutzt informiert sich ja auch über deren Ansteuerung und Funktion, nutzt bitte das Wiki um eure Erfahrungen und eure gefundenen Informationen der Nachwelt zu erhalten.

Ein sehr wichtiger Teil ist das Schulungsmaterial, dort sollen gut dokumentierte Schritt für Schritt Anleitungen entstehen um dann mit diesem Material auch Schulklassen und Jugendgruppen an das Thema IoT heran zu führen.

Bitte beschreibt bei Euren Projekten auch immer den gesellschaftlichen Nutzen, erklärt warum es eben keine Überwachung ist und warum es euch wichtig ist gerade dieses Projekt durchzuführen.

Habt Spaß und lernt voneinander, teil euer Wissen und überlasst das IoT Thema nicht einigen wenigen globalen Unternehmen. IoT und deren Netzwerke gehören in Bürgerhand so das jeder diese Technik auch nutzen kann.

Ein LoRaWAN Node für unter 10€ bauen

  Aufgabe ist es einen Node für LoRaWAN für unter 10€ zu erschaffen der mit dem TTN spricht.

Das ist nicht einmal eine so schwere Aufgabe.

Als Basis nutzen wir einen Arduino Pro Mini 328 3,3V den es schon für ca 1,80 € in China gibt. Das Funkmodul wird ein RFM95W das mit ca. 6,00 € zu buche schlägt. Dann noch eine Antenne die man für ca. 2 € als 10er Gebinde bestellen kann. Als Stromversorgung haben wir ein eine Batteriebox mit Schalter verwendet um 2 AAA Batterien aufzunehmen. Diese sind für ca. 1 € zu bekommen. Bei der Energieversorgung gibt es bestimmt noch bessere Lösungen, ich würde hier bei weiteren Nodes auf Lithium Akkus mit 3,6V setzen. Damit sind wir bei ca. 9 € und es bleibt noch Geld für ein Gehäuse übrig.

Materialliste

1 x    Arduino Pro Mini 328 3,3 V
1  x   RFM95W
1 x    Helix Antenne +2,15 dBm
1 x    Batteriebox mit Schalter

1 x    FTDI interface (zum laden des Programmcodes in den Arduino)

„Ein LoRaWAN Node für unter 10€ bauen“ weiterlesen