ESP32 - Regensensor

Dieses Tutorial zeigt Ihnen, wie Sie einen Regensensor mit einem ESP32 und MicroPython verwenden, um Regen oder Schnee zu erkennen. Wir lernen Folgendes:

ESP32 MicroPython Regensensor

Sie können den Code so anpassen, dass er einen Motor oder einen Alarm aktiviert, wenn er Regen oder Schnee erkennt.

Erforderliche Hardware

1×38-pin ESP32 ESP-WROOM-32 Dev Module - Narrow
1×(Alternativ) 38-pin ESP32 ESP-WROOM-32 Dev Module - Wide
1×(Alternativ) 30-pin ESP32 ESP-WROOM-32 Dev Module - Wide
1×(Alternativ) ESP32 Uno-form board
1×(Alternativ) ESP32 S3 Uno-form 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×Regensensor
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 (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 Rain Sensor

Der Regensensor kann die Menge an fallendem Regen oder Schnee erkennen und messen. Er liefert zwei Arten von Ausgangssignalen: ein digitales Signal (LOW oder HIGH) und ein analoges Signal.

Der Regensensor besteht aus zwei Teilen:

  • Der Sensorplatte
  • Dem Elektronikmodul
Regensensor Pinbelegung
image source: diyables.io

Die Sensorplatte

Die Sensorplatte wird im Freien platziert, wo sie Regen oder Schnee ausgesetzt ist, zum Beispiel auf einem Dach. Sie besteht aus mehreren Kupferbahnen, die in zwei Arten unterteilt sind: Versorgungsbahnen und Sensorbahnen. Diese Bahnen bleiben getrennt und verbinden sich nur, wenn Wasser oder Schnee sie berührt. Beide Arten von Bahnen funktionieren identisch, sodass Sie jede Bahn als Versorgungsbahn und eine andere als Sensorbahn festlegen können.

Das Elektronikmodul

Das Elektronikmodul des Regensensors wandelt das Signal der Sensorplatte in eine Form (analog oder digital) um, die der ESP32 auswerten kann. Es hat vier Pins:

  • VCC-Pin: Wird mit VCC verbunden (zwischen 3,3V und 5V).
  • GND-Pin: Wird mit GND verbunden (0V).
  • DO-Pin: Ein digitaler Ausgangspin, der HIGH ist, wenn kein Regen fällt, und LOW, wenn Regen erkannt wird. Mit dem Potentiometer kann die Empfindlichkeit der Regenerkennung eingestellt werden.
  • AO-Pin: Ein analoger Ausgangspin, dessen Ausgangswert sinkt, je mehr Wasser sich auf der Sensorplatte sammelt, und steigt, wenn das Wasser weniger wird.

Das Modul verfügt außerdem über zwei LED-Anzeigen:

  • Eine Betriebsanzeige (PWR-LED), die leuchtet, wenn das Modul mit Strom versorgt wird.
  • Eine Regenstatusanzeige (DO-LED), die mit dem DO-Pin verbunden ist und leuchtet, wenn Regen erkannt wird.

Funktionsweise

Für den DO-Pin:

  • Das Modul enthält ein Potentiometer zur Einstellung der Empfindlichkeit.
  • Wenn die Regenmenge hoch ist, geht der Ausgangspin des Sensors auf LOW, und die DO-LED leuchtet.
  • Wenn die Regenmenge niedrig ist, bleibt der Ausgangspin des Sensors auf HIGH, und die DO-LED bleibt aus.

Für den AO-Pin:

  • Je mehr Wasser die Sensorplatte erfasst, desto kleiner wird der Wert am AO-Pin.
  • Je weniger Wasser die Sensorplatte erfasst, desto größer wird der Wert am AO-Pin.
  • Das Potentiometer beeinflusst den Wert am AO-Pin nicht.

Verdrahtungsdiagramm

Verbinden Sie den VCC-Pin des Sensors mit einem 3,3V- oder 5V-Pin des ESP32. Eine direkte Verbindung kann jedoch die Lebensdauer des Sensors durch elektrochemische Korrosion verkürzen. Verbinden Sie den VCC-Pin stattdessen mit einem programmierbaren Ausgangspin des ESP32, sodass der Sensor nur während der Messung mit Strom versorgt wird. Dieser Ansatz hilft, die elektrochemische Korrosion zu verringern.

  • So verbinden Sie ESP32 und Regensensor mithilfe eines Steckbretts

Das Regensensormodul bietet zwei Ausgänge. Sie können je nach Bedarf einen oder beide verwenden.

ESP32 MicroPython Regensensor Schaltplan

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

So verbinden Sie ESP32 und Regensensor

ESP32 MicroPython Code - Wert vom DO-Pin lesen

/* * Dieser ESP32 MicroPython Code wurde von newbiely.de entwickelt * Dieser ESP32 MicroPython 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-micropython/esp32-micropython-rain-sensor */ from machine import Pin import utime # Import utime for delay functions # Define the pins POWER_PIN = Pin(19, Pin.OUT) # The ESP32 pin GPIO19 provides the power to the rain sensor DO_PIN = Pin(21, Pin.IN) # The ESP32 pin GPIO21 connected to the DO pin of the rain sensor while True: POWER_PIN.value(1) # Turn the rain sensor's power ON utime.sleep_ms(10) # Wait 10 milliseconds rain_state = DO_PIN.value() POWER_PIN.value(0) # Turn the rain sensor's power OFF if rain_state == 1: print("The rain is NOT detected") else: print("The rain is detected") utime.sleep(1) # Pause for 1 second to avoid reading sensors frequently

Schnelle Schritte

Hier finden Sie eine Anleitung, wie Sie Ihren MicroPython-Code auf dem ESP32 mit der Thonny IDE einrichten und ausführen:

  • Stellen Sie sicher, dass Thonny IDE auf Ihrem Computer installiert ist.
  • Vergewissern Sie sich, dass die MicroPython-Firmware auf Ihrem ESP32-Board geladen ist.
  • Wenn Sie zum ersten Mal einen ESP32 mit MicroPython verwenden, lesen Sie die Anleitung ESP32 MicroPython Erste Schritte für eine Schritt-für-Schritt-Anleitung.
  • Verbinden Sie das ESP32-Board gemäß dem bereitgestellten Schaltplan mit dem Regensensor.
  • Verbinden Sie das ESP32-Board mit einem USB-Kabel mit Ihrem Computer.
  • Öffnen Sie Thonny IDE auf Ihrem Computer.
  • Gehen Sie in Thonny IDE zu Tools Options.
  • Wählen Sie im Tab Interpreter aus dem Dropdown-Menü MicroPython (ESP32).
  • Stellen Sie sicher, dass der richtige Port ausgewählt ist. Thonny IDE erkennt ihn normalerweise automatisch, aber möglicherweise müssen Sie ihn manuell auswählen (z. B. COM12 unter Windows oder /dev/ttyACM0 unter Linux).
  • Kopieren Sie den bereitgestellten MicroPython-Code und fügen Sie ihn in den Editor von Thonny ein.
  • Speichern Sie den Code auf Ihrem ESP32:
    • Klicken Sie auf den Save-Button oder drücken Sie Ctrl+S.
    • Wählen Sie im Speicherdialog MicroPython device.
    • Nennen Sie die Datei main.py.
  • Klicken Sie auf den grünen Run-Button (oder drücken Sie F5), um das Skript auszuführen.
  • Geben Sie einige Wassertropfen auf den Regensensor. Verwenden Sie kein reines Wasser.
  • Sehen Sie sich die Meldung in der Shell unten in Thonny an.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot 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
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡

Bitte beachten Sie: Wenn die LED ständig leuchtet oder selbst bei Regen aus bleibt, passen Sie die Empfindlichkeit des Sensors durch Drehen am Potentiometer an.

ESP32 MicroPython Code - Wert vom AO-Pin lesen

/* * Dieser ESP32 MicroPython Code wurde von newbiely.de entwickelt * Dieser ESP32 MicroPython 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-micropython/esp32-micropython-rain-sensor */ from machine import Pin, ADC import utime # Import utime for delay functions # Define the pins POWER_PIN = Pin(19, Pin.OUT) # The ESP32 pin GPIO19 provides the power to the rain sensor AO_PIN = ADC(Pin(36)) # The ESP32 pin GPIO36 (ADC0) for reading analog input (corresponds to ADC2) # Set the ADC width (resolution) to 12 bits AO_PIN.width(ADC.WIDTH_12BIT) # Set the attenuation to 11 dB, allowing input range up to ~3.3V AO_PIN.atten(ADC.ATTN_11DB) while True: POWER_PIN.value(1) # Turn the rain sensor's power ON utime.sleep_ms(10) # Wait 10 milliseconds rain_value = AO_PIN.read() # Read the analog value from the sensor POWER_PIN.value(0) # Turn the rain sensor's power OFF print(rain_value) # Print out the analog value utime.sleep(1) # Pause for 1 second to avoid reading sensors frequently

Schnelle Schritte

  • Kopieren Sie den Code und öffnen Sie ihn in Thonny IDE.
  • Klicken Sie auf den grünen Run-Button (oder drücken Sie F5), um das Skript auszuführen. Das Skript wird ausgeführt.
  • Geben Sie etwas Wasser auf den Regensensor.
  • Sehen Sie sich die Meldung in der Shell unten in Thonny an.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot 900 9711 944 2253 2750 3838 3902 4038 4070 4215 4315 3366 2974 1761 1116
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡

※ Notiz:

Dieses Tutorial zeigt, wie Sie mit der Funktion adc.read() Werte von einem ADC (Analog-Digital-Wandler) auslesen, der mit einem Regensensor verbunden ist. Der ADC des ESP32 eignet sich für Projekte, die keine hohe Präzision erfordern. Wenn Ihr Projekt jedoch genaue Messungen benötigt, beachten Sie Folgendes:

  • Der ESP32-ADC ist nicht perfekt genau und muss für präzise Ergebnisse möglicherweise kalibriert werden. Jedes ESP32-Board kann leicht abweichen, daher ist eine Kalibrierung für jedes einzelne Board erforderlich.
  • Die Kalibrierung kann schwierig sein, besonders für Anfänger, und liefert möglicherweise nicht immer genau die gewünschten Ergebnisse.

Für Projekte, die hohe Präzision erfordern, sollten Sie einen externen ADC (z. B. ADS1115) mit dem ESP32 verwenden oder einen Arduino wählen, der einen zuverlässigeren ADC hat. Wenn Sie den ESP32-ADC dennoch kalibrieren möchten, lesen Sie 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!