ESP32 S3 - Wassersensor

Lernen Sie in diesem einsteigerfreundlichen Arduino-Tutorial, wie Sie einen Wasserstandssensor an Ihren ESP32 S3 anschließen, um Wasserlecks, Regen und Tanküberläufe zu erkennen und Wasserstände zu messen.

Was Sie bauen werden:

  1. Einen Wasserstandsleser, der Rohwerte im Seriellen Monitor ausgibt
  2. Einen Wasserleckdetektor, der eine LED leuchten lässt, wenn Wasser vorhanden ist
  3. Eine mehrstufige Wassertiefenüberwachung, die Pegel von leer bis hoch einteilt
  4. Einen kalibrierten Sensoraufbau für genaue Wasserstandsmessungen in der Praxis
ESP32 S3 - Wassersensor

Erforderliche Hardware

1×ESP32 S3 WROOM N16R8
1×(Alternativ) ESP32 S3 SuperMini Dev Module
1×(Alternativ) ESP32 S3 Uno-form Board
1×(Alternativ) ESP32 S3 Camera Board
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) Screw Terminal Expansion Board for ESP32 S3
1×(Empfohlen) Breakout Expansion Board for ESP32 S3
1×(Empfohlen) Power Splitter for ESP32 S3

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 S3 Starter-Kit (ESP32 S3 enthalten)
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.

Überblick über Water Level Sensor

Ein Wasserstandssensor ist ein analoger Sensor, der das Vorhandensein und die Tiefe von Wasser erkennt, indem er den Widerstand zwischen freiliegenden Leiterbahnen auf seiner Platine misst. Je mehr dieser Bahnen durch Wasser überbrückt werden, desto geringer wird der elektrische Widerstand und desto stärker steigt die Ausgangsspannung proportional an. Dadurch lässt er sich einfach mit dem integrierten ADC des ESP32 S3 für verschiedene Anwendungen zur Wassererkennung und -messung kombinieren.

Wichtige Spezifikationen

Der Sensor arbeitet mit 3,3V oder 5V und ist damit ohne Pegelwandler direkt mit den Logikpegeln des ESP32 S3 kompatibel. Er hat drei Pins — Signal, VCC und GND — und gibt eine analoge Spannung aus, die mit der Eintauchtiefe steigt. Der Sensorbereich besteht aus abwechselnd angeordneten Leiterbahnen; nur dieser freiliegende Bereich sollte ins Wasser getaucht werden, während die Elektronik auf der Platine jederzeit trocken bleiben muss.

Pinbelegung des Wasserstandssensors

Der Wasserstandssensor hat drei Pins zum Anschluss an Ihren ESP32 S3.

  1. S-Pin (Signal): Gibt eine analoge Spannung proportional zum Wasserstand aus — mit einem analogen Eingangspin des ESP32 S3 verbinden
  2. +-Pin (VCC): Stromversorgungspin — mit 3,3V oder einem als digitalen Ausgang konfigurierten GPIO für stromsparende Messungen verbinden
  3. --Pin (GND): Massebezug — mit GND verbinden
Pinbelegung des Wassersensors

Wie der Wasserstandssensor funktioniert

Der Sensor arbeitet nach dem Prinzip der veränderlichen elektrischen Leitfähigkeit. Sind die freiliegenden Bahnen trocken, fließt zwischen ihnen fast kein Strom, und die Ausgangsspannung liegt nahe null. Steigt das Wasser und bedeckt nach und nach mehr Bahnen, nimmt die Leitfähigkeit zu und die Ausgangsspannung steigt in Richtung der Versorgungsspannung. Der ESP32 S3 liest diese veränderliche analoge Spannung über seinen ADC und wandelt sie in einen Zahlenwert um, der die aktuelle Wassertiefe widerspiegelt.

Verdrahtungsdiagramm

Schließen Sie den Wassersensor sorgfältig an Ihren ESP32 S3 an, um zuverlässige Messwerte und eine lange Lebensdauer des Sensors zu gewährleisten. Da eine dauerhafte Stromversorgung elektrochemische Korrosion an den freiliegenden Bahnen verursacht, sollte der VCC-Pin über einen GPIO-Ausgang statt über eine permanente 3,3V-Schiene versorgt werden — so kann die Firmware die Versorgung zwischen den Messungen abschalten.

