Dieser Bauvorschlag enthält ein Schema, wie der Arduino mit dem Bodenfeuchtigkeitssensor 0193, einem LCD mit I2C-Schnittstelle und einer Stromquelle betrieben werden kann. Statt einen Arduino UNO, kann man natürlich auch einen günstigeren und kleineren Nano, Micro oder Mini verwenden.
Das Programm für das LCD ist so geschrieben, dass mit Hilfe der map-Funktion die Bodenfeuchte in % angegeben werden kann. Ist die Pflanzenerde z.B. trocken, so beträgt die Bodenfeuchte 35% und gerade nach dem Giessen 100%.
Als Stromversorgung bietet sich die Stromversorgung über die USB-Buchse, per Batterie oder mit Hilfe eines 9V Netzteils an.
///////////////////////////////////*DEFINITIONEN*/////////////////////////////////// /*LCD*/ #include <Wire.h> //Wire Bibliothek wird eingebunden #include <LiquidCrystal_I2C.h> //LiquidCrystal_I2C Bibliothek wird eingebunden LiquidCrystal_I2C lcd(0x38, 16, 2); //Display wird definiert. lcd(HEX-Adresse, Zeichen, Zeilen). (0x3F und 0x27 sind die häufigsten Adressen) /*SENO193*/ const int Luftwert = 580; //Trage hier deinen Messwert ein, wenn der Sensor frei herumliegt const int Wasserwert = 290; //Trage hier deinen Messwert ein, wenn der Sensor ganz in Wasser steht int Drittel = (Luftwert - Wasserwert)/3; int Messwert = 0; //Mit dieser Variabel werden die Messwerte gespeichert ///////////////////////////////////*SETUP*/////////////////////////////////// void setup() { /*LCD*/ lcd.init(); //LCD starten lcd.backlight(); //Hier wird die Hintergrundbeleuchtung eingeschalten (lcd.noBacklight(); schaltet die Beleuchtung aus) Serial.begin(9600); //Startet die serielle Kommunikation } ///////////////////////////////////*LOOP*/////////////////////////////////// void loop() { Messwert = analogRead(A0); //Misst die Umgebungsfeuchte beim Sensor 0193 /*Kontrolle der Funktion*/ SerialMonitor(); /*LCD*/ I2CAnzeige(); delay(1000); //1 Sekunde Pause } ///////////////////////////////////*WEITERE FUNKTIONEN*/////////////////////////////////// void SerialMonitor (){ /*Gibt "Sehr feucht" über den seriellen Monitor aus, wenn der Messwert im untersten Drittel liegt*/ if(Messwert > Wasserwert && Messwert < (Wasserwert + Drittel)) { Serial.println("Sehr feucht"); } /*Gibt "Feucht" über den seriellen Monitor aus, wenn der Messwert im mittleren Drittel liegt*/ else if(Messwert > (Wasserwert + Drittel) && Messwert < (Luftwert - Drittel)) { Serial.println("Feucht"); } /*Gibt "Trocken" über den seriellen Monitor aus, wenn der Messwert im obersten Drittel liegt*/ else if(Messwert < Luftwert && Messwert > (Luftwert - Drittel)) { Serial.println("Trocken"); } } void I2CAnzeige(){ /*LCD*/ lcd.setCursor(0, 0); //Position des Cursors wird gesetzt (oben links) lcd.print("Bodenfeuchte:"); //Der Text wird ausgehend von der Cursorposition geschrieben lcd.setCursor(0, 1); //Position des Cursors wird gesetzt (unten links) int Prozent = map (Messwert, Wasserwert, Luftwert, 100, 0); lcd.print(Prozent); //Der Text wird ausgehend von der Cursorposition geschrieben*/ lcd.print(" % "); //Der Text wird ausgehend von der Cursorposition geschrieben*/ }