Nachdem ich vor einiger Zeit schon einmal mit LoRa und Bodenfeuchtesensoren die ersten Versuche durchgeführt habe, steht für die diesjährige Gartensaison ein größeres Projekt an.

Über den Winter habe ich mich intensiv mit LoRaWAN beschäftigt und auch die einschlägigen Anbieter abgeklappert. Bei Dragino bin ich fündig geworden und zwar mit einem sehr günstigen LoRa-Modul, das eine RS-485 Schnittstelle hat. Der Vorteil ist, dass man ganz einfach einen SMT100 Bodenfeuchtesensor mit Modbus (RS-485) anschließen kann. Das LoRa-Modul übernimmt dabei auch die Stromversorgung des SMT100. Die Litihium Batterie wird von Dragino sogar schon mitgeliefert. Es ist bis auf ein paar kleine Softwarekonfigurationsarbeiten fast schon ein Plug-and-Play System. Was braucht man für den Start:

  1. Dragino RS-485BL LoRaWAN RS-485/UART converter
  2. SMT100 RS-485 Bodenfeuchtesensor von TRUEBNER (Modbus Version)
  3. USB nach TTL Kabel (3.3V) zum Konfigurieren der Software

und natürlich ein LoRaWAN Gateway in der Nähe. Bei mir ist es ein TheThingsNetwork Gateway, andere LoRaWAN Systeme sollten aber auch funktionieren. Das LoRa-Modul muss beim LoRaWAN Betreiber angemeldet werden. Für das TheThingsNetwork stellt Dragino im Handbuch zum LoRa-Modul die entsprechenden Anweisungen bereit. Das TheThingsnetwork Gateway bei mir in der Nähe nutzt noch die Version 2 von TheThingsnetwork. Im Laufe des Jahres 2021 soll auf Version 3 umgestellt werden. Dann werden sich die Einstellungen etwas ändern. Jetzt bleiben wir aber erst einmal bei Version 2.

Im Karton des LoRa-Moduls befindet sich ein Aufkleber mit allen möglichen Keys, EUIs, Adressen und der Seriennummer.

  • DEV ADDR
  • DEV EUI
  • APP EUI
  • APP KEY
  • APPSKEY
  • NETSKEY

Nach dem Einloggen in die TheThingsNetwork Console wird eine neue Application angelegt. Die APP EUI vom Aufkleber fügt man über addEUI hinzu. Dann wird ein neues Device erstellt, Ganz wichtig ist jetzt, dass man die DEV EUI, die APP EUI und den APP KEY vom Aufkleber einträgt. Voilá, das war es erst einmal mit TheThingsNetwork und wir gehen zum LoRa-Modul. (Hinweis: Mit anderen Keys und EUIs kann man sicher auch arbeiten, hat dann aber größeren Konfigurationsaufwand auf der Modulseite).

Im nächsten Schritt verbindet man den SMT100 RS-485 Bodenfeuchtesensir mit dem LoRa-Modul wie folgt (linke grüne Leiste zum Schrauben, Achtung: genaue Belegung im Dragino Handbuch nachschauen!):

  • Brauner Draht an +5 V
  • Weißer Draht an GND
  • Grüner Draht an RS-485 A
  • Gelber Draht an RS-485 B

Dann schließt man zum Konfigurieren das USB nach TTL Kabel an (rechte Buchse für Stiftleisten, Achtung: genaue Belegung im Dragino Handbuch nachschauen!):

  • GND
  • UART_TXD
  • UART_RXD

Bitte darauf achten, dass das USB TTL Kabel 3.3 V Pegel hat (TX vom LoRa-Modul auf RX vom Kabel, RX vom LoRa-Modul auf TX vom Kabel, ggf. genau nachschauen, wie die Kabel belegt und die Anschlüsse definiert sind). Ich habe ein günstiges Kabel von Ebay verwendet (ca. 4 Euro) und darauf geachtet, dass ein FT232 USB Chip verwendet wird. Das gibt in der Regel keine Treiberprobleme. Ich verwende als Terminalprogramm am liebsten HTerm. Die Schalter auf dem LoRa-Modul müssen auf 5V und Flash stehen. Der Jumper für die Versorgung des Moduls mit der Batteriespannung muss natürlich auch gesteckt sein. in HTerm sieht man nach dem Stecken des Stromversorgungsjumpers das Starten des Moduls.