Sicherheitshinweise

Versorgen Sie den VCC-Pin des Sensors über einen digitalen GPIO-Ausgangspin statt über den 3,3V-Pin des Boards. Schalten Sie diesen GPIO nur für den kurzen Moment ein, der für eine Messung nötig ist, und ziehen Sie ihn danach sofort auf LOW. Tauchen Sie den Sensor niemals über den Bereich der freiliegenden Bahnen hinaus ein; die Elektronik der Platine und das Steckerende müssen jederzeit vollständig trocken bleiben.

Pin des Wassersensors ESP32 S3 Pin
S (Signal) GPIO12 (Analoger Eingang)
+ (VCC) GPIO14 (Digitaler Ausgang zur Stromsteuerung)
* (GND) GND
ESP32 S3 Wassersensor Schaltplan

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

ESP32 S3 Code - Wert vom Wassersensor lesen

Der folgende Code liest den analogen Rohwert des Wassersensors an Ihrem ESP32 S3 und gibt ihn im Seriellen Monitor aus. Er steuert die Stromversorgung des Sensors über einen digitalen GPIO-Pin und versorgt den Sensor nur während des Messfensters, um elektrochemische Korrosion an den freiliegenden Bahnen zu minimieren. Nach der Messung schaltet die Firmware die Versorgung sofort ab, sodass der Sensor auch bei längerem Einsatz in gutem Zustand bleibt.

/* * Dieser ESP32 S3 Code wurde von newbiely.de entwickelt * Dieser ESP32 S3 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-s3/esp32-s3-water-sensor */ #define POWER_PIN 14 // The ESP32 S3 pin 14 connected to sensor's VCC pin #define SIGNAL_PIN 12 // The ESP32 S3 pin 12 connected to sensor's signal pin int value = 0; // variable to store the sensor value void setup() { Serial.begin(115200); // 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

  1. Neu beim ESP32 S3? Arbeiten Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3 durch.
  2. Verdrahten Sie den Sensor gemäß der Tabelle im obigen Abschnitt zum Schaltplan mit dem ESP32 S3.
  3. Kopieren Sie den obigen Code und fügen Sie ihn in die Arduino IDE ein.
  4. Wählen Sie im Menü Tools Ihr ESP32-S3-Board und den richtigen COM-Port aus.
  5. Klicken Sie auf die Schaltfläche Upload, um den Sketch zu kompilieren und auf Ihr Board zu flashen.
  6. Bereiten Sie zum Testen des Sensors ein Glas oder eine Schüssel mit Wasser vor.
  7. Öffnen Sie den Seriellen Monitor und stellen Sie die Baudrate auf 115200 ein.
  8. Tauchen Sie die Sensorbahnen langsam von unten beginnend ins Wasser und beobachten Sie, wie die Werte steigen.
  9. Beobachten Sie, wie die Werte wieder gegen null gehen, wenn Sie den Sensor aus dem Wasser heben.
  10. Profi-Tipp: Halten Sie die Elektronik und den Stecker des Sensors vollständig oberhalb der Wasserlinie — nur die freiliegenden Leiterbahnen an der Spitze sollten mit Wasser in Kontakt kommen.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32S3 Dev Module' on 'COM15')
New Line
9600 baud
[2026-06-16 09:12:01] The water sensor value: 0 [2026-06-16 09:12:02] The water sensor value: 0 [2026-06-16 09:12:03] The water sensor value: 28 [2026-06-16 09:12:04] The water sensor value: 204 [2026-06-16 09:12:05] The water sensor value: 591 [2026-06-16 09:12:06] The water sensor value: 628 [2026-06-16 09:12:07] The water sensor value: 1441 [2026-06-16 09:12:08] The water sensor value: 1452 [2026-06-16 09:12:09] The water sensor value: 1470 [2026-06-16 09:12:10] The water sensor value: 2521 [2026-06-16 09:12:11] The water sensor value: 2529 [2026-06-16 09:12:12] The water sensor value: 2561
Ln 11, Col 1
ESP32S3 Dev Module on COM15
2

