Feuchtemessung mit einem Arduino

In den letzten Tagen habe ich einige Programme und Schaltungen mit einem Arduino Mini Pro aufgebaut und getestet. Da ich noch auf die letzten Teile für meine Magnetic Loop warte ein willkommener Zeitvertreib.   Ich habe mir einen Moisture Sensor gekauft und möchte damit die Erdfeucht in Blumentöpfen bestimmen und auf einem 20*4 LCD Display darstellen. Zur Serienreife wird es dieser Aufbau eher nicht schaffen, da vieles frei verkabelt ist, jedoch für Test zum Display ansteuern und analoge Werte messen reicht es allemal 😉

Schaltung_Feuchte_Sensor

Wie man sieht, ist die Schaltung sehr einfach gehalten. Der uC ist ein Arduino Mini Pro mit 5 Volt, das Display ist (leider) ein richtiges 20*4 LCD Display. Leider deshalb, weil ich mir mit einem i2c Display ein paar ( genauer gesagt sogar 4!! ) digitale Anschlüsse gespart hätte. Für kommende Projekte habe ich mir bereits die i2c Displays bestellt. Als Sensor kommt derzeit ein Moisture Sensor zum Einsatz. Weitere Details findet man im Source Code.

// Feuchtemessung für Blumentöpfe

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);

int backLight = 13; 
int sensor1 = A0;
int sensor2 = A1;
int sensor3 = A2;
int sensor4 = A3;

int Sensor1_Value = 0;
int Sensor2_Value = 0;
int Sensor3_Value = 0;
int Sensor4_Value = 0;

void setup() 
 { 

 pinMode(backLight, OUTPUT);
 digitalWrite(backLight, HIGH); // backlight on
 startup();
 PrintTemplate();
 
 } //end setup
 
 
 void loop() { 
 //Sensor 1
 int t1 = 0;
 t1 = analogRead(sensor1);
 Sensor1_Value = map(t1,0,1023,0,99);
 lcd.setCursor(12,0);
 if (Sensor1_Value < 10) {
 lcd.print(" ");
 }
 lcd.print(Sensor1_Value); 
 // end Sensor 1
 
 
 //Sensor 2
 int t2 = 0;
 t2 = analogRead(sensor2);
 Sensor2_Value = map(t2,0,1023,0,99);
 lcd.setCursor(12,0);
 if (Sensor2_Value < 10) {
 lcd.print(" ");
 }
 lcd.print(Sensor2_Value); 
 // end Sensor 2
 
 //Sensor 3
 int t3 = 0;
 t3 = analogRead(sensor3);
 Sensor3_Value = map(t3,0,1023,0,99);
 lcd.setCursor(12,0);
 if (Sensor3_Value < 10) {
 lcd.print(" ");
 }
 lcd.print(Sensor3_Value); 
 // end Sensor 3
 
 //Sensor 4
 int t4 = 0;
 t4 = analogRead(sensor4);
 Sensor4_Value = map(t4,0,1023,0,99);
 lcd.setCursor(12,0);
 if (Sensor4_Value < 10) {
 lcd.print(" ");
 }
 lcd.print(Sensor4_Value); 
 // end Sensor 4
 
 delay(2000);
 } // end loop
 
 
 void PrintTemplate () {

 lcd.clear(); 
 lcd.setCursor(2, 0); 
 lcd.print("Sensor 1:"); 
 lcd.setCursor(12, 0); 
 lcd.print("--"); 
 lcd.print("% "); 
 lcd.print("EF");
 
 lcd.setCursor(2, 1); 
 lcd.print("Sensor 2:"); 
 lcd.setCursor(12, 1); 
 lcd.print("--"); 
 lcd.print("% "); 
 lcd.print("EF");
 
 lcd.setCursor(2, 2); 
 lcd.print("Sensor 3:"); 
 lcd.setCursor(12, 2); 
 lcd.print("--"); 
 lcd.print("% "); 
 lcd.print("EF");
 
 lcd.setCursor(2, 3); 
 lcd.print("Sensor 4:"); 
 lcd.setCursor(12, 3); 
 lcd.print("--"); 
 lcd.print("% "); 
 lcd.print("EF");
 
 } // end Template
 
 
 void startup() {

 lcd.begin(20, 4);
 delay (200); 
 lcd.setCursor(2, 0);
 lcd.print("Erdfeuchtemessung");
 lcd.setCursor(1, 1);
 lcd.print("mit Moisturesensor");
 lcd.setCursor(4, 2);
 lcd.print("Version 1.0");
 lcd.setCursor(2, 3);
 lcd.print("(C) by lexxi.at");
 delay(1500); 
 } // end startup