ESP8266 - Wassersensor

Dieses Tutorial erklärt dir, wie man den Wassersensor mit dem ESP8266 verwendet. Wir werden lernen:

Erforderliche Hardware

1×ESP8266 NodeMCU
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×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP8266
1×(Empfohlen) Stromverteiler für ESP8266 Typ-C

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 Wasserstandssensor

Pinbelegung des Wasserstandssensors

Der Wasserstandssensor hat drei Pins:

  • Der S (Signal)-Pin ist ein analoger Ausgang, der an einen der analogen Eingänge Ihres ESP8266 angeschlossen werden sollte.
  • Der + (VCC) Pin versorgt den Sensor mit Strom, und es wird empfohlen, eine Spannung von 3,3 V bis 5 V zu verwenden.
  • Der - (GND) Pin ist eine Masseverbindung.
Wassersensor-Pinbelegung

Wie funktioniert ein Wasserstandssensor?

Kurz gesagt steigt die Ausgangsspannung am Signalausgangspin, je mehr Wasser dem Sensor ausgesetzt ist.

Lass uns genauer hinschauen.

Dieser Abschnitt widmet sich vertieftem Wissen. Machen Sie sich KEINE Sorgen, wenn Sie es nicht verstehen. Überspringen Sie diesen Abschnitt, wenn er Sie überfordert, und kommen Sie an einem anderen Tag zurück. Lesen Sie weiter mit den folgenden Abschnitten.

Der Sensor besitzt zehn freiliegende Kupferbahnen, von denen fünf als Strombahnen und die anderen fünf als Messbahnen dienen. Die Bahnen sind parallel angeordnet, wobei zwischen je zwei Strombahnen jeweils eine Messbahn liegt. Solange sie nicht in Wasser eingetaucht sind, sind diese Bahnen nicht verbunden.

Die Leiterbahnen wirken wie ein variabler Widerstand (genau wie ein Potentiometer), dessen Widerstand sich entsprechend dem Wasserstand ändert:

  • Der Widerstand der Spuren ist umgekehrt proportional zur Wassertiefe.
  • Je mehr Wasser der Sensor eingetaucht ist, desto besser ist die Leitfähigkeit, was zu einem niedrigeren Widerstand führt.
  • Je weniger Wasser der Sensor eingetaucht ist, desto schlechter ist die Leitfähigkeit, was zu einem höheren Widerstand führt.
  • Die Ausgangsspannung des Sensors wird durch den Widerstand bestimmt.

Die Messung der Spannung kann verwendet werden, um den Wasserstand festzustellen.

Verdrahtungsdiagramm

Theoretisch können die VCC- und GND-Pins des Sensors jeweils an die 5V- bzw. GND-Pins des ESP8266 angeschlossen werden, um den Sensor mit Strom zu versorgen.

Es wird jedoch nicht empfohlen, diese Methode in der Praxis anzuwenden. Wenn die Umgebung feucht ist, führt dies dazu, dass der Sensor ständig mit Strom versorgt wird und elektrochemisch schneller korrodiert, wodurch seine Lebensdauer verkürzt wird. Um dies zu verhindern, schlagen wir vor, den Sensor nur dann mit Strom zu versorgen, wenn Sie seinen Wert auslesen müssen. Dies lässt sich erreichen, indem der VCC-Pin des Sensors mit einem digitalen Pin eines ESP8266 verbunden wird und der Pin des Arduino vor dem Auslesen auf HIGH gesetzt und danach auf LOW gesetzt wird.

ESP8266 NodeMCU-Wassersensor-Schaltplan

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

Weitere Informationen finden Sie unter ESP8266-Pinbelegung und wie man ESP8266 und andere Komponenten mit Strom versorgt.

ESP8266-Code - Wert vom Wassersensor auslesen

/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU 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/esp8266/esp8266-water-sensor */ #define POWER_PIN D7 #define SIGNAL_PIN A0 int value = 0; // Variable zum Speichern des Sensorwerts void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // Konfiguriere den D7-Pin als OUTPUT digitalWrite(POWER_PIN, LOW); // Sensor ausschalten } void loop() { digitalWrite(POWER_PIN, HIGH); // Sensor einschalten delay(10); // Warte 10 Millisekunden value = analogRead(SIGNAL_PIN); // Lese den analogen Wert vom Sensor digitalWrite(POWER_PIN, LOW); // Sensor ausschalten Serial.print("Sensor value: "); Serial.println(value); delay(1000); }