※ Notiz:

Der Wassersensor ist nicht dafür ausgelegt, vollständig eingetaucht zu werden. Nur die freiliegenden Bahnen auf der Platine sollten mit Wasser in Kontakt kommen. Bitte installieren und testen Sie den Sensor sorgfältig, um die Elektronik nicht zu beschädigen.

Wie man Wasserlecks erkennt

Die Erkennung von Wasserlecks funktioniert, indem der Analogwert des Sensors mit einem bei der Kalibrierung ermittelten Schwellenwert verglichen wird. Überschreitet der Wert den Schwellenwert, behandelt die Firmware dies als Leckereignis und kann eine Warnung auslösen — in diesem Beispiel eine sichtbare LED-Anzeige. Dieses Muster ist die Grundlage für ausgefeiltere Leckerkennungssysteme wie Wi-Fi-Benachrichtigungen oder automatische Absperrventile.

Schaltplan

Komponente ESP32 S3 Pin
Wassersensor S GPIO12 (Analoger Eingang)
Wassersensor + GPIO14 (Digitaler Ausgang)
Wassersensor - GND
LED-Anode (+) GPIO4 (über 220Ω-Widerstand)
LED-Kathode (-) GND
ESP32 S3 Wassersensor LED Schaltplan

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

ESP32 S3 Code - Wasserlecks erkennen

Der folgende Code überwacht den Wassersensor fortlaufend und vergleicht jeden Messwert mit einem eingestellten Schwellenwert. Steigt der Sensorwert über diesen Schwellenwert, schaltet der ESP32 S3 die LED ein, um ein Leck zu melden; fällt der Wert wieder darunter, erlischt die LED. Der aktuelle Erkennungsstatus wird außerdem im Seriellen Monitor ausgegeben, sodass Sie die Reaktion des Systems in Echtzeit beobachten können.

/* * Dieser ESP32 S3 Code wurde von newbiely.de entwickelt * Dieser ESP32 S3 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-s3/esp32-s3-water-sensor */ #define LED_PIN 2 // The ESP32 S3 pin 2 connected to LED pin #define POWER_PIN 14 // The ESP32 S3 pin 14 connected to sensor's VCC pin #define SIGNAL_PIN 12 // The ESP32 S3 pin 12 connected to sensor's signal pin #define THRESHOLD 1000 int value = 0; // variable to store the sensor value void setup() { Serial.begin(115200); // 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

Dieses Beispiel teilt den gesamten Messbereich in vier benannte Kategorien ein — Leer, Niedrig, Mittel und Hoch —, um statt eines rohen Zahlenwerts eine gut lesbare Tiefenangabe zu liefern. Die Firmware bildet den kalibrierten Sensorbereich auf diese vier Stufen ab und gibt bei jeder Messung den Namen der aktuellen Stufe im Seriellen Monitor aus.

/* * Dieser ESP32 S3 Code wurde von newbiely.de entwickelt * Dieser ESP32 S3 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-s3/esp32-s3-water-sensor */ #define LED_PIN 2 // The ESP32 S3 pin 2 connected to LED pin #define POWER_PIN 14 // The ESP32 S3 pin 14 connected to sensor's VCC pin #define SIGNAL_PIN 12 // The ESP32 S3 pin 12 connected to sensor's signal pin #define THRESHOLD 1000 int value = 0; // variable to store the sensor value void setup() { Serial.begin(115200); // 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 } }

※ Notiz:

  • SENSOR_MIN und SENSOR_MAX werden durch den im folgenden Abschnitt beschriebenen Kalibrierungsvorgang ermittelt.
  • Die hier verwendete lineare Abbildungsmethode ist nicht perfekt genau, für die meisten praktischen Anwendungen aber ausreichend.

Kalibrierung des Wasserstandssensors

