ESP32 - Wassersensor
Diese Anleitung zeigt Ihnen, wie Sie einen Wassersensor mit ESP32 und MicroPython verwenden, um Wasserlecks zu erkennen, Niederschlag zu messen, zu prüfen, ob ein Tank überläuft, oder den Wasserstand zu überwachen. Im Einzelnen lernen wir:
- Wie Sie den Wassersensor an den ESP32 anschließen
- Wie Sie MicroPython-Code für den ESP32 schreiben, um Werte vom Wassersensor zu lesen
- Wie Sie MicroPython-Code für den ESP32 schreiben, um mit dem ESP32 Wasserlecks, Niederschlag und Tanküberlauf zu erkennen
- Wie Sie MicroPython-Code für den ESP32 schreiben, um mit dem ESP32 den Wasserstand zu messen

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables ESP32 Starter-Kit (ESP32 enthalten) | |
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Überblick über Water Level Sensor
Pinbelegung des Wasserstandssensors
Der Wasserstandssensor hat drei Pins:
- S-Pin (Signal): Analogausgang. Mit einem Analogeingang des ESP32 verbinden.
- +-Pin (VCC): Versorgt den Sensor mit Strom. Verwenden Sie zwischen 3,3V und 5V.
- --Pin (GND): Masseanschluss.

※ Notiz:
Das Signal des Sensors ändert sich, wenn die Spannung an seinem VCC-Pin verändert wird.
Wie der Wasserstandssensor funktioniert
Der Sensor besteht aus zehn sichtbaren Kupferleiterbahnen. Fünf dieser Leiterbahnen dienen der Stromversorgung, die anderen fünf der Messung. Sie sind in einem Muster angeordnet, wobei sich jeweils eine Messleiterbahn zwischen zwei Versorgungsleiterbahnen befindet. Normalerweise berühren sich diese Leiterbahnen nicht, aber wenn sich der Sensor im Wasser befindet, bildet das Wasser eine Brücke zwischen ihnen.
Stellen Sie sich die Leiterbahnen wie eine besondere Art von Drehregler vor, dessen Widerstand sich je nach umgebender Wassermenge ändert.
- Je höher der Wasserstand, desto geringer der Widerstand.
- Mehr Wasser bedeutet bessere Leitfähigkeit und damit geringeren Widerstand.
- Weniger Wasser bedeutet schlechtere Leitfähigkeit und damit höheren Widerstand.
Der Sensor nutzt diesen Widerstand, um eine Ausgangsspannung zu erzeugen. Durch Messen dieser Spannung können wir ermitteln, wie hoch der Wasserstand ist.
Verdrahtungsdiagramm
Verbinden Sie den VCC-Pin des Sensors mit dem 5V-Pin des ESP32 und den GND-Pin mit dem GND-Pin des ESP32, um ihn mit Strom zu versorgen. Es ist keine gute Idee, den Sensor in einer feuchten Umgebung dauerhaft mit Strom zu versorgen, da er dadurch schnell beschädigt werden kann und seine Lebensdauer sinkt. Um dies zu vermeiden, versorgen Sie den Sensor nur dann mit Strom, wenn Sie seine Daten abfragen müssen. Verbinden Sie den VCC-Pin des Sensors mit einem digitalen Pin des ESP32. Um den Sensor auszulesen, setzen Sie den ESP32-Pin auf HIGH und nach dem Auslesen auf LOW.
- So verbinden Sie ESP32 und Wassersensor mit einem Breadboard

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
- So verbinden Sie ESP32 und Wassersensor mit einem Schraubklemmen-Breakout-Board (Stromversorgung über USB-Kabel)