Jetzt geht es an die Konfiguration des SMT100.Dazu gibt man in HTerm das Passwort ein (123456) und kann danach AT Kommandos absetzen (Achtung: Kommandos immer groß schreiben und nicht das CR bei Send on Enter vergessen!).

  • AT+BAUDR=9600 (9600 baud)
  • AT+PARITY=2 (gerade Parität)
  • AT+5VT=100 (100ms warten nach dem Einschalten der 5 V Versorgung für den Sensor)
  • AT+MBFUN=1 (Modbus einschalten)
  • AT+COMMAND1=fd 03 00 00 00 01,1 (Temperatur abfragen)
  • AT+COMMAND2=fd 03 00 01 00 01,1 (Bodenfeuchte abfragen)
  • AT+DATACUT1=0,0,0
  • AT+DATACUT2=0,0,0
  • AT+TDC=60000 (Sendeintervall einstellen, 60 s = 60000 ms)

Überprüfen geht durch:

  • AT+BAUDR=?
  • AT+PARITY=?
  • AT+5VT=?
  • AT+MBFUN=?
  • AT+COMMAND1=?
  • AT+COMMAND2=?
  • AT+DATACUT1=?
  • AT+DATACUT2=?
  • AT+TDC=?

Die Kommunikation zwischen dem LoRa-Modul und dem angeschlossenen SMT100 kann mit Hilfe von AT+CFGDEV getestet werden. Hier ist ein Beispiel:

Zur Erläuterung sollte man die Application Note zu Modbus von TRUEBNER bereithalten.

Die Bytetolge fd 03 00 00 00 01 sendet einen Modbus Broadcast an den einen angeschlossen Sensor und erwartet die Temperatur. Die Temperatur ist in der Antwort im 4. und 5. Byte gespeichert als 16 bit Zahl gespeichert. Wandelt man 2d e3 in einen Dezimalwert um, so erhält man 11747. Teilt man 11747 durch 100 und zieht noch 100 ab, so erhält man 17,47°C. Die Bytefolge fd 03 00 01 00 01 sendet einen Modbus Broadcast an den einen angeschlossen Sensor und erwartet die Bodenfeuchte. Die Bodenfeuchte ist in der Antwort im 4. und 5. Byte gespeichert als 16 bit Zahl gespeichert. Wandelt man 0b c3 in einen Dezimalwert um, so erhält man 3011. Teilt man 3011 durch 100, so erhält man 30,11% als volumetrischen Wassergehalt.

Nach dem erfolgreichen Test kann das USB Kabel wieder entfernt werden und das LoRa-Modul ist betriebsbereit. Jetzt kann man wieder zurück zu TheThingsboard und kann die LoRa Kommunikation beobachten.Vorher sollte man jedoch einen TTN Decoder einstellen, damit die übertragenen Bytefolgen auch richtig interpretiert werden. Der hier verwendete Decoder sieht so aus und extrahiert Batteriespanung, Temperatur und Bodenfeuchte (moisture) aus den Daten. (Hinweis: Das LoRa Modul überträgt standardmäßig die Batteriespannung und auch einen Payload Versionswert, den wir aber hier nicht betrachten).

Der nachfolgende Screenshot zeigt die Datenpakete mit den einzelnen Bytes und der Decodierung an.

Was kommt als nächster Schritt? Es fehlt ja noch eine Visualiserung.Dafür gibt es verschiedene Möglichkeiten. Ich nutze MQTT zum Abholen der Messwerte bei TheThingsNetwork und spiele die Daten dann in mein Thingsboard System ein. Das werde ich demnächst beschreiben. Jetzt genieße ich erst einmal die Frühlingssonne mit Kaffee und einem leckeren Stück Streuselkuchen.

 

 

 

 

 

 

 

SMT50 mit ESP8266 und Tasmota

Bodenfeuchtemesswerte über WLAN und MQTT einfach und kostengünstig übertragen

Der ESP8266 ist ein sehr preisgünstiger Mikrocontroller mit eingebautem Wifi, der sich für drahtlose Sensoranwendungen perfekt eignet. Zur Bewässerungssteuerung soll der Bodenfeuchtensor SMT50 von TRUEBNER angeschlossen werden. Der SMT50 liefert zwei analoge Ausgangssignale. Da der ESP8266 nur einen analogen Eingang besitzt, wird nur der Bodenfeuchtewert oder der Temperaturwert übertragen. Mit einem zusätzlichen externen AD-Wandler können auch beide Werte gesendet werden. In diesem Projekt soll jedoch die einfachste Lösung erprobt werden.

