Bonsai Watchdog

Wer einen Bonsai hat kennt das Problem wenn es Sommer wird. Tägliches Gießen und das sogar mehrfach. Denn die Erde darf nicht austrocknen sonst ist das Bäumchen dahin. Staunässe bekommt den Wurzeln aber auch nicht gut. Da bleibt nur eins "Ständig die Feuchtigkeit per Finger prüfen" oder ein elektronisches Helferlein basteln.
Bonsai Watchdog im Einsatz
Die Feuchtigkeitsmessung orientiert sich am Verfahren zum Feuchtigkeitstester für Blumenerde , eine SparrowApp von Leander Hackmann. Das Programm wurde hier um die Vorzüge einer grafischen Darstellung erweitert. Als Basis für die Anwendung wird ein Arduino UNO zusammen mit dem 12864 LCD von Franzis verwendet. Der Messwert wird intuitiv als Füllstandsanzeige dargestellt.
Bleistiftminen als Messelektroden
Als Elektroden kommen einfache 0,5 mm Bleistiftminen zum Einsatz. Die Verwendung von metallischen Elektroden ist aufgrund von Oxidation und des galvanischen Effekts nicht empfehlenswert.
Feuchtigkeitsanzeige auf dem Display
Die beiden Anschlüsse für die Messelektroden sind A0 und Pin 1 bzw. GND. Die Anwendung ist sehr einfach aufgebaut. Bis auf den grafischen Füllstand sind alle grafischen Elemente in einem Hintergrundbild (Bonsai.bmp) zusammengefasst. Die Höhe der Füllstandsanzeige wird aus dem ermittelten Messwert errechnet und in Form mehrerer Linien gezeichnet. Und hier geht's zum Download.
#include "Display.h"
#include "SPI.h"
#include "Bonsai.h"

#define HUMIDITY_SENSOR A0                  //Messeingang an A0
#define FAKE_GND 1                          //Pin 1 als Hilfsmasse

Display lcd = Display();

void setup() {
  lcd.init(20);                             //Displayinitialisierung
  pinMode(FAKE_GND, OUTPUT);                //Pin 1 auf Low
  digitalWrite(FAKE_GND, LOW);
}

void loop() {
  lcd.clearVideoBuffer();                   //Videoram löschen
  lcd.drawBitmap(0, 0, 128, 64, bonsai);    //Hintergrundbild laden
  byte value;
  pinMode(HUMIDITY_SENSOR, INPUT);          //Feuchtigkeitsmessung
  digitalWrite(HUMIDITY_SENSOR, HIGH);
  value = analogRead(HUMIDITY_SENSOR);
  digitalWrite(HUMIDITY_SENSOR, LOW);
  pinMode(HUMIDITY_SENSOR, OUTPUT); 
  value = (value / 2) - 70;                 //Wertenormierung
  for (byte i = 108; i<123; i++) {
    lcd.drawLine(i, 55, i, value);          //Messbalken zeichnen
  }
  lcd.show();                               //anzeigen
}

Experimente mit verschiedenen Bodenarten
Es hat sich gezeigt, dass mit der Bodenbeschaffenheit (lehmig bzw. sandig) der absolute Feuchtigkeitsgehalt der Blumenerde stark schwankt. Gegebenenfalls muss die Wertenormierung an die Blumenerde angepasst werden.
Links und Referenzen: