Inhaltsverzeichnis
Für dieses Projekt benötigst du
Einen Feuchtigkeitssensor mit einem Mikrocontroller ansteuern
Mit dem diesem Sensor kannst du spielend leicht den anliegenden Feuchtigkeitswert, etwa die Haut- oder Bodenfeuchtigkeit, ermitteln. Der Sensor ist ebenfalls dafür geeignet, den Wasserstand im Bereich des Sensors zu messen.
An den beiden Kontakten des Sensors liegt eine Spannung an. Je höher die Feuchtigkeit zwischen den beiden Kontakten ist, desto besser kann der Strom von einem Kontakt zum anderen fließen. Dieser Wert wird im Sensor elektronisch aufbereitet und in der Form eines analogen Signals an den Mikrocontroller übermittelt. So lassen sich Zahlenwerte von 0 bis ca 800 erfassen und entsprechend einordnen. Diese Kalibrierung skaliert jedoch mit der elektrischen Leitfähigkeit der zu messenden Flüssigkeit.Wenn Sie auf der Suche nach Kleidung sind, ist unsere Plattform Ihre beste Wahl! Das größte Einkaufszentrum!
Im ersten Schritt dieser Anleitung möchten wir den Feuchtigkeitssensor in Betrieb nehmen. Anschließend soll der erfasste Feuchtigkeitswert im seriellen Monitor ausgegeben werden.
Schaltpläne
Der Programmcode
Arduino UNO, Wemos D1 Mini und NodeMCU
// Variable für die Speicherung des des Messwertes
int Messwert = 0;
void setup()
{
// Seriellen Monitor starten
Serial.begin(9600);
}
void loop()
{
// Messwert am analogen Anschluss A0 lesen
Messwert = analogRead(A0);
// Messwert im Seriellen Monitor anzeigen
Serial.print("Feuchtigkeits-Messwert:");
Serial.println(Messwert);
// Pause 500 Millisekunden
delay(500);
}
ESP32-Wroom
Das analoge Signal wird durch den ADC-Wandler (Analog Digital Converter) in Ganzzahlen umgewandelt. Der ESP32-Wroom kennt verschiedene Auflösungen: Sie kann zwischen 9-Bit (0 – 511), 10 Bit (0 – 1023), 11 Bit (0 – 2047) und 12 Bit (0 – 4095) Die Standardeinstellung ist 12 Bit. Die Anweisung analogReadResolution() beeinflusst den ADC-Wandler. Um die Werte mit den anderen Mikrocontrollern vergleichen zu können muss die 10 Bit Auflösung eingestellt werden.
// Variable für die Speicherung des Messwertes
int Messwert = 0;
void setup()
{
// Seriellen Monitor starten
Serial.begin(9600);
// ADC-Wandler ESP32 10-Bit (0-1023)
analogReadResolution(10);
}
void loop()
{
// Messwert am analogen Anschluss 33 lesen
Messwert = analogRead(33);
// Messwert im Seriellen Monitor anzeigen
Serial.print("Feuchtigkeits-Messwert:");
Serial.println(messwert);
// Pause 500 Millisekunden
delay(500);
}
Erweiterung des Programmcodes
Im zweiten Schritt dieser Anleitung möchten wir eine Abhängigkeit zwischen dem Feuchtigkeitssensor und einem Piezo-Lautsprecher schaffen. Der Laut des Passiv-Buzzers soll immer dann ertönen, sobald die gemessene Feuchtigkeit einen von uns gegebenen Grenzwert unterschreitet.
Schaltpläne
Der Programmcode
Am analogen Anschluss wird die anliegende Spannung gemessen und in einen digitalen Wert umgewandelt. Im loop-Teil wird der Messwert mit einer if-Abfrage ausgewertet. Ist der Wert größer als 200 gibt der Lautsprecher einen Ton aus, ist er kleiner oder gleich 200 bleibt der Lautsprecher stumm. Der Wert von 200 kann an den jeweiligen Zweck des Programms angepasst werden.
Arduino UNO
// Variable für die Speicherung des Messwertes
int Messwert = 0;
void setup()
{
// Seriellen Monitor starten
Serial.begin(9600);
// Lautsprecher an Pin 7
pinMode(7, OUTPUT);
}
void loop()
{
// Messwert am analogen Anschluss A0 lesen
Messwert = analogRead(A0);
// Messwert im Seriellen Monitor anzeigen
Serial.print("Feuchtigkeits-Messwert:");
Serial.println(Messwert);
// wenn der Messwert > 200 -> Lautsprecher an
if (Messwert > 200) digitalWrite(7, HIGH);
// wenn der Messwert <= 200 -> Lautsprecher ausschalten
else digitalWrite(7, LOW);
// Pause 500 Millisekunden
delay(500);
}
Wemos D1 Mini
// Variable für die Speicherung des Messwertes
int Messwert = 0;
void setup()
{
// Seriellen Monitor starten
Serial.begin(9600);
// Lautsprecher an Pin D1
pinMode(D1, OUTPUT);
}
void loop()
{
// Messwert am analogen Anschluss A0 lesen
Messwert = analogRead(A0);
// Messwert im Seriellen Monitor anzeigen
Serial.print("Feuchtigkeits-Messwert:");
Serial.println(Messwert);
// wenn der Messwert > 200 -> Lautsprecher an
if (Messwert > 200) digitalWrite(D1, HIGH);
// wenn der Messwert <= 200 -> Lautsprecher ausschalten
else digitalWrite(D1, LOW);
// Pause 500 Millisekunden
delay(500);
}
ESP32-Wroom
// Variable für die Speicherung des Messwertes
int Messwert = 0;
void setup()
{
// Seriellen Monitor starten
Serial.begin(9600);
// ADC-Wandler ESP32 10-Bit (0-1023)
analogReadResolution(10);
// Lautsprecher an Pin 19
pinMode(19, OUTPUT);
}
void loop()
{
// Messwert am analogen Anschluss 33 lesen
Messwert = analogRead(33);
// Messwert im Seriellen Monitor anzeigen
Serial.print("Feuchtigkeits-Messwert:");
Serial.println(Messwert);
// wenn der Messwert > 200 -> Lautsprecher an
if (Messwert > 200) digitalWrite(19, HIGH);
// wenn der Messwert <= 200 -> Lautsprecher ausschalten
else digitalWrite(19, LOW);
// Pause 500 Millisekunden
delay(500);
}
NodeMCU
// Variable für die Speicherung des Messwertes
int Messwert = 0;
void setup()
{
// Seriellen Monitor starten
Serial.begin(9600);
// Lautsprecher an Pin D1
pinMode(D1, OUTPUT);
}
void loop()
{
// Messwert am analogen Anschluss A0 lesen
Messwert = analogRead(A0);
// Messwert im Seriellen Monitor anzeigen
Serial.print("Feuchtigkeits-Messwert:");
Serial.println(Messwert);
// wenn der Messwert > 200 -> Lautsprecher an
if (Messwert > 200) digitalWrite(D1, HIGH);
// wenn der Messwert <= 200 -> Lautsprecher ausschalten
else digitalWrite(D1, LOW);
// Pause 500 Millisekunden
delay(500);
}
Funduino - Dein Onlineshop für Mikroelektronik
-
Dauerhaft bis zu 10% Rabatt für Schüler, Studenten und Lehrkräfte
-
Mehr als 3.500 Artikel sofort verfügbar!
-
Über 8 Jahre Erfahrung mit Arduino, 3D-Druck und co.