ESP32 MicroPython-Code - Wert vom Wassersensor lesen
Schnelle Schritte
Hier finden Sie eine Anleitung, wie Sie Ihren MicroPython-Code mit der Thonny IDE auf dem ESP32 einrichten und ausführen:
- Stellen Sie sicher, dass die Thonny IDE auf Ihrem Computer installiert ist.
- Vergewissern Sie sich, dass die MicroPython-Firmware auf Ihrem ESP32-Board installiert ist.
- Wenn Sie zum ersten Mal einen ESP32 mit MicroPython verwenden, lesen Sie die Anleitung ESP32 MicroPython Getting Started mit Schritt-für-Schritt-Anweisungen.
- Verbinden Sie das ESP32-Board gemäß dem Schaltplan mit dem Wassersensor.
- Verbinden Sie das ESP32-Board über ein USB-Kabel mit Ihrem Computer.
- Öffnen Sie die Thonny IDE auf Ihrem Computer.
- Gehen Sie in der Thonny IDE zu Tools Options.
- Wählen Sie im Reiter Interpreter im Dropdown-Menü MicroPython (ESP32) aus.
- Stellen Sie sicher, dass der richtige Port ausgewählt ist. Die Thonny IDE erkennt ihn normalerweise automatisch, eventuell müssen Sie ihn aber manuell auswählen (z. B. COM12 unter Windows oder /dev/ttyACM0 unter Linux).
- Kopieren Sie den bereitgestellten MicroPython-Code und fügen Sie ihn in den Editor von Thonny ein.
- Speichern Sie den Code auf Ihrem ESP32:
- Klicken Sie auf die Schaltfläche Save oder drücken Sie Ctrl+S.
- Wählen Sie im Speicherdialog MicroPython device.
- Nennen Sie die Datei main.py.
- Klicken Sie auf die grüne Schaltfläche Run (oder drücken Sie F5), um das Skript auszuführen.
- Tauchen Sie den Sensor langsam in ein Glas Wasser.
- Sehen Sie sich die Meldung in der Shell unten in Thonny an.
※ Notiz:
Tauchen Sie den Sensor nicht vollständig ein; lassen Sie nur die sichtbaren Teile der Platine das Wasser berühren. Seien Sie bei der Installation vorsichtig.
※ Notiz:
Dieses Tutorial zeigt, wie Sie mit der Funktion adc.read() Werte von einem ADC (Analog-Digital-Wandler) lesen, der an einen Wassersensor angeschlossen ist. Der ADC des ESP32 eignet sich für Projekte, die keine hohe Genauigkeit erfordern. Wenn Ihr Projekt jedoch genaue Messungen benötigt, beachten Sie Folgendes:
- Der ESP32-ADC ist nicht perfekt genau und kann für präzise Ergebnisse eine Kalibrierung erfordern. Jedes ESP32-Board kann leicht abweichen, daher ist eine Kalibrierung für jedes einzelne Board notwendig.
- Die Kalibrierung kann besonders für Anfänger schwierig sein und liefert möglicherweise nicht immer genau die gewünschten Ergebnisse.
Für Projekte, die hohe Genauigkeit erfordern, sollten Sie einen externen ADC (z. B. ADS1115) mit dem ESP32 verwenden oder einen Arduino wählen, der einen zuverlässigeren ADC hat. Wenn Sie den ESP32-ADC dennoch kalibrieren möchten, lesen Sie den ESP32 ADC Calibration Driver.
So erkennen Sie ein Wasserleck
Um Wasserlecks, Regen oder überlaufende Tanks zu erkennen, vergleichen wir den Messwert mit einem voreingestellten Grenzwert. Dieser Grenzwert wird im Kalibrierungsteil dieses Tutorials festgelegt. Der folgende ESP32 MicroPython-Code zeigt, wie Wasserlecks erkannt werden.
So messen Sie den Wasserstand
Um den höchsten Wasserstand in verschiedene Stufen zu unterteilen und die aktuelle Stufe zu ermitteln, folgen Sie der Methode im folgenden Code. Beachten Sie, dass der höchste Wasserstand dem vollständig eingetauchten Sensor entspricht. Dieser Code unterteilt die gesamte Höhe in 4 Stufen.
※ Notiz:
- SENSOR_MIN und SENSOR_MAX werden bei der Kalibrierung festgelegt.
- Die beschriebene Zuordnungsmethode ist möglicherweise nicht sehr präzise, reicht aber für die meisten Anwendungen aus. Für eine bessere Genauigkeit messen Sie die Schwellenwerte für jede Stufe, wie im Kalibrierungsabschnitt erläutert.
Kalibrierung des Wasserstandssensors
Die Ausgabe des Sensors hängt sowohl vom Wasserstand als auch von der Leitfähigkeit des Wassers ab. Reines Wasser leitet keinen Strom, Wasser mit Mineralien und Verunreinigungen hingegen schon. Je leitfähiger das Wasser, desto empfindlicher wird der Sensor. Außerdem kann sich die Ausgabe je nach der am VCC-Pin des Sensors anliegenden Spannung ändern.
Für genaue Messwerte des Wassersensors ist es am besten, ihn für die spezifische Wasserart zu kalibrieren, die Sie überwachen möchten. Bevor Sie einen Schwellenwert zum Auslösen einer Aktion festlegen, sollten Sie den tatsächlichen Wert testen, den der Sensor liest.
So führen Sie den Test durch:
- Verwenden Sie den obigen Sketch, um den Wert des Sensors auszulesen.
- Tauchen Sie den Sensor bis zu dem Pegel ins Wasser, bei dem Sie den Schwellenwert festlegen möchten.
- Notieren Sie den Wert, der in der Shell unten in Thonny angezeigt wird.
- Verwenden Sie diesen Wert als Schwellenwert zum Auslösen einer Aktion.
- Möglicherweise müssen Sie diesen Test einige Male wiederholen, bis es passt.
Der Test kann Ihnen außerdem helfen, Folgendes zu ermitteln:
- Den Wert SENSOR_MIN, wenn sich der Sensor nicht im Wasser befindet.
- Den Wert SENSOR_MAX, wenn der Sensor vollständig eingetaucht ist.
- Einen Schwellenwert zur Erkennung von Wasserlecks.
- Schwellenwerte für die verschiedenen Stufen Ihrer Skala.