Arduino Nano ESP32 - Wassersensor

In diesem Tutorial wird erläutert, wie man den Arduino Nano ESP32 und einen Wassersensor verwendet, um Regen, Wasserleckage, Tanküberlauf zu erkennen und den Wasserstand zu messen.

Erforderliche Hardware

1×Arduino Nano ESP32
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 Arduino Nano
1×(Empfohlen) Breakout-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Stromverteiler für Arduino Nano ESP32

Oder Sie können die folgenden Kits kaufen:

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 drei Pins:

  • S (Signal) Pin: Dieser Pin gibt eine analoge Spannung aus, die proportional zum Wasserstand ist. Dieser Pin sollte an einen analogen Eingangspin des Arduino Nano ESP32 angeschlossen werden.
  • + (VCC) Pin: Dieser Pin wird mit 3,3 V oder 5 V verbunden.
  • - (GND) Pin: Dieser Pin wird mit GND verbunden.
Pinbelegung des Wassersensors

Wie funktioniert ein Wasserstandssensor

Einfach gesagt: Je mehr Wasser in den Sensor eindringt, 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 mit den 3,3-V- bzw. GND-Pins des ESP32 verbinden.

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. Es ist besser, dem Wassersensor nur dann Strom zuzuführen, wenn der Wert aus dem Sensor ausgelesen wird. Dazu können wir den VCC-Pin des Sensors an einen digitalen Pin des ESP32 anschließen und den Pin des ESP32 so programmieren, dass er vor dem Auslesen auf HIGH und nach dem Auslesen auf LOW gesetzt wird.

Arduino Nano ESP32 Wassersensor Verdrahtungsdiagramm

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

Arduino Nano ESP32 Code - Auslesen des Werts vom Wassersensor

/* * Dieser Arduino Nano ESP32 Code wurde von newbiely.de entwickelt * Dieser Arduino Nano 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/arduino-nano-esp32/arduino-nano-esp32-water-sensor */ #define POWER_PIN D4 // Arduino Nano ESP32 pin D4 connected to sensor's VCC pin #define SIGNAL_PIN A0 // Arduino Nano ESP32 pin A0 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

  • Falls dies das erste Mal ist, dass Sie Arduino Nano ESP32 verwenden, sehen Sie sich wie man die Umgebung für Arduino Nano 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 Arduino Nano ESP32-Board hoch, indem Sie in der Arduino IDE auf die Schaltfläche Hochladen klicken.
  • Tauchen Sie den Sensor langsam in das Wasser (ein Glas Wasser).
  • Schauen Sie sich das Ergebnis im Serial Monitor an. Es sieht wie folgt aus: Der Wert 0 wird angezeigt, 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 sich mit dem Wasser verbinden. Bitte installieren Sie ihn vorsichtig.

Wie man Wasserlecks erkennt

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

Lass uns den Arduino Nano ESP32 so programmieren, dass eine LED eingeschaltet wird, wenn ein Wasserleck erkannt wird.

Verdrahtungsdiagramm

Arduino Nano ESP32 Wassersensor LED-Schaltplan

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

Arduino Nano ESP32 Code – Erkennung von Wasserleckagen

/* * Dieser Arduino Nano ESP32 Code wurde von newbiely.de entwickelt * Dieser Arduino Nano 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/arduino-nano-esp32/arduino-nano-esp32-water-sensor */ #define LED_PIN D9 // Arduino Nano ESP32 pin D9 connected to LED pin #define POWER_PIN D4 // Arduino Nano ESP32 pin D4 connected to sensor's VCC pin #define SIGNAL_PIN A0 // Arduino Nano ESP32 pin A0 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 unten stehende Code teilt den Wasserstand in vier Stufen ein.

/* * Dieser Arduino Nano ESP32 Code wurde von newbiely.de entwickelt * Dieser Arduino Nano 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/arduino-nano-esp32/arduino-nano-esp32-water-sensor */ #define LED_PIN D9 // Arduino Nano ESP32 pin D9 connected to LED pin #define POWER_PIN D4 // Arduino Nano ESP32 pin D4 connected to sensor's VCC pin #define SIGNAL_PIN A0 // Arduino Nano ESP32 pin A0 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 } }

※ Notiz:

  • SENSOR_MIN und SENSOR_MAX werden durch den Kalibrierungsprozess bestimmt.
  • Die oben genannte Zuordnungs-Methode ist nicht genau. Sie ist jedoch in vielen Anwendungen akzeptabel.

Kalibrierung des Wasserstandssensors

Siehe wie man den Wasserstandsensor kalibriert

※ Notiz:

In diesem Tutorial wird die Funktion analogRead() verwendet, um Werte von einem ADC (Analog-zu-Digital-Wandler) zu lesen, der an einen Sensor oder eine Komponente angeschlossen ist. Der ADC des Arduino Nano ESP32 eignet sich für Projekte, die keine hohe Genauigkeit erfordern. Für Projekte, die präzise Messungen erfordern, beachten Sie Folgendes:

  • Der ADC des Arduino Nano ESP32 ist nicht völlig genau und erfordert möglicherweise eine Kalibrierung, um korrekte Ergebnisse zu erzielen. Jedes Arduino Nano ESP32-Board kann sich leicht unterscheiden, daher ist eine Kalibrierung für jedes einzelne Board notwendig.
  • Die Kalibrierung kann herausfordernd sein, insbesondere für Anfänger, und führt möglicherweise nicht immer zu den gewünschten exakten Ergebnissen.

Für Projekte, die eine hohe Präzision erfordern, ziehen Sie in Erwägung, einen externen ADC (z. B. ADS1115) mit dem Arduino Nano ESP32 zu verwenden oder einen anderen Arduino zu verwenden, z. B. den Arduino Uno R4 WiFi, der einen zuverlässigereren ADC hat. Wenn Sie dennoch den ADC des Arduino Nano ESP32 kalibrieren möchten, lesen Sie die Dokumentation zum 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!