ESP32 - Wassersensor

Dieses Tutorial zeigt Ihnen, wie Sie den ESP32 und einen Wassersensor verwenden, um Regen, Wasserleckagen, Tanküberläufe zu erkennen und den Wasserstand zu messen.

Erforderliche Hardware

1×ESP32 ESP-WROOM-32 Entwicklungsmodul
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×Water level sensor
1×Breadboard
1×Verbindungskabel
1×(Optional) DC-Stromanschluss
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP32
1×(Empfohlen) Breakout Expansion Board for ESP32
1×(Empfohlen) Stromverteiler für ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 Starter-Kit (ESP32 enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über den Wasserstandssensor

Pinbelegung des Wasserstandssensors

Der Wasserstandssensor verfügt über 3 Anschlüsse:

  • S (Signal) Pin: Dieser Pin gibt eine analoge Spannung aus, die proportional zum Wasserstand ist.
  • + (VCC) Pin: Verbindet diesen Pin mit 3,3 V oder 5 V.
  • - (GND) Pin: Verbindet diesen Pin mit GND.
Pinbelegung des Wassersensors

Wie der Wasserstandssensor funktioniert

Einfach gesagt: Je mehr Wasser in den Sensor eingetaucht ist, desto höher ist die Ausgangsspannung am S-Pin. Durch das Messen der Spannung können wir den Wasserstand bestimmen.

Verdrahtungsdiagramm

Theoretisch können wir dem Wassersensor Strom zuführen, indem wir die VCC- und GND-Pins des Sensors an die 3,3-V- bzw. GND-Pins des ESP32 anschließen.

Allerdings wird dieser Weg in der Praxis nicht empfohlen. Wenn wir dem Wassersensor ständig Strom zuführen, wird der Wassersensor durch die feuchte Umgebung elektrochemisch schneller korrodiert. Daher ist es besser, dem Wassersensor nur dann Strom zuzuführen, wenn der Wert aus dem Sensor ausgelesen wird. Um dies zu tun, können wir den VCC-Pin des Sensors mit einem digitalen Pin des ESP32 verbinden und den Pin des ESP32 so programmieren, dass er vor dem Auslesen HIGH ist und nach dem Auslesen LOW.

  • Wie man ESP32 und Wassersensor mit einem Breadboard verbindet breadboard
ESP32-Wassersensor-Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Wenn Sie nicht wissen, wie Sie ESP32 und andere Komponenten mit Strom versorgen, finden Sie Anleitungen im folgenden Tutorial: Wie man ESP32 mit Strom versorgt.

So verbinden Sie ESP32 und Wassersensor

ESP32-Code - Wert vom Wassersensor auslesen

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32/esp32-water-sensor */ #define POWER_PIN 17 // ESP32 pin GPIO17 connected to sensor's VCC pin #define SIGNAL_PIN 36 // ESP32 pin GPIO36 (ADC0) connected to sensor's signal pin int value = 0; // variable to store the sensor value void setup() { Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); pinMode(POWER_PIN, OUTPUT); // configure pin as an OUTPUT digitalWrite(POWER_PIN, LOW); // turn the sensor OFF } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the sensor ON delay(10); // wait 10 milliseconds value = analogRead(SIGNAL_PIN); // read the analog value from sensor digitalWrite(POWER_PIN, LOW); // turn the sensor OFF Serial.print("The water sensor value: "); Serial.println(value); delay(1000); }

Schnelle Schritte

  • Wenn Sie ESP32 zum ersten Mal verwenden, sehen Sie sich wie man die Umgebung für ESP32 in der Arduino-IDE einrichtet an.
  • Kopieren Sie den obigen Code und fügen Sie ihn in die Arduino-IDE ein.
  • Kompilieren Sie den Code und laden Sie ihn auf das ESP32-Board, indem Sie auf die Schaltfläche Hochladen in der Arduino-IDE klicken.
  • Tauchen Sie den Sensor langsam ins Wasser ein (ein Glas Wasser).
  • Sehen Sie das Ergebnis im Serial Monitor. Es sieht wie folgt aus: Der Wert ist 0, wenn der Sensor nichts berührt.
COM6
Send
The water sensor value: 0 The water sensor value: 0 The water sensor value: 0 The water sensor value: 25 The water sensor value: 196 The water sensor value: 587 The water sensor value: 625 The water sensor value: 1434 The water sensor value: 1449 The water sensor value: 1454 The water sensor value: 1469 The water sensor value: 2525 The water sensor value: 2526 The water sensor value: 2558
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Notiz:

Der Wassersensor ist nicht dafür ausgelegt, vollständig eingetaucht zu werden; nur die freiliegenden Leiterbahnen auf der Leiterplatte können mit dem Wasser in Berührung kommen. Bitte installieren Sie ihn sorgfältig.

Wie man Wasserlecks erkennt

Um Wasserleckage, Regenfall und Tanküberlauf zu erkennen, müssen wir lediglich den Sensorwert mit einem Schwellenwert vergleichen. Der Schwellenwert wird im Kalibrierungsteil dieses Tutorials festgelegt.

Lass den ESP32 eine LED einschalten, wenn ein Wasserleck erkannt wird.

Schaltplan

ESP32-Wassersensor LED-Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

ESP32-Code – Erkennung von Wasserleckagen

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32/esp32-water-sensor */ #define LED_PIN 21 // ESP32 pin GPIO21 connected to LED pin #define POWER_PIN 17 // ESP32 pin GPIO17 connected to sensor's VCC pin #define SIGNAL_PIN 36 // ESP32 pin GPIO36 (ADC0) connected to sensor's signal pin #define THRESHOLD 1000 int value = 0; // variable to store the sensor value void setup() { Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); pinMode(LED_PIN, OUTPUT); // configure pin as an OUTPUT pinMode(POWER_PIN, OUTPUT); // configure pin as an OUTPUT digitalWrite(POWER_PIN, LOW); // turn the sensor OFF digitalWrite(LED_PIN, LOW); // turn LED OFF } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the sensor ON delay(10); // wait 10 milliseconds value = analogRead(SIGNAL_PIN); // read the analog value from sensor digitalWrite(POWER_PIN, LOW); // turn the sensor OFF if (value > THRESHOLD) { Serial.print("The water is detected"); digitalWrite(LED_PIN, HIGH); // turn LED ON } else { digitalWrite(LED_PIN, LOW); // turn LED OFF } }

Wie man den Wasserstand misst

Der untenstehende Code teilt den Wasserstand in vier Stufen ein.

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32/esp32-water-sensor */ #define POWER_PIN 17 // ESP32 pin GPIO17 connected to sensor's VCC pin #define SIGNAL_PIN 36 // ESP32 pin GPIO36 (ADC0) connected to sensor's signal pin #define SENSOR_MIN 0 #define SENSOR_MAX 521 int value = 0; // variable to store the sensor value int level = 0; // variable to store the water level void setup() { Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); pinMode(POWER_PIN, OUTPUT); // configure D7 pin as an OUTPUT digitalWrite(POWER_PIN, LOW); // turn the sensor OFF } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the sensor ON delay(10); // wait 10 milliseconds value = analogRead(SIGNAL_PIN); // read the analog value from sensor digitalWrite(POWER_PIN, LOW); // turn the sensor OFF level = map(value, SENSOR_MIN, SENSOR_MAX, 0, 4); // 4 levels Serial.print("Water level: "); Serial.println(level); delay(1000); }

※ Notiz:

  • SENSOR_MIN und SENSOR_MAX werden durch den Kalibrierungsprozess bestimmt.
  • Die obige Zuordnungsmethode ist nicht genau. Allerdings ist sie in vielen Anwendungen akzeptabel.

Wasserstandssensor Kalibrierung

Siehe wie man den Wasserstandssensor kalibriert

※ Notiz:

Dieses Tutorial verwendet die Funktion analogRead(), um Werte von einem an einen Wassersensor angeschlossenen ADC (Analog-Digital-Wandler) auszulesen. Der ESP32-ADC ist gut geeignet für Projekte, die keine hohe Genauigkeit benötigen. Allerdings für Projekte, die präzise Messungen benötigen, beachten Sie bitte:

  • Der ESP32-ADC ist nicht perfekt genau und muss möglicherweise kalibriert werden, um korrekte Ergebnisse zu erhalten. Jedes ESP32-Board kann etwas unterschiedlich sein, daher müssen Sie den ADC für jedes einzelne Board kalibrieren.
  • Die Kalibrierung kann schwierig sein, insbesondere für Anfänger, und liefert möglicherweise nicht immer die genauen Ergebnisse, die Sie möchten.

Für Projekte, die eine hohe Präzision benötigen, ziehen Sie in Erwägung, einen externen ADC (z. B. ADS1115) zusammen mit dem ESP32 zu verwenden oder einen Arduino zu verwenden, der über einen zuverlässigeren ADC verfügt. Wenn Sie den ESP32-ADC dennoch kalibrieren möchten, lesen Sie die ESP32 ADC Calibration Driver.

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!