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:
- Dragino RS-485BL LoRaWAN RS-485/UART converter
- SMT100 RS-485 Bodenfeuchtesensor von TRUEBNER (Modbus Version)
- 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!):
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.