Computing-Plattform Arduino als Gärtner

Wer kennt es nicht, man erfreut sich ab Pflanzen, wie sie kräftig grün leuchten und was passiert? Neben dem Alltag geht das Giessen vergessen und bald verkümmert das Grün und hängt bräunlich über den Topfrand. Lässt sich ein Gewächshaus denn mit innovativer Hardware überwachen und gar automatisch begiessen? In diesem Blog-Beitrag erfahren Sie, wie bei einer Projektarbeit an der TEKO Olten vorgegangen wurde. Sie erhalten einen Einblick in die 4-Phasen Projektmethode der TEKO und wie ein Arduino als «Gärtner» eingesetzt werden kann.

Ich bin Pascal Sommer und seit fünf Semestern bilde ich mich an der TEKO Olten im Bereich Informatik weiter. Im November 2017 habe ich dann den Auftrag erhalten eine Semesterarbeit im Fach Mikrocomputertechnik zu erarbeiten. Für die Umsetzung wurde ein Mikrocontroller zur Verfügung gestellt, welcher individuell eingesetzt werden kann.

In welche Richtung die Lösungsvariante gehen soll, wurde nicht vorgegeben. Es galten jedoch die folgenden Rahmenbedingungen: Aus dem Projekt soll eine innovative Lösung resultieren. Des Weiteren ist das Projekt gemäss der 4-Phasen Projektmethode der TEKO umzusetzen, um die Methodik in einem praktischen Fall anzuwenden. Ausserdem muss die Hardware mindestens vier Komponenten (Aktoren oder Sensoren) beinhalten.



1.Die 4-Phasen Projektmethode

Der Projektprozess besteht nach TEKO-Vorgaben aus den folgenden vier Phasen:

Phase 1: Definition des Projektes

Phase 2: Projektplanung

Geplant wird möglichst einfach und überschaubar. Dies kann in einem sogenannten Meilensteinplan dargestellt werden. Die zeitlich festgelegten Meilensteine dienen der Überprüfung, ob wichtige Ziele auf dem Weg zum Erfolg rechtzeitig erreicht wurden.

Phase 3: Projektrealisierung

In der Realisierungsphase werden die Aufträge Punkt für Punkt abgearbeitet. Fortlaufend werden folgende Punkte geprüft:

Werden nachteilige Abweichungen vom Plan festgestellt, können unter anderem folgende Anpassungs- und Koordinierungsmassnahmen ergriffen werden:

Phase 4: Projektabschluss

Nach Abschluss des Projektes werden offene Aufgaben und Restarbeiten geklärt. Nicht zu vernachlässigen ist die Würdigung des Erreichten. In einem Projektabschlussbericht sollten die gemachten Erfahrungen systematisch aufgearbeitet und allen zugänglich gemacht werden.

Den Abschluss bildet eine „Projektabschlusssitzung“. In dieser werden folgende Fragen geklärt:

Die Elemente der vierten Phase, dem Projektabschluss, sehen auf den ersten Blick eher formal aus und mögen überflüssig erscheinen. Für die Motivation der beteiligten Mitarbeitenden ist es jedoch erforderlich einen „guten Abschluss“ zu haben. Auch sollten die Erfahrungen dokumentiert und damit für künftige Projekte nutzbar gemacht werden.

2.Definition des Projekts

Berechtigterweise stellt sich vielleicht der eine oder die andere Leser/in die Frage, wie ein Informatiker darauf kommt ein automatisiertes Gewächshaus zu entwickeln. Da ich wusste, dass sich meine Freundin frische Kräuter zum Kochen wünscht und diese bei uns zu Hause immer verdorrten, war es naheliegend dazu eine Lösung zu suchen. Das Endprodukt sollte Platz haben für drei Kräuter, nämlich Petersilie, Schnittlauch und Bärlauch.

Im Gewächshaus sollte zudem die Erdnässe gemessen werden, um sicherzustellen, dass die Pflanzen immer genügend gewässert werden. Sollte der Feuchtigkeitssensor bemerken, dass die Erdnässe unter eine bestimmte Schwelle fällt, muss der «Gärtner» Arduino aktiv werden und die Bewässerungspumpe ansteuern, um die Pflanzen zu giessen. Weiter sollten mittels LED-Licht die Pflanzen während einer vorbestimmten Zeit beleuchtet werden damit sie schnell und gut gedeihen.

