Arduino Projekt: BonsaiTwitter

Das Ziel ist einfach: Ein Bonsai soll sich per Twitter bemerkbar machen, wenn er gewässert werden möchte. Die Idee selber ist nicht neu. Botanicalls bietet mittlerweile ein fertiges Kit an, das genau so etwas macht. Eigentlich ganz nett, aber doch an vielen Stellen für meinen Geschmack zu stark eingeschränkt.

Bonsai

Mit fehlte bei dem Projekt die Differenzierung an Status sowie der Variantenreichtum an Twitter Nachrichten. Aufgrund des limitierten Speichers des im Botanicalls verbauten Arduino Boards wäre eine Erweiterung in dieser Form nicht möglich gewesen. Außerdem wirkte der verwendete selbstgebaute “Feuchtigkeitssensor” auf mich nicht unbedingt präzise. Also musste eine eigene Lösung her.

Zum Einsatz kommt bei meiner Lösung ein Arduino Duemilanove Board mit einem Ethernet Shield für die Kommunikation mit Twitter. Die Lösung funktioniert damit autark, d.h. ohne einen angeschlossenen Mac oder PC. Die Anbindung erfolgt direkt über das per Ethernet angeschlossene Netzwerk, das dem Ethernet Shield wiederum per Router den Zugang zum Internet ermöglicht. Die eigentliche Anbindung per API an Twitter habe ich bereits in einem früheren Blogpost beschrieben.

Feuchtesensor

Als Feuchtigkeitssensor kommt der VG400 von Vegetronix zum Einsatz. Der Sensor ist für das Projekt optimal geeignet. Er kann in die Erde gesteckt werden, ist wasserfest und reagiert ohne spürbare Verzögerungen auf Änderungen der umgebenden Feuchtigkeit. Er benötigt eine Eingangsspannung von 3,3V bis 20V Gleichstrom und ist damit sehr flexibel einsetzbar. Den Messwert gibt er zwischen 0V und 3V nahezu linear zur Feuchtigkeit aus, wobei 0V eine Feuchtigkeit von 0% und 3V eine Feuchtigkeit von 100% bedeuten. Der Sensor kann direkt an das Arduino Board angeschlossen werden – Zwischenschaltungen sind nicht notwendig.

Das Board twittert nun anhand bestimmter Bedingungen regelmäßig Nachrichten:

  • Regelmäßige Statusmeldung zur aktuellen Feuchtigkeit (48h Intervall)

Wenn der Bonsai zu trocken wird, macht er bzw. das Arduino Board sich bemerkbar:

  • Bitte nach Wasser (Unterschreitung eines bestimmten Schwellenwertes)
  • Dringende Bitte nach Wasser (Unterschreitung eines weiteren Schwellenwertes)

Das Gießen erkennt das Board ebenfalls. Wobei er bei den nachfolgenden drei Nachrichten jeweils noch differenziert, ob er das Gießen überhaupt gewünscht hat; wenn das nicht der Fall ist, macht er den Gießenden darauf aufmerksam:

  • Bedanken für das Wässern, mit Bitte um mehr Wasser (Gießen erkannt, aber keine Überschreitung des Mindestfeuchtigkeitswertes nach dem Gießen)
  • Bedanken für das Wässern (optimales Gießen erkannt)
  • Bedanken für das Wässern mit Hinweis auf zu viel Wasser (Gießen erkannt, Überschreitung des Maximalfeuchtigkeitswertes nach dem Gießen)

Insgesamt macht das neun verschiedene Nachrichtentypen, die getwittert werden können. Damit sich die Nachrichten nicht ständig wiederholen, gibt es pro Nachrichtentyp einen Pool an verschiedenen Nachrichten, die per Zufall jeweils ausgewählt werden. Variantenreichtum ist so garantiert.

Eine besondere Herausforderung bestand bei dem Projekt bei der String Verarbeitung. Dies ist aufgrund des limitierten Speichers der Arduino Boards immer ein Problem. Auf der Arduino Seite findet sich eine gute Übersicht zu den unterschiedlichen Speichertypen. Würde man die verschiedenen Nachrichten als Variablen ablegen, würde das Arduino Board sie während der Sketch Ausführung in den SRAM schreiben – und der wäre mit 2 KB sehr schnell voll. Deshalb setze ich die PROGMEM Funktion des Arduino Boards ein. Sie erlaubt das Ablegen der Strings im Flash Speicher (32 KB). Mit Hilfe der pgm read word Funktion kommt man weiterhin an seine Strings.

Der Bonsai twittert unter @MFVbonsai.

© Mats Vanselow - Impressum / Datenschutzerklärung