ESP32 - Regen-Sensor

Der Regensensor ist in der Lage, das Niveau von Regen bzw. Schnee zu erkennen und zu messen. Der Regensensor liefert zwei Ausgänge: einen digitalen Ausgang (LOW/HIGH) und einen analogen Ausgang.

In diesem Tutorial werden wir lernen, wie man einen ESP32 und einen Regensensor verwendet, um Regen zu erkennen und zu messen. Genauer gesagt werden wir Folgendes behandeln:

ESP32-Regensensor

Anschließend können Sie den Code so ändern, dass ein Motor oder eine Warnung aktiviert wird, wenn Regen oder Schnee erkannt wird.

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×Regensensor
1×Breadboard
1×Verbindungskabel
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 Regensensor

Der Regensensor kann verwendet werden, um das Vorhandensein von Regen zu erkennen oder den durch den Regen verursachten Wasserstand zu messen. Der Regensensor bietet zwei Ausgabemöglichkeiten über einen digitalen Ausgangspin und einen analogen Ausgangspin.

Der Regensensor besteht aus zwei Teilen:

  • Die Sensorauflage
  • Das elektronische Modul
Regensensor-Pinbelegung
image source: diyables.io

Das Sensor-Pad

Die Sensorplatte wird außen platziert und kann Regen oder Schnee ausgesetzt sein (z. B. auf dem Dach). Die Sensorplatte verfügt über eine Reihe freiliegender Kupferbahnen, die in zwei Gruppen unterteilt sind: Leistungsbahnen und Messspuren. Diese Leistungsbahnen und Messspuren sind nicht verbunden, es sei denn, sie werden durch Wasser oder Schnee überbrückt. Es gibt keinen Unterschied zwischen der Leistungsbahn und der Messspur. Sie können eine als Leistungsbahn wählen und die andere wird zur Messspur.

Das elektronische Modul

Das elektronische Modul des Regensensors wandelt das Signal vom Sensorpad in einen analogen oder digitalen Wert um, der vom ESP32 gelesen werden kann. Es umfasst vier Pins:

  • VCC-Pin: Es muss mit VCC verbunden werden (3,3 V bis 5 V).
  • GND-Pin: Es muss mit GND verbunden werden (0 V).
  • DO-Pin: Es ist ein digitaler Ausgangspin. Es ist HIGH, wenn kein Regen erkannt wird und LOW, wenn Regen erkannt wird. Der Schwellwert für die Regen-Erkennung kann mithilfe eines eingebauten Potentiometers angepasst werden.
  • AO-Pin: Es ist ein analoger Ausgangspin. Der Ausgangswert sinkt, wenn mehr Wasser im Sensorpad vorhanden ist, und steigt, wenn weniger Wasser im Sensorpad vorhanden ist.

Außerdem verfügt es über zwei LED-Anzeigen:

  • Ein PWR-LED-Indikator für die Stromversorgung.
  • Ein DO-LED-Indikator für den Regenstatus am DO-Pin: Er leuchtet, wenn Regen vorhanden ist.

Wie es funktioniert

Für den DO-Pin:

  • Das Modul verfügt über ein integriertes Potentiometer zur Einstellung des Schwellenwerts (Empfindlichkeit).
  • Wenn die Intensität den Schwellenwert überschreitet, wird der Regen erkannt, der Ausgangspin des Sensors ist LOW, und die DO-LED ist eingeschaltet.
  • Wenn die Intensität unter dem Schwellenwert liegt, wird der Regen NICHT erkannt, der Ausgangspin des Sensors ist HIGH, und die DO-LED ist ausgeschaltet.

Für den AO-Pin:

  • Je mehr Wasser im Sensorpad vorhanden ist, desto niedriger ist der am AO-Pin abgelesene Wert.
  • Je weniger Wasser im Sensorpad vorhanden ist, desto höher ist der am AO-Pin abgelesene Wert.

Beachten Sie, dass das Potentiometer den Wert am AO-Pin nicht beeinflusst.

Verdrahtungsdiagramm

Wie oben erwähnt, sollte der VCC-Pin des Sensors mit 3,3 V oder 5 V verbunden werden. Wenn wir diesen Pin direkt mit dem 3,3-V- oder 5-V-Pin des ESP32 verbinden, verkürzt sich die Lebensdauer des Sensors aufgrund elektrochemischer Korrosion. Der beste Weg ist es, den VCC-Pin des Regen-Sensors an einen Ausgangspin des ESP32 anzuschließen. Wir können diesen Pin so programmieren, dass der Regen-Sensor nur beim Auslesen mit Strom versorgt wird. Dies kann den Einfluss der elektrochemischen Korrosion minimieren.

Da das Regen-Sensor-Modul zwei Ausgänge hat, können Sie je nach Bedarf entscheiden, ob Sie einen oder beide davon verwenden möchten.

  • Wie man ESP32 und Regensensor mit Steckbrett verbindet

Das Regensensor-Modul bietet zwei Ausgänge. Sie können je nach Bedarf entweder einen der beiden Ausgänge oder beide verwenden.

ESP32-Regen-Sensor-Verdrahtungsdiagramm

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 mit einem Regen-Sensor.

ESP32-Code - Wert vom DO-Pin 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-rain-sensor */ #define POWER_PIN 19 // ESP32's pin GPIO19 that provides the power to the rain sensor #define DO_PIN 21 // ESP32's pin GPIO21 connected to DO pin of the rain sensor void setup() { // initialize serial communication Serial.begin(9600); // initialize the Arduino's pin as an input pinMode(POWER_PIN, OUTPUT); // configure the power pin pin as an OUTPUT pinMode(DO_PIN, INPUT); } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the rain sensor's power ON delay(10); // wait 10 milliseconds int rain_state = digitalRead(DO_PIN); digitalWrite(POWER_PIN, LOW); // turn the rain sensor's power OFF if (rain_state == HIGH) Serial.println("The rain is NOT detected"); else Serial.println("The rain is detected"); delay(1000); // pause for 1 sec to avoid reading sensors frequently to prolong the sensor lifetime }

Schnelle Schritte

  • Falls dies das erste Mal ist, dass Sie ESP32 verwenden, sehen Sie sich wie man die Umgebung für ESP32 in der Arduino IDE einrichtet an.
  • Kopieren Sie den obigen Code und öffnen Sie ihn in der Arduino IDE.
  • Klicken Sie in der Arduino IDE auf die Upload-Schaltfläche, um den Code auf den ESP32 hochzuladen.
  • Gießen Sie etwas Wasser auf den Regensensor.
  • Sehen Sie das Ergebnis im Serial Monitor.
COM6
Send
The rain is NOT detected The rain is NOT detected The rain is NOT detected The rain is detected The rain is detected The rain is detected The rain is detected The rain is detected The rain is NOT detected The rain is NOT detected The rain is NOT detected
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Bitte beachten Sie, dass Sie das Potentiometer einstellen können, um die Empfindlichkeit des Sensors fein abzustimmen, falls Ihnen auffällt, dass der LED-Status dauerhaft eingeschaltet bleibt oder ausgeschaltet bleibt, auch wenn der Sensor dem Regen ausgesetzt ist.

ESP32-Code - Wert vom AO-Pin 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-rain-sensor */ #define POWER_PIN 19 // ESP32's pin GPIO19 that provides the power to the rain sensor #define AO_PIN 36 // ESP32's pin GPIO36 connected to AO pin of the rain sensor void setup() { // initialize serial communication Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); pinMode(POWER_PIN, OUTPUT); // configure the power pin pin as an OUTPUT } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the rain sensor's power ON delay(10); // wait 10 milliseconds int rain_value = analogRead(AO_PIN); digitalWrite(POWER_PIN, LOW); // turn the rain sensor's power OFF Serial.println(rain_value); // print out the analog value delay(1000); // pause for 1 sec to avoid reading sensors frequently to prolong the sensor lifetime }

Schnelle Schritte

  • Kopiere den obigen Code und öffne ihn mit der Arduino IDE
  • Klicke auf die Hochladen-Schaltfläche in der Arduino IDE, um den Code auf den ESP32 hochzuladen
  • Gieße etwas Wasser auf den Regen-Sensor
  • Sieh dir das Ergebnis im Seriellen Monitor an
COM6
Send
225 2426 236 563 687 959 975 1009 1017 1053 1078 841 743 440 279
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Notiz:

Diese Anleitung verwendet die analogRead()-Funktion, um Werte von einem ADC (Analog-zu-Digital-Wandler) zu lesen, der an einen Regensensor angeschlossen ist. Der ESP32-ADC ist gut geeignet für Projekte, die keine hohe Genauigkeit benötigen. Für Projekte, die präzise Messungen benötigen, beachten Sie bitte:

  • Der ESP32-ADC ist nicht völlig genau und könnte eine Kalibrierung für korrekte Ergebnisse benötigen. Jede ESP32-Platine 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 gewünschten exakten Ergebnisse.

Für Projekte, die eine hohe Präzision benötigen, ziehen Sie in Erwägung, einen externen ADC (z. B. ADS1115) mit dem ESP32 zu verwenden oder einen Arduino zu verwenden, der einen zuverlässigeren ADC hat. 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!