Benötigt werden:

Verbinden Sie das NodeMCU-Board mit dem Computer und starten Sie das Flashtool als Administrator. Wählen Sie anschließend den COM-Port und die Firmware aus. Stellen Sie zuletzt „Erase flash“ auf „yes, wipes all“ und drücken Sie „Flash NodeMCU“.

Trennen Sie nach dem Flashen das Micro-USB-Kabel und verbinden Sie es erneut. Es sollte ein WLAN-Access-Point mit dem Namen tasmota-xxxx auftauchen, mit dem Sie sich verbinden müssen. Nun öffnet sich automatisch der Browser, indem WLAN-Einstellungen konfiguriert und gespeichert werden können. Stellen Sie SSID und Passwort Ihres WLANs ein. Dann "SAVE" drücken und das NodeMCU startet neu und sollte sich mit Ihrem WLAN automatisch verbinden.

Über das Control-Panel Ihres Routers können Sie die IP-Adresse des NodeMCU herausfinden, welche Sie in der Browser-Suchleiste eingeben müssen. Es wird eine Weboberfläche zum Konfigurieren angezeigt, durch die man analoge- bzw. digitale Ein- und Ausgänge, sowie die MQTT-Verbindung einstellen kann. Unter „Configure“ --> „Configure Modul“ muss nun der Modultyp ausgewählt und „A0 ADC0“ auf „Analog (1)“ gestellt werden.

Geben Sie anschließend unter „Configuration“ --> „Configure MQTT“ den MQTT-Host, den Port, die ClientID, sowie den Benutzernamen und das Passwort an und speichern Sie es. Das fertige Topic lautet tele/“Ihr Topic“/SENSOR. In idesem Beispiel wurde zum Test der Public Broker von HiveMQ verwendet.

Stecken Sie danach das Mikro-USB-Kabel aus dem NodeMCU und verbinden Sie den SMT50 wie folgt:
Braun an Pin „3V3“
Weiß an Pin „GND“
Gelb für den volumetrischen Wassergehalt, oder Grün für die Temperatur an den Pin „A0“.

Stecken Sie das Mikro-USB-Kabel wieder in den NodeMCU.

Wahlweise können Sie eine MQTT-Dashboard-App aus dem AppStore oder PlayStore installieren und identisch zur Ihrer MQTT-Konfiguration einstellen.

Auf dem PC können Sie mit Hilfe von MQTT.fx auch die Daten anschauen. Die Konfiguration sieht so aus:

Danach kann man das Topic subscriben und die Daten sehen.

Voilà, es funktionniert!

My nephew visited me some months ago and asked me for a wireless soil moisture sensor. At that time I was already aware of those groundbreaking new wireless technologies like LoRa, Sigfox and NB-IoT, but had no comprehensive experience so far. So I decided to

  • get an overview of the competing technologies LoRa, Sigfox and NB-IoT,
  • develop some low cost wireless nodes
  • and get some practical experience.

This is the first part of my journey which covers LoRa. Before diving into the technical details let me talk about low power long range communication in general.The range of a wireless system mainly depends on these factors

  • transmitter power
  • receiver sensitivity (bandwidth)
  • antenna gain
  • radio environment (from line of sight to dense urban areas)

Many people are not aware that the radio environment has an extreme infkuence in range. There is easily a factor of 10 or morge in range comparing rural and urband sites. Datasheets often claim a range which can only be achieved under most favourite conditions and therefore disappointment is guaranteed.  I usually follow these rules:

  • use the highest transmitter power which is accpetable in regard to frequency spectrum regulations and power supply capability
  • use antennas with as much gain as possible
  • place the antennas as high as possible
  • use a low bandwidth/datarate to increase sensitivity (in my application I usually transmit only a few bytes of data)

Before LoRa it was already possible to achieve long range at low power, but LoRa made this possible at very low cost by integrating the required signal processing into a single chip. I usually go with the module RFM95 by HopeRF which is about 5-6 Euros and add an ATmega328 controller. Here you can see me first attempt.

Software is either pure LoRa or LoRaWAN in conjunction the TheThingsNetwork. For LoRaWAN I chose MCCI Catena LMIC lib which works quite well and a low power lib to achieve a few Mikroamps during sleep times. This way I am running an experiemental node in my garden together with an SMT50.