Bodenfeuchtesensor zur Überwachung von Zimmerpflanzen.

Pflanzen ideal mit Wasser zu versorgen, kann eine Herausforderung sein. Mit einem elektronischen Bodenfeuchtesensor wird sichergestellt, dass die Pflanzen rechtzeitig gegossen werden.

Dieses Tutorial beschreibt den Aufbau eines Arduino-basierten Bodenfeuchtesensors.

Dieser zeigt einerseits direkt am Sensor per blinkender LED an, falls die Pflanze zu wenig Wasser hat. Der genaue Feuchtigkeitswert wird zusätzlich via MQTT an die Smart-Home-Zentrale (z.B. Home Assistant) übermittelt. Dabei ist die Programmierung so gestaltet, dass die LED-Anzeige auch funktioniert, wenn der MQTT-Server offline ist.

Um einen von Steckdoesen unabhängigen Betrieb zu ermöglichen (via Powerbank oder Akkus), wurde bewusst das LOLIN32 Entwicklungsboard gewählt, welche im DeepSleep Modus weniger Strom verbraucht, als der D1 Mini. Um Strom zu sparen geht LOLIN32 nach jeder erfolgreichen Messung (und wenn die Bodenfeuchte mindestens 50% beträgt) für 60 Minuten in den DeepSleep Ruhezustand.

Voraussetzungen:

  • Der Aufbau erfordert gewisse Elektronik- und PC-Kenntnisse. Zum Aufspielen der Software ist ein Computer mit installierter Arduino IDE erforderlich.
  • Darüber hinaus wird ein MQTT-kompatibles Smart-Home System (z.B. Home Assistant) benötigt.

Hardware

Bauteile

Zum Aufbau werden folgende Bauteile benötigt:

  • Kapazitiver Bodenfeuchtesensor, Version 1.2
  • LOLIN32, V1.0.0
  • 5mm LED, rot
  • 1 x 220 Ohm Widerstand
  • Breadboard, 400 Pin
  • 40 x Jumper Kabel 10 cm, male male

Das komplette Set an Bauteilen in unserem Shop:

Löten

Damit der LOLIN32 mit der Leiterplatte verlötet werden kann, muss er zuerst mit den PINs verlötet werden. Dabei bitte darauf achten, dass die PINs rechtwinklig angelötet werden, damit sie später auch zur Leiterplatte passen.

Stecken

Im nächsten Schritt werden alle Bauteile auf das Breadboard gesteckt. Das folgende Fritzing-Schaubild gibt einen guten Überblick.

 

Für den Bodenfeuchtesensor nutzt man am besten drei zusätzliche Jumper-Kabel, die man einerseits in das Breadboard und andererseits in den Stecker des Kabels des Bodenfeuchtesensors steckt (siehe Abbildung zu Beginn dieses Tutorials).

Arduino Programmierung

Arduino IDE herunterladen und installieren

Wir benötigen die Arduino IDE, welche hier kostenlos heruntergeladen werden kann: https://www.arduino.cc/en/Main/Software

Noch einfacher geht es auf Windows PCs, dort kann die Arduino IDE über den Microsoft Store installiert werden.

LOLIN32 Board hinzufügen

Zunächst ist folgende "Zusätzliche Boardverwalter URL" in den Voreinstellungen zu ergänzen: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

Dazu gehen wir wie folgt vor:

1. Wir rufen die Voreinstellungen auf:

2. Wir ergänzen die URL: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

"ESP32" Board installieren

Dazu navigieren wir zu "Werkzeuge -> Board -> Boardverwalter".

Nun suchen wir nach "ESP32" und installieren das Board.

"WEMOS LOLIN32" als Board auswählen

Dazu gehen wir wie folgt vor:

1. Wir navigieren über "Werkzeuge -> Board -> ESP32 Arduino"

2. Wir wählen "WEMOS LOLIN32" als Board aus

Upload Speed auswählen

Unter „Werkzeuge -> Upload Speed“ wählen wir 115200 aus.

Arduino-Sketch für Kalibrierung von GitHub kopieren

Konstruktionsbedingt liefert jeder kapazitive Bodenfeuchtesensor etwas andere Werte. Daher ermitteln wir zunächst die Kalibrierungswerte unseres Bodenfeuchtesensors. 

Dazu rufen wir den folgenden Arduino-Sketch von GitHub auf und kopieren ihn per "Kopieren / Einfügen" in einen neuen Sketch in unserer Arduino IDE:

https://github.com/NEOE-IO/NEOE-IOT-Kit-4/blob/master/Kalibrierung_Bodenfeuchtesensor.ino

Arduino-Sketch für Kalibrierung auf LOLIN32 hochladen

Nun schließen wir unseren Bodenfeuchtesensor über ein USB-Kabel an unseren Computer an.

Anschließend wählen wir über "Werkzeuge -> Port" die relevante USB-Schnittstelle (z.B. COM3 oder COM4) aus.

Nun klicken wir auf "Sketch -> Hochladen".

Kalibrierung durchführen

Nun starten wir den Seriellen Monitor und stellen die Baudrate auf den definierten Wert von 9600 ein. Nur so können die Daten im Seriellen Monitor angezeigt werden können

Der Kalibrierungswert wird nun am Seriellen Monitor der Arduino-IDE ausgegeben.

Nun notieren wir uns den Wert, wenn der Bodenfeuchtesensor komplett trocken ist und wir ihn nicht berühren. Dies ist der höhere Wert. Diesen Wert benötigen wir im nächsten Schritt für den Parameter "const int airValue".

Danach geben wir den Bodenfeuchtesensor vorsichtig in ein Glas Wasser, sodass die Markierungslinie genau auf Höhe der Wasseroberfläche ist. Bitte nicht tiefer eintauchen und darauf achten, dass auf keinen Fall die Elektronik in das Wasser getaucht wird. Sonst besteht die Gefahr, dass der Sensor kaputt geht. Diesen Wert benötigen wir im nächsten Schritt für den Parameter "const int waterValue".

Arduino-Sketch für Normalbetrieb von GitHub kopieren

Nun rufen wir den folgenden Arduino-Sketch von GitHub auf und kopieren ihn per "Kopieren / Einfügen" in einen neuen Sketch in unserer Arduino IDE:

https://github.com/NEOE-IO/NEOE-IOT-Kit-4/blob/master/NEOE-IOT-Kit-4.ino

Nun müssen wir im Arduino Sketch noch individuelle Informationen ergänzen (siehe Kommentare im Sketch), z.B. für

  • Zuvor ermittelte Werte für "const int airValue" und "const int waterValue"
  • WLAN Zugangsdaten
  • MQTT-Server Daten

Bitte dazu sämtliche Kommentare im Sketch sorgfältig lesen.

Arduino-Sketch für Normalbetrieb auf LOLIN32 hochladen

Nun schließen wir unseren Bodenfeuchtesensor über ein USB-Kabel an unseren Computer an.

Anschließend wählen wir über "Werkzeuge -> Port" die relevante USB-Schnittstelle (z.B. COM3 oder COM4) aus.

Nun klicken wir auf "Sketch -> Hochladen" und wenn keine Fehler mehr im Sketch sind, kann er erfolgreich hochgeladen werden und wir können nun unseren „Bodenfeuchtesensor“ nutzen.

ANBINDUNG AN SMART HOME SYSTEM

Die NEOE IOT-Kits werden für Home Assistant entwickelt und getestet, da dieses das aufgrund der umfangreichen und ausgereiften Funktionalitäten aktuell von uns präferierte Smart Home System ist. Weitere Informationen zu Home Assistant siehe https://www.home-assistant.io.

Home Assistant

Zur Grundeinrichtung von Home Assistant siehe https://www.home-assistant.io/getting-started/.

Wir haben den Arduino Sketch so entwickelt, dass er die MQTT Discovery Funktionalität von Home Assistant unterstützt. Dadurch wird der Sensor automatisch von Home Assistant erkannt und die via MQTT übermittelten Daten können direkt in den Dashboards angezeigt werden. Zur Aktivierung der MQTT Discovery Funktion in Home Assistant siehe https://www.home-assistant.io/docs/mqtt/discovery/.

Die Sensordaten können in den Home Assistant Dashboards auf unterschiedliche Art und Weise angezeigt werden.

Sensor Card:

 Klickt man auf die Sensor Card, so wird ein Verlauf angezeigt:

 

Ausbaustufe: autonomer Betrieb mit NiMH-Akkus sowie Solarzelle

Wenn keine Steckdose für ein USB-Netzteil in der Nähe und keine Powerbank zur Hand ist, bietet sich ein Batteriebetrieb mit drei Mignon (AA) NiMH-Akkus an. Volle Unabhängigkeit vom Stromnetz ist möglich, wenn man noch eine Solarzelle und einen Solarladeregler ergänzt.

Für dieses Einsatzszenario haben wir unser "NEOE-Solar-Erweiterungskit" entwickelt.

Weitere Informationen siehe auch folgender Beitrag: 

NEOE-Solar-Erweiterungskit in unserem Shop:

Weitere mögliche Ausbaustufen

Ergänzt man eine Wasserpumpe und ein Relais, so kann ein vollautomatisches Bewässerungssystem entwickelt werden.

 

 

Disclaimer - alle Angaben ohne Gewähr:

Die in diesem Tutorial (Beitrag) enthaltenen Informationen wurden nach bestem Wissen und Gewissen recherchiert und zusammengetragen. Jedoch können auch uns Fehler passieren. Und genauso kann bei der Umsetzung des Tutorials etwas schief gehen oder können Inhalte missverstanden werden. Für eventuelle Schäden durch das Befolgen dieses Tutorials können wir daher keine Haftung übernehmen. Wir entwickeln unsere Tutorials laufen weiter. Sollte etwas unstimmig oder unklar sein, bitte Bescheid geben, damit wir den betroffenen Punkt korrigieren oder ergänzen können. Vielen Dank.

Hinterlassen Sie einen Kommentar

Bitte beachten Sie, dass Kommentare vor der Veröffentlichung freigegeben werden müssen