Genaue Wasserstandswerte erfordern eine Kalibrierung des Sensors für Ihren konkreten Aufbau, da die rohen ADC-Werte zwischen einzelnen Sensoren und ESP32-S3-Boards variieren. Notieren Sie den Ausgangswert, wenn die Bahnen vollständig trocken sind — das ist SENSOR_MIN —, tauchen Sie dann nur den Bereich der Bahnen vollständig ein und notieren Sie den Maximalwert als SENSOR_MAX. Tragen Sie beide Konstanten in Ihren Sketch ein, damit die Abbildungsfunktionen in Ihrer Umgebung korrekt arbeiten.

Siehe wie man den Wasserstandssensor kalibriert

※ Notiz:

Dieses Tutorial verwendet die Funktion analogRead(), um Werte von einem ADC (Analog-Digital-Wandler) zu lesen. Der integrierte ADC des ESP32 S3 ist für Projekte ausreichend, die keine hohe Genauigkeit erfordern. Für Projekte, die präzise Messungen benötigen, beachten Sie Folgendes:

  • Der ADC des ESP32 S3 ist nicht perfekt linear und muss für genaue Ergebnisse möglicherweise kalibriert werden. Jedes einzelne Board kann leicht abweichen, daher sollte die Kalibrierung pro Board erfolgen.
  • Die ADC-Kalibrierung kann für Anfänger schwierig sein und liefert nicht in allen Fällen perfekte Präzision.

Für Anwendungen, die hohe Präzision erfordern, sollten Sie den ESP32 S3 mit einem externen ADC wie dem ADS1115 kombinieren. Wenn Sie den internen ADC des ESP32 S3 kalibrieren möchten, lesen Sie den ESP32 ADC Calibration Driver.

Anwendungsideen

Die Kombination aus ESP32 S3 und Wasserstandssensor eröffnet eine Vielzahl praktischer Überwachungs- und Automatisierungsprojekte.

  1. Hochwassermelder für den Keller: Benachrichtigt ein Smartphone über Wi-Fi, sobald Wasser auf dem Boden erkannt wird.
  2. Automatisches Pflanzenbewässerungssystem: Überwacht die Bodenfeuchtigkeit oder den Füllstand eines Vorratsbehälters und schaltet bei Bedarf eine Pumpe ein.
  3. Wasserstandsüberwachung für Aquarien: Erkennt Verdunstung und aktiviert ein automatisches Nachfüllventil, um einen sicheren Wasserstand zu halten.
  4. Selbstgebauter Regenmesser: Misst die angesammelte Regenmenge für eine Heim-Wetterstation.
  5. Warnung für die Tropfschale der Kaffeemaschine: Verhindert ein Überlaufen, indem gewarnt wird, wenn die Tropfschale fast voll ist.
  6. Überwachung der Sumpfpumpe: Erkennt einen Pumpenausfall, indem steigendes Wasser beobachtet wird, das eigentlich abgepumpt worden sein sollte.

Video-Tutorial

Sehen Sie sich unten die Schritt-für-Schritt-Videoanleitung zu diesem ESP32-S3-Projekt an.

Fordern Sie sich selbst heraus

Da Ihr Wassersensor nun funktioniert, bringen Sie das Projekt mit einer dieser zunehmend schwierigeren Aufgaben weiter voran.

  1. Anfänger: Fügen Sie einen Summer hinzu, der piept, wenn Wasser oberhalb des Schwellenwerts erkannt wird.
  2. Anfänger: Zeigen Sie den Wasserstand im Seriellen Monitor als Prozentsatz des kalibrierten Bereichs statt als rohen ADC-Wert an.
  3. Fortgeschritten: Bauen Sie einen Wi-Fi-fähigen Leckdetektor, der eine E-Mail oder Push-Benachrichtigung sendet, wenn Wasser erkannt wird.
  4. Fortgeschritten: Erstellen Sie ein Mehrsensorsystem, das mehrere Orte gleichzeitig überwacht und jeden einzeln meldet.
  5. Experte: Entwerfen Sie ein automatisches Tankbefüllsystem, das mit einem oberen und einem unteren Füllstandssensor eine relaisgesteuerte Pumpe steuert.
  6. Experte: Bauen Sie ein Datenprotokollierungssystem, das Wasserstandswerte über die Zeit aufzeichnet und einen Trendgraphen auf einem vom ESP32 S3 bereitgestellten Web-Dashboard anzeigt.

※ 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!