In diesem Abschnitt wird mithilfe der Entwicklungsumgebung von Arduino (IDE) der Bodenfeuchtigkeitssensor programmiert .


Arduino IDE

Abbildung: Entwicklungsumgebung von Arduino
Quelle: BBS Wolfsburg


Anleitung:

Öffne zunächst die Entwicklungsumgebung von Arduino. Das Standardprogramm besitzt lediglich die Funktionen "setup()" und "loop()". Die Funktion "setup()" wird lediglich bei Programmstart ausgeführt, wobei die Funktion "loop()" immer wieder neu aufgerufen wird.

void setup() {}
void loop() {}

Im Nächsten Schritt wird die int-Variable "bodenfeuchtigkeit" deklariert. Diese soll das aktuelle Maß der Feuchtigkeit speichern. Zudem folgt die Variable "bodenfeuchtigkeit_stufe" des Datentypes String, welche das Feuchtigkeitsmaß in Worten ausdrückt. Es folgt die int-Variable "datenpin_sensor", welche den Datenpin des Bodenfeuchtigkeitssensors speichert.
Die Variablen sollen oberhalb der beiden Standardfunktionen deklariert werden.

int bodenfeuchtigkeit;
String bodenfeuchtigkeit_stufe;
int datenpin_sensor = 34;

void setup() {}
void loop() {}

Mithilfe der Funktion "Serial.begin()" wird die Datenrate in Bit pro Sekunde (Baud) für die serielle Datenübertragung festgelegt. In diesem Fall wird die Datenrate auf 9600 Bit/s eingestellt. Diese Funktion soll lediglich beim Start des Programmes aufgerufen werden und befindet sich demnach innerhalb der Funktion "setup()".
Es können anschließend die Eingänge der Pins auf einem seriellen Monitor dargestellt werden.

int bodenfeuchtigkeit;
String bodenfeuchtigkeit_stufe;
int datenpin_sensor = 34;

void setup() {
  Serial.begin(9600);
}
void loop() {}

Der mit dem Bodenfeuchtigkeitssensor verbundene analoge Pin wird mit der Funktion "analogRead(pin)" ausgelesen und soll in der Variable "bodenfeuchtigkeit" gespeichert werden. Zudem kann mit der Funktion "Serial.println()" die Variable "bodenfeuchtigkeit" an den seriellen Anschluss gedruckt werden.

int bodenfeuchtigkeit;
String bodenfeuchtigkeit_stufe;
int datenpin_sensor = 34;

void setup() {
  Serial.begin(9600);
}
void loop() {
  bodenfeuchtigkeit = analogRead(datenpin_sensor);
  Serial.println(bodenfeuchtigkeit);
}

Im Anschluss wird die Stufe der Bodenfeuchtigkeit (trocken, feucht) in der Varialbe "bodenfeuchtigkeit_stufe" gespeichert. Die Bestimmung erfolgt mit der Einstufung der Bodenfeuchtigkeit.

Die Einstufung erfolgt mit einem if-Statement in der "loop()" Funktion:

  • die Stufe "Trocken" soll festgelegt werden, sobald die Bodenfeuchtigkeit kleiner eines festgelegten Wertes ist
  • die Stufe "Nass" soll festgelegt werden, sobald die Bodenfeuchtigkeit größer gleich eines festgelegten Wertes ist

Der festgelegte Bodenfeuchtigskeitswert wird zuvor in der neuen int-Variable "bodenfeuchtigkeit_einstufungswert" gespeichert und muss durch Ausprobieren selbst ermittelt werden (Serieller Monitor). In unserem Fall wird der Wert auf 1000 gesetzt. Die Deklaration findet oberhalb der beiden Standardfunktionen statt.

int bodenfeuchtigkeit;
int bodenfeuchtigkeit_einstufungswert = 1000;
String bodenfeuchtigkeit_stufe;
int datenpin_sensor = 34;

void setup() {
  Serial.begin(9600);
}
void loop() {
  bodenfeuchtigkeit = analogRead(datenpin_sensor);
  Serial.println(bodenfeuchtigkeit);
  
  if (bodenfeuchtigkeit < bodenfeuchtigkeit_einstufungswert)
  {
    bodenfeuchtigkeit_stufe = "Trocken";
  }
  else if (bodenfeuchtigkeit >= bodenfeuchtigkeit_einstufungswert)
  {
    bodenfeuchtigkeit_stufe = "Nass";
  }
}


Als Letztes wird eine Verzögerung von 500 ms mit der Funktion "delay()" realisiert. Die Verzögerung wird am Ende des Anweisungsblockes der "loop()" Funktion gesetzt und somit eine zu schnelle Wiederholung der Endlosschleife verhindert.

int bodenfeuchtigkeit;
int bodenfeuchtigkeit_einstufungswert = 1000;
String bodenfeuchtigkeit_stufe;
int datenpin_sensor = 34;

void setup() {
  Serial.begin(9600);
}
void loop() {
  bodenfeuchtigkeit = analogRead(datenpin_sensor);
  Serial.println(bodenfeuchtigkeit);
  
  if (bodenfeuchtigkeit < bodenfeuchtigkeit_einstufungswert)
  {
    bodenfeuchtigkeit_stufe = "Trocken";
  }
  else if (bodenfeuchtigkeit >= bodenfeuchtigkeit_einstufungswert)
  {
    bodenfeuchtigkeit_stufe = "Nass";
  }
  delay(500);
}

Last modified: Monday, 5 February 2024, 2:47 PM