Mittels Nutzwert- und SWOT-Analysen habe ich mich entschieden, ein «Treibhaus» mit automatischem Bewässerungssystem umzusetzen. Dabei erarbeitete ich das komplette Projekt vom Mini-Gewächshaus bis zum automatisierten Bewässerungssystem.

3.Projektplanung

Für die Umsetzung des Projekts «Garduino» habe ich die folgenden Meilensteine gesetzt. Da das Projekt einen eher kleineren Umfang hatte und ich als alleinige Person daran arbeitete, habe ich auf eine detaillierte Planung verzichtet.

Schritt-Nr. Bezeichnung Meilenstein Soll–Termin Ist-Termin
1.1.1 Projektstart erfolgt - 16.11.2017
1.3.1 Ist-Analyse abgeschlossen 23.11.2017 22.11.2017
1.4.4 Soll-Analyse abgeschlossen 23.11.2017 22.11.2017
1.5.1 Planung der einzelnen Komponenten und Bauteile abgeschlossen 30.11.2017 30.11.2017
1.5.8 Montage von Komponenten auf Gewächshaus erfolgt 07.12.2017 14.12.2017
1.6.8 Schreiben von Code abgeschlossen 14.12.2017 16.12.2017
1.7.8 Testphase abgeschlossen 18.12.2017 18.12.2017
1.8.4 Projektende 20.12.2017 20.12.2017

4.Projektrealisierung

Beschaffung des Materials

Das fertige Mini-Treibhaus wollte ich später in der eigenen Küche aufstellen. Daher sollte es neben den Funktionen auch ein ansprechendes Design aufweisen. Also informierte ich mich im Internet über ein kleines Gehäuse, welches Platz hat für drei Pflanzen. Als ich beim Googeln auf das Möbelgeschäft IKEA stiess, sah ich das perfekte Case für mein Projekt, das Gewächshaus «SOCKER». Es sieht sehr vielversprechend aus und auch die Kosten lagen für mein Experiment mit knapp CHF 20.00 im Rahmen. Also fuhr ich los nach Spreitenbach und kaufte es, womit der erste Schritt getan war.

Weiter musste ich das Folgende beschaffen:

Die Montage

Ich brachte direkt auf das Gehäuse eine Zeichnung der Komponenten-Anordnung an, wie ich vor hatte die Stromzufuhr, das selbstklebenden PIN-Board, den Arduino und das Display zu montieren.

Gleichzeitig zeichnete ich die Bohrlöcher ein und machte mich mit dem Akkubohrer ans Werk. Die Teile konnte ich nun mithilfe von M-Schrauben und Muttern montieren. Danach musste ich die einzelnen Komponenten verkabeln, bevor das Programmieren losgehen konnte.

Der Code

Hier zeige ich Ihnen den Code, den ich für mein Mini-Treibhaus verwende. Sie können Ihn nach Belieben anpassen. Die Feuchtigkeitssensoren können beispielsweise so eingestellt werden, dass die Erde – abhängig von der Pflanzenart – die richtige Nässe aufweist.

Die Uhrzeit, an der sich die Beleuchtung orientiert, muss nur einmal eingestellt werden, weshalb ich dies auskommentiert habe. Die Einschaltzeiten des LED-Lichts können Sie ebenfalls direkt im Code verlängern oder kürzen. Im Moment ist das LED zwischen 6:00 und 23:00 Uhr eingeschaltet.

Das am Gehäuse angebrachte Display zeigt ständig in der oberen Zeile die Uhrzeit an und in der unteren Zeile wird gewechselt zwischen der aktuellen Temperatur im Gehäuse und dem aktuellen Datum.

////////////Include
#include <LiquidCrystal.h>
#include <DS3231.h>

//////////Initialize

// initialize LCD
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

// initalize water sensor 1
int WWert1 = 0;

// initalize water sensor 2
int WWert2 = 0;

// initalize water sensor 3
int WWert3 = 0;

// initialize LED light
int LEDLight = 5;

// initialize pump
int Pump = 13;

// initialisize clock DS3231
DS3231 rtc(SDA, SCL);

// initialize temperature sensor
int tempC;


//////////setup
void setup() {
	// Set up the LCD's number of rows and columns
	lcd.begin(16, 2);
	lcd.setCursor(0, 0);

	// Set up water sensors
	pinMode(WWert1, OUTPUT);
	pinMode(WWert2, OUTPUT);
	pinMode(WWert3, OUTPUT);

	// Set up LED light
	pinMode(LEDLight, OUTPUT);

	// Set up pump
	pinMode(13, OUTPUT);

	// Set up clock
	rtc.begin();

	//Nur ändern bei Zeitänderung!!
	//rtc.setDOW(THURSDAY);
	//rtc.setTime(5, 59, 50);
	//rtc.setDate(14, 12, 2017);
}

void loop() {
	// LED light time control

	Time t;
	Serial.print(rtc.getTimeStr());
	t = rtc.getTime();
	Serial.print(t.hour, DEC);
	if ((t.hour == 6)  || (t.hour == 7)  || (t.hour == 8)  || (t.hour == 9)  || (t.hour == 10) ||
		(t.hour == 11) || (t.hour == 12) || (t.hour == 13) || (t.hour == 14) || (t.hour == 15) ||
		(t.hour == 16) || (t.hour == 17) || (t.hour == 18) || (t.hour == 19) || (t.hour == 20) ||
		(t.hour == 21) || (t.hour == 22))
	{
		digitalWrite(LEDLight, HIGH);
	} else {
		digitalWrite(LEDLight, LOW);
	}

	// Humidity-meter
	/////////////////////

	// Humidity 1 (ca.>200)
	WWert1 = analogRead(A0);
	if(WWert1 > 1) {
		digitalWrite(Pump, HIGH);
		delay(1000);
	} else {
		digitalWrite(Pump, LOW);
		delay(1000);
	}

	///////////////////
	// Humidity 2 (ca.>200)
	WWert2 = analogRead(A2);
	if(WWert2 > 1) {
		digitalWrite(Pump, HIGH);
		delay(1000);
	} else {
		digitalWrite(Pump, LOW);
		delay(1000);
	}

	/////////////////
	// Humidity 3 (ca.>200)
	WWert3 = analogRead(A4);
	if(WWert3 > 1) {
		digitalWrite(Pump, HIGH);
		delay(1000);
	} else {
		digitalWrite(Pump, LOW);
		delay(1000);
	}

	// Temperature
	Serial.print(rtc.getTemp());

	// Print time to the LCD
	lcd.setCursor(0, 0);
	lcd.print("Time: ");
	lcd.print(rtc.getTimeStr(FORMAT_SHORT));
	lcd.setCursor(0 1);
	lcd.print("Date: ");
	lcd.print(rtc.getDateStr());
	delay(3000);
	lcd.clear();

	// Print temperature to the LCD
	lcd.setCursor(0, 0);
	lcd.print("Time: ");
	lcd.print(rtc.getTimeStr(FORMAT_SHORT));
	lcd.setCursor(0, 1);
	lcd.print("Temp: ");
	lcd.print(rtc.getTemp());
	lcd.print(" C");

}

5.Projektabschluss

Ich habe mich schon vor dem Beginn des Semesters auf das Fach Mikrocomputertechnik gefreut. Der Zeitaufwand, den ich für die Umsetzung des Projektes hatte, war in keiner Weise mühsam oder anstrengend. Für die ganze Planung, Beschaffung, Umsetzung und Programmierung benötigte ich ca. 30 Stunden. Das Anbringen der Bohrungen am Gehäuse, das verdrahten des Arduinos als auch das Erlernen des Codes hat mir sehr viel Spass bereitet. Ich kann mir gut vorstellen in Zukunft wieder einmal so ein Projekt umzusetzen und dieses auch zu Hause oder sonst wo zu nutzen.

Am meisten gefällt mir, dass das Projekt einen praktischen Nutzen für mich hat und effektiv im Alltag verwendet werden kann. Meine Freundin war zuerst nicht überzeugt, musste dann aber auch zugeben, dass es nützlich ist und «schon noch cool» aussieht. Nun hoffen wir, dass wir bald die ersten Kräuter ernten können.

Die Projektvorgaben konnte ich vollumfänglich einhalten. Was aber noch geändert werden könnte, ist die Leistung der Wasserpumpe. Sie könnte vermindert oder durch eine schwächere Pumpe ersetzt werden. Momentan fliesst das Wasser noch zu schnell in einer zu hohen Menge in die Blumentöpfe.


Pascal Sommer

IT-Servicedesk Mitarbeiter


Das Thema Mikrocomputertechnik ist für mich wichtig, um zu verstehen, wie selbst kleinste Bauteile eines physischen Gerätes einen starken Einfluss auf ein Gesamtsystem haben. Ausserdem kann das Erlernen einer Programmiersprache wie «C» im privaten und im geschäftlichen Umfeld von Vorteil sein.