Der „Grove „Moisture Sensor“ ist da. Erstmal sehen was man damit so anstellen kann 🙂
Ds ganze ist recht einfach aufgebaut: Zwei „Spitzen“ mit leitenden Material, zwei Widerstände und ein Transitor als Signalverstärker.

Testaufbau
Das Grove Sensorshield auf den Arduino Mega gesteckt, Sensor auf den Analog 1 Port und den Grove LedBar auf Digital 12/13. Dazu ein Glas Wasser. Ich wollt keinen Blumenpott mit aufs Sofa nehmen, das gibt Flecken und dann Ärger 😉
Da der Sensor an einem Analogport des Arduino angeschlossen ist, kommen wieder Messwerte von 0-1023 im Programm an. Der Sensor misst im Prinzip nur die Leitfähigkeit eines Mediums zwischen den beiden „Spitzen“. Sensorwert 0 = Leitet nicht, 1023 = Leitet wie Sau.
Der Hersteller gibt folgende Werte an:
- 0 ~300 : trockene Erde
- 300~700 : feuchte Erde
- 700~950 : nasse Erde, im Wasser
In normalen Leitungswasser hatte ich einen Wert von ca. 450. Das ist eine ziemliche Abweichung zu den Werten der Tabelle. Woran liegts?
Das Wasser aus unseren Leitungen hat einen recht geringen Mineralgehalt, ist also ziemlich „weich“. Um das zu ändern habe ich einfach einen guten Schluck Mineralwasser in das Glas geschüttet. Und schon war der Messwert bei 750. Geht doch 🙂
Democode
Mein einfacher Democode. Der Sensor steckt am Port A0 des Arduino. Die gemessenen Daten werden über den Serialport ausgegeben. Als externe Anzeige benutze ich wie oben beschrieben noch den Grove LedBar. (Die Library dazu gibt es hier)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
#include "GroveLedbar.h" // Pin definition für LedBar int dataPin = 12; int clockPin = 13; // Pin für den Sensor int sensorPin = A0; GroveLedbar strip = GroveLedbar(dataPin, clockPin); int sensorValue = 0; int barNo = 0; void setup(){ Serial.begin(57600); } void loop() { // Sensorwert lesen und über Serial ausgeben sensorValue = analogRead(sensorPin); Serial.print("Sensorwert = "); Serial.println(sensorValue); // Sensorwert von 0-700 auf die LED-Bars 0-9 mappen barNo = map(sensorValue,0,700,0,9); // Wert zur LedBar schicken strip.setCmdMode(); strip.setSingleBar(barNo); // Set LED States strip.latchData(); // 1/10 Sekunde warten delay(100); } |
Links
Herstellerwiki: http://seeedstudio.com/wiki/Grove_-_Moisture_Sensor