Arduino Nano ESP32 - Regensensor

Der Regensensor kann Regen- oder Schneefall erkennen und die Niederschlagsmenge messen. Der Regensensor liefert zwei Ausgänge: einen digitalen Ausgang (LOW/HIGH) und einen analogen Ausgang.

In diesem Tutorial lernen wir, wie man ein Arduino Nano ESP32 und einen Regensensor verwendet, um den Regen zu erkennen und zu messen. Konkret werden wir Folgendes behandeln:

ESP32-Regensensor

Anschließend können Sie den Code ändern, um einen Motor oder eine Warnung zu aktivieren, wenn Regen oder Schnee erkannt wird.

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

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

Der Regensensor besteht aus zwei Teilen:

  • Das Sensorpad
  • Das elektronische Modul
Pinbelegung des Regensensors
image source: diyables.io

Die Sensorplatte

Das Sensorpad wird außen platziert und ist dem Regen und Schnee ausgesetzt (z. B. auf dem Dach). Das Sensorpad verfügt über eine Reihe offener Kupferbahnen, die in zwei Gruppen unterteilt sind: Leistungsbahnen und Messbahnen. Diese Leistungsbahnen und Messbahnen sind nicht miteinander verbunden, es sei denn, sie werden durch Wasser oder Schnee überbrückt. Es gibt keinen Unterschied zwischen der Leistungsbahn und der Messbahn. Sie können eine als Leistungsbahn auswählen und die andere wird zur Messbahn.

Das elektronische Modul

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

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

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

  • Eine PWR-LED-Anzeige für die Stromversorgung.
  • Eine DO-LED-Anzeige für den Regenzustand am DO-Pin: Die DO-LED-Anzeige 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 Regen erkannt, der Ausgangspin des Sensors ist LOW, und die DO-LED ist an.
  • Wenn die Intensität unterhalb des Schwellenwerts liegt, wird kein Regen erkannt, der Ausgangspin des Sensors ist HIGH, und die DO-LED ist aus.

Für den AO-Pin:

  • Je mehr Wasser sich im Sensorpad befindet, desto niedriger ist der vom AO-Pin gelesene Wert.
  • Je weniger Wasser sich im Sensorpad befindet, desto höher ist der vom AO-Pin gelesene 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 der 3,3-V- oder 5-V-Versorgung verbunden werden. Wenn wir diesen Pin direkt mit dem 3,3-V- oder 5-V-Pin des ESP32 verbinden, wird die Lebensdauer des Sensors aufgrund elektrochemischer Korrosion verkürzt. Der beste Weg besteht darin, den VCC-Pin des Regensensors an einen Ausgangspin des ESP32 anzuschließen. Wir können diesen Pin so programmieren, dass er den Regensensor nur beim Auslesen mit Strom versorgt. Dadurch kann der Einfluss der elektrochemischen Korrosion minimiert werden.

Da das Regensensor-Modul zwei Ausgänge hat, können Sie je nach Bedarf einen oder beide davon verwenden.

  • Der Schaltplan zwischen dem Arduino Nano ESP32 und dem Regensensor, wenn nur DO verwendet wird.
Arduino Nano ESP32 Regen-Sensor-Verdrahtungsdiagramm

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

  • Der Schaltplan zwischen dem Arduino Nano ESP32 und dem Regensensor, wenn nur AO verwendet wird.
Arduino Nano ESP32 Regen-Erkennung Schaltplan

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

  • Das Verdrahtungsdiagramm zwischen dem Arduino Nano ESP32 und dem Regensensor, wenn beide AO und DO verwendet werden.
Arduino Nano ESP32 Regenmelder-Schaltplan

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

Arduino Nano ESP32-Code – Wert vom Digitalausgangspin lesen

/* * 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-rain-sensor */ #define POWER_PIN D5 // The Arduino Nano ESP32 pin that provides the power to the rain sensor #define DO_PIN D9 // The Arduino Nano ESP32 pin connected to DO pin of the rain sensor void setup() { // Initialize the Serial to communicate with the Serial Monitor. Serial.begin(9600); // initialize theArduino Nano ESP32 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

  • Wenn Sie Arduino Nano ESP32 zum ersten Mal verwenden, lesen Sie wie man die Umgebung für Arduino Nano ESP32 in der Arduino IDE einrichtet
  • Kopieren Sie den obigen Code und öffnen Sie ihn mit der Arduino IDE
  • Klicken Sie auf die Hochladen-Schaltfläche in der Arduino IDE, um den Code auf den Arduino Nano ESP32 hochzuladen
  • Gießen Sie etwas Wasser auf den Regensensor
  • Sehen Sie sich das Ergebnis im Serial Monitor an
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, falls Ihnen auffällt, dass der LED-Status ständig eingeschaltet bleibt oder auch dann ausgeschaltet ist, wenn der Sensor dem Regen ausgesetzt ist, das Potentiometer einstellen können, um die Empfindlichkeit des Sensors fein abzustimmen.

Arduino Nano ESP32-Code - Wert vom AO-Pin lesen

/* * 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-rain-sensor */ #define POWER_PIN D5 // The Arduino Nano ESP32 pin that provides the power to the rain sensor #define AO_PIN A0 // The Arduino Nano ESP32 pin connected to AO pin of the rain sensor void setup() { // Initialize the Serial to communicate with the Serial Monitor. 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 in der Arduino IDE auf die Upload-Schaltfläche, um den Code auf den Arduino Nano ESP32 hochzuladen.
  • Gieße etwas Wasser auf den Regensensor.
  • Schau dir das Ergebnis im Serial 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:

In diesem Tutorial wird die Funktion analogRead() verwendet, um Werte von einem ADC (Analog-Digital-Wandler) zu lesen, der an einen Sensor oder eine Komponente angeschlossen ist.

Der ADC des Arduino Nano ESP32 ist für Projekte geeignet, die keine hohe Genauigkeit erfordern. Allerdings sollten Sie bei Projekten, die präzise Messungen erfordern, Folgendes beachten:

  • Der ADC des Arduino Nano ESP32 ist nicht ganz exakt und könnte eine Kalibrierung für korrekte Ergebnisse erfordern. Jedes Arduino Nano ESP32-Board kann sich leicht unterscheiden, daher ist eine Kalibrierung für jedes einzelne Board notwendig.
  • Die Kalibrierung kann herausfordernd sein, besonders für Anfänger, und liefert möglicherweise nicht immer die exakten Ergebnisse, die Sie wünschen.

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 nutzen, wie z. B. den Arduino Uno R4 WiFi, der einen zuverlässigeren ADC besitzt.

Wenn Sie den ADC des Arduino Nano ESP32 dennoch kalibrieren möchten, beziehen Sie sich auf den 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!