Kapazitiven Erdfeuchtigkeitssensor „Giess-o-Mat“ am Raspberry Pi auslesen

Im Bereich der Raspberry Pi Bodenfeuchtigkeitsmessung gibt es resistive und kapazitive Sensoren, welche jeweils Vor- und Nachteile haben. Der neuartige Raspberry Pi Giessomat / „Giess-o-Mat“ Sensor bietet eine dauerhaft präzise kapazitive Messung, was u.a. in unserem Raspberry Pi Gewächshaus sehr interessant sein kann.

In diesem Tutorial geht es um den Aufbau des Raspberry Pi Giessomat sowie dem Auslesen der Frequenz, mit Hilfe derer die relative Erdfeuchte errechnet werden kann.

Da ich nun von mehreren Usern gebeten wurde und es zu dem Thema (im Hinblick auf den Raspberry Pi) nicht viel Stoff gibt, hoffe ich, dass dieses Tutorial die Benutzung etwas vereinfacht.

 

Zubehör

Dazu habe ich folgendes Zubehör bzw. Bauteile genommen:

Ich empfehle gleich die beschichtete Version der Platine zu nehmen, da diese ansonsten in jedem Fall aufwändig per Hand versiegelt werden muss. Die mitgelieferten Bauteile der Platine/Sensor (weiter unten gelistet) sind im SMD Format und daher nicht unbedingt für Löt-Anfänger geeignet. Mit ein wenig Geschick sollte die Größe aber kein Problem darstellen.

Der Frequenzteiler kann auch durch einen Widerstand ersetzt werden. Dabei wird der 100kΩ Widerstand an Position R3 (siehe weiter unten) um einen größeren getauscht: Soll die Frequenz halbiert werden, so wird ein doppelt so großer Widerstand genommen, usw. Dabei ist es natürlich möglich mehrere Widerstände zu kombinieren.

 

Vorteile gegenüber resisitiven Feuchtigkeitssensoren

Resisitive Erdfeuchtigkeitssensoren sind oft nicht von Dauer.

In einem vorherigen Tutorial haben wir die sehr günstigen Bodenfeuchtigkeitssensoren am Raspberry Pi angeschlossen und ausgelesen. Diese Bauart hat allerdings ein Problem, welches im Laufe der Zeit auftritt: Korrosion. Nach längerer Benutzung bei gleicher Polung zersetzen sich oftmals die Sensoren teilweise. Dies ist weder für das Messverhalten noch für die Bodenwerte gut.

Diese Gefahr besteht bei kapazitiven Sensoren hingegen nicht. Dabei wird allerdings kein analoges Signal ausgegeben, welches mit einem MCP3008 ADC ausgelesen werden kann, sondern eine Frequenz, die unterschiedlich hoch ausfällt – je nach Feuchtigkeit der Erde (je nasser, umso niedriger).

Die ausgegebene Frequenz (bis 450kHz) ist zu viel für den Raspberry Pi, weshalb wir entweder einen Frequenzteiler nehmen, der diese eben um einen gewissen Dividenden teilt, oder einfach einen größeren Widerstand. Der Nachteil eines Frequenzteiler ist der Preis, da ein einfacher Widerstand quasi nichts kostet.

 

Zusammenbau des Raspberry Pi Giessomat

Der Giess-o-Mat kommt gewöhnlicherweise nicht zusammengebaut, weshalb die einzelnen SMD Bausteine erst noch auf die Platine gelötet werden müssen. Da diese sehr klein sind, hilft ein Blick auf derern Beschriftung. Außerdem habe ich versucht jeden Schritt mit Bildern zu dokumentieren, damit nichts schief geht.

Folgender Hilfszettel findet sich in der Tüte der Bauteile:

Bezeichnung Typ Aufschrift Funktion
T1 BC847B 1Ft od. 1FW Transistor
C1 10μF 10V Kondensator
IC1 74HC14D HC14 IC
D1 BZX84B5V6 T12 oder Z3 Zehnerdiode 5v6
R1 1k 102 od. 1001 Widerstand 1k
R2 100R 101 od. 1000 Widerstand 100R
R3 100k 104 od. 1003 Widerstand 100k

Beginnen wir mit dem IC. Dabei ist es wichtig, dass die Seite mit der Markierung „nach oben“ zeigt, wo auf dem PCB die kleine runde Einkerbung zu sehen ist.

Der Kondensator (C1) hat keine Aufschrift und es spielt keine Rolle, welche Seite wo verlötet wird:

Bei den Widerständen (R1, R2, R3) musst du vorsichtig sein, da die SMD Beschriftung nicht der eigentlichen Größe entspricht. Auf dieser Seite kannst du einfach den abgebildeten Wert des SMD Widerstands eingeben und dir die echte Größe berechnen lassen.

Falls du keinen Frequenzteiler hast, kannst du (wie oben beschrieben) auch einfach einen größeren Widerstand anstelle von R3 nutzen.

 

Anschließend fehlen nur noch Transistor (T1) und Zehnerdiode (D1), welche die gleiche Form haben. Hier hilft wieder die Beschriftung von oben:

 

Zusammenbau Frequenzteiler (optional)

Auf die gleiche Weise wie den Giessomat bauen wir auch den Frequenzteiler zusammen, sofern wir einen besitzen.

Zunächst die Tabelle:

Bezeichnung Typ Aufschrift Funktion
T1 BC847B 1Ft, 1F-, 1FW Transistor
C1 10μF 10V Kondensator
IC1 74HC4040 HC4040 IC
D1 BAS40 43t, 43-, 43p, 43W Schottky Diode
R1, R2 2k2 222, 2201 Widerstand 2k2

Auch hier beginnen wir mit dem IC, dem Kondensator sowie den Widerständen. Die Größe von R1 und R2 ist identisch.

Fehlen noch Transistor (T1) und die Diode (D1). Achte dabei wieder auf die Beschriftung, da die Bauform identisch ist:

 

Zu guter letzt werden die beiden Kontakte von „:16“ zusammengelötet, wodurch eine 16-fach geringere Frequenz ankommt.

Außerdem habe ich die beiden Platinen noch miteinander verlötet und an den Frequenzteiler ein paar Kontakte für die Jumper Kabel angelötet.

Raspberry Pi Giessomat

 

 

Skript zum Auslesen der Frequenz

Schließe zunächst V+ and 3.3V vom Raspberry Pi an, GND an GND und OUT z.B. an GPIO21.

Zum Auslesen der Frequenz am Raspberry Pi eignet sich die PiGPIO Bibliothek, welche Bibliotheken für C(++), Python, etc. mitbringt. Auf gewöhnlichen Raspbian Versionen (nicht Lite) ist es bereits vorinstalliert, ansonsten können wir es hiermit nachinstallieren:

sudo apt-get update
sudo apt-get install pigpio python-pigpio python3-pigpio

 

Anschließend erstellen wir eine neue C-Datei, welche zum Auslesen der Frequenz da ist:

sudo nano freq_count_1.c

Diese Datei bekommt folgenden Inhalt (Beispiel von hier). Mit STRG+O speichern und STRG+X zum Terminal zurückkehren.

Anschließend kompilieren wir die Datei:

gcc -Wall -pthread -o freq_count_1 freq_count_1.c -lpigpio -lrt

Nun kann das Programm bereits aufgerufen werden. Dabei muss nur der entsprechende GPIO Pin angegeben werden, an welchem „OUT“ verbunden ist (bspw. 21):

sudo ./freq_count_1 21

Anschließend wird die Nummer des GPIOs, gefolgt von der Frequenz (in Hz) angezeigt. Als Test kannst du den Sensor in ein Glas Wasser stellen und wirst beobachten, wie sich die Frequenz verringert.

Im einem Projekt wie dem Raspberry Pi Gewächshaus gilt es nun, den optimalen Wert herauszufinden. Dies ist allerdings abhängig von der Erde, der Bewässerung und den Pflanzen und kann daher nicht eindeutig beantwortet werden. Bei mir ergab volle Nässe (Glas Wasser) eine Frequenz von ca. 1000Hz, wobei totale Trockenheit (kein leitendes Material) ungefähr 10kHz (mit einem Frequenzteiler von 16).

Solltest du ein Python Skript nutzen, so kannst du das obere C-Programm auch erweitern/verkürzen und in dein Python Skript einbinden.

 

Weitere Informationen zum Thema Giess-o-Mat

Weiterführende Informationen zu dem Gießomat gibt es u.a. auf den nachfolgenden Seiten, wobei es sich dabei meist um die Benutzung mit Arduino und/oder ESP8266 und weniger mit dem Raspberry Pi geht. Dennoch denke ich, dass es lesenswerte Links für Interessierte sein können:

Falls du eine weitere gute Quelle kennst, kannst du sie gerne als Kommentar posten, sodass ich die Liste erweitern kann.

52 Kommentare