Schnelle Schritte

Um mit ESP8266 in der Arduino-IDE zu beginnen, befolgen Sie diese Schritte:

  • Schau dir das Tutorial zur Einrichtung der Entwicklungsumgebung für ESP8266 in der Arduino IDE an, falls du ESP8266 zum ersten Mal verwendest.
  • Verbinde die Komponenten gemäß dem Diagramm.
  • Schließe das ESP8266-Board mit einem USB-Kabel an deinen Computer an.
  • Öffne die Arduino IDE auf deinem Computer.
  • Wähle das richtige ESP8266-Board, zum Beispiel NodeMCU 1.0 (ESP-12E Module), und den jeweiligen COM-Port.
  • Kopiere den Code und öffne ihn mit der Arduino IDE.
  • Klicke auf die Schaltfläche Upload in der Arduino IDE, um den Code zu kompilieren und auf den ESP8266 hochzuladen.
  • Senke den Sensor vorsichtig in ein Glas Wasser.
  • Schau dir das Ergebnis im seriellen Monitor an; der Wert sollte 0 sein, wenn der Sensor keinen Kontakt zu irgendetwas hat.
COM6
Send
Sensor value: 0 Sensor value: 0 Sensor value: 0 Sensor value: 25 Sensor value: 97 Sensor value: 284 Sensor value: 428 Sensor value: 435 Sensor value: 441 Sensor value: 455 Sensor value: 467 Sensor value: 521 Sensor value: 528 Sensor value: 553
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Notiz:

Der Sensor sollte nicht vollständig eingetaucht werden; nur die freiliegenden Leiterbahnen auf der Leiterplatte sollten mit Wasser in Berührung kommen. Bitte achten Sie beim Installieren darauf.

Wie man Wasserleckagen erkennt

Um Wasserleckage, Regenfall und Tanküberlauf zu identifizieren, müssen wir lediglich den Messwert mit einem Schwellenwert vergleichen, der im Kalibrierungsabschnitt dieses Tutorials festgelegt wird.

Betrachten wir einen bestimmten Fall. Wenn Wasser erkannt wird, aktiviert der ESP8266 eine LED.

Schaltplan

ESP8266 NodeMCU Wassersensor LED-Schaltplan

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

ESP8266-Code – Erkennung von Wasserleckagen

/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU 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/esp8266/esp8266-water-sensor */ #define LED_PIN D2 #define POWER_PIN D7 #define SIGNAL_PIN A0 #define THRESHOLD 300 int value = 0; // Variable zum Speichern des Sensorwertes void setup() { Serial.begin(9600); pinMode(LED_PIN, OUTPUT); // D2-Pin als Ausgang konfigurieren pinMode(POWER_PIN, OUTPUT); // D7-Pin als Ausgang konfigurieren digitalWrite(POWER_PIN, LOW); // Sensor AUS schalten digitalWrite(LED_PIN, LOW); // LED AUS schalten } void loop() { digitalWrite(POWER_PIN, HIGH); // Sensor EIN schalten delay(10); // Warte 10 Millisekunden value = analogRead(SIGNAL_PIN); // Lese den analogen Wert vom Sensor digitalWrite(POWER_PIN, LOW); // Sensor AUS schalten if (value > THRESHOLD) { Serial.print("The water is detected"); digitalWrite(LED_PIN, HIGH); // LED EIN schalten } else { digitalWrite(LED_PIN, LOW); // LED AUS schalten } }

Wie man den Wasserstand misst

Wenn Sie den aktuellen Wasserstand messen möchten, indem Sie die maximale Höhe in verschiedene Stufen unterteilen, kann der folgende Code verwendet werden. Beachten Sie, dass die maximale Höhe des Wassers der Höhe des Sensors entspricht. Dieser Code teilt die maximale Höhe in vier Stufen auf.

/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU 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/esp8266/esp8266-water-sensor */ #define POWER_PIN 7 #define SIGNAL_PIN A5 #define SENSOR_MIN 0 #define SENSOR_MAX 521 int value = 0; // Variable zum Speichern des Sensorwerts int level = 0; // Variable zum Speichern des Wasserstands void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // D7-Pin als OUTPUT konfigurieren digitalWrite(POWER_PIN, LOW); // Sensor ausschalten } void loop() { digitalWrite(POWER_PIN, HIGH); // Sensor einschalten delay(10); // Warte 10 Millisekunden value = analogRead(SIGNAL_PIN); // Lese den analogen Wert vom Sensor aus digitalWrite(POWER_PIN, LOW); // Sensor ausschalten level = map(value, SENSOR_MIN, SENSOR_MAX, 0, 4); // 4 Stufen Serial.print("Water level: "); Serial.println(level); delay(1000); }

※ Notiz:

  • SENSOR_MIN und SENSOR_MAX werden durch den Kalibrierungsprozess bestimmt.
  • Die oben erwähnte Zuordungsmethode ist nicht präzise. Dennoch ist sie für viele Anwendungen geeignet. Wenn Sie die Ergebnisse genauer machen möchten, können Sie die Schwellenwerte für jede Stufe messen. Für weitere Informationen verweisen Sie bitte auf den Kalibrierungsabschnitt am Ende dieses Tutorials.

Kalibrierung des Wasserstandssensors

Der Ausgangswert des Sensors wird von zwei Faktoren bestimmt: der Wasserstand und die Leitfähigkeit des Wassers. Reines Wasser ist nicht leitfähig; jedoch wird es leitfähig, wenn Mineralien und Verunreinigungen vorhanden sind. Je leitfähiger das Wasser ist, desto höher ist die Empfindlichkeit des Sensors. Zusätzlich wird der Ausgangswert auch durch die dem VCC-Pin des Sensors zugeführte Spannung beeinflusst.

Für genaue Messwerte des Wassersensors empfehlen wir, ihn auf den jeweiligen Wassertyp zu kalibrieren, den Sie überwachen möchten.

Bevor der Schwellenwert zur Auslösung einer Aktion festgelegt wird, ist es notwendig, den tatsächlich vom Sensor durch einen Test erhaltenen Wert zu messen.

Anweisungen zum Test:

  • Verwenden Sie den oben bereitgestellten Sketch, um den Sensorwert auszulesen.
  • Tauchen Sie den Sensor ins Wasser ein und stellen Sie sicher, dass er sich am gewünschten Schwellenwert befindet.
  • Notieren Sie den vom Sensor ausgegebenen Wert im Serial Monitor.
  • Verwenden Sie diesen Wert als Schwellenwert, um eine bestimmte Aktion auszulösen.

Es kann notwendig sein, ein wenig zu experimentieren, um diesen Test abzuschließen.

Der Test kann auch dazu verwendet werden, zu entdecken:

  • SENSOR_MIN-Wert, wenn der Sensor nicht in die Flüssigkeit eingetaucht ist
  • SENSOR_MAX-Wert, wenn der Sensor vollständig in die Flüssigkeit eingetaucht ist
  • Ein Grenzwert zur Erkennung von Wasserleckagen
  • Die Grenzwerte für jede Stufe Ihrer Gradskala

※ Notiz:

Dieses Tutorial verwendet die Funktion analogRead(), um Daten von einem ADC (Analog-Digital-Wandler) zu erhalten, der mit einem Sensor oder einem anderen Bauteil verbunden ist. Der ADC des ESP8266 funktioniert gut für Projekte, bei denen man keine sehr präzisen Messwerte benötigt. Aber denken Sie daran, der ADC des ESP8266 ist nicht sehr genau für detaillierte Messungen. Wenn Ihr Projekt sehr präzise sein muss, möchten Sie möglicherweise einen separaten ADC wie den ADS1115 mit dem ESP8266 verwenden, oder einen Arduino wie den Arduino Uno R4 WiFi verwenden, der einen zuverlässigeren ADC besitzt.

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.

Fordere dich heraus

  • Beim Erkennen eines Wasserlecks,
  • Eine E-Mail senden,
  • Eine SMS-Nachricht senden,
  • Und einen akustischen Alarm auslösen.

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