ESP32 - Bodenfeuchtesensor

Dieses Tutorial zeigt Ihnen, wie Sie einen Feuchtigkeitssensor mit dem ESP32 und MicroPython verwenden. Im Einzelnen lernen wir:

ESP32 MicroPython Bodenfeuchtesensor

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×Kapazitiver Bodenfeuchtigkeitssensor
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.

Kaufhinweis: Viele kapazitive Bodenfeuchtigkeitssensoren auf dem Markt sind von geringer Qualität, unabhängig von der Version. Wir empfehlen dringend den Kauf des Sensors mit TLC555I-Chip von der Marke DIYables über den obigen Link. Wir haben ihn getestet und er funktionierte gut.

Überblick über Soil Moisture Sensor Sensor

kapazitiver Feuchtigkeitssensor vs. resistiver Feuchtigkeitssensor

Es gibt zwei Arten von Feuchtigkeitssensoren:

  • Resistiver Feuchtigkeitssensor
  • Kapazitiver Feuchtigkeitssensor

Beide Sensoren messen die Bodenfeuchte, funktionieren aber unterschiedlich. Wir empfehlen dringend, aus folgenden Gründen den kapazitiven Feuchtigkeitssensor zu verwenden:

  • Der resistive Feuchtigkeitssensor rostet mit der Zeit. Das passiert, weil zwischen seinen Sonden ein elektrischer Strom fließt, der Korrosion verursacht.
  • Der kapazitive Feuchtigkeitssensor rostet mit der Zeit NICHT. Seine Teile sind geschützt, und zwischen ihnen fließt kein elektrischer Strom.

Das folgende Bild zeigt den Rost an einem resistiven Bodenfeuchtesensor.

korrodierter resistiver Bodenfeuchtesensor

Der Rest dieser Anleitung konzentriert sich auf die Verwendung des kapazitiven Bodenfeuchtesensors.

Pinbelegung des kapazitiven Bodenfeuchtesensors

Ein kapazitiver Bodenfeuchtesensor hat drei Pins:

  • GND-Pin: mit GND (0V) verbinden
  • VCC-Pin: mit VCC (5V oder 3,3V) verbinden
  • AOUT-Pin: gibt ein Signal aus, das sich mit der Bodenfeuchte ändert. Mit dem analogen Eingang eines ESP32 verbinden.
Pinbelegung kapazitiver Bodenfeuchtesensor

Funktionsweise

Je mehr Wasser sich im Boden befindet, desto niedriger ist die Spannung am AOUT-Pin.

Verdrahtungsdiagramm

  • So verbinden Sie ESP32 und Bodenfeuchtesensor mithilfe eines Steckbretts
ESP32 MicroPython Bodenfeuchtesensor Schaltplan

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

So verbinden Sie ESP32 und Bodenfeuchtesensor

ESP32 MicroPython Code

/* * 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-soil-moisture-sensor */ from machine import ADC, Pin import time AOUT_PIN = 36 # The ESP32 pin GPIO36 (ADC0) connected to the moisture sensor # Initialize the analog pin for reading moisture_sensor = ADC(Pin(AOUT_PIN)) # Set the ADC width (resolution) to 12 bits moisture_sensor.width(ADC.WIDTH_12BIT) # Set the attenuation to 11 dB, allowing input range up to ~3.3V moisture_sensor.atten(ADC.ATTN_11DB) # Infinite loop while True: value = moisture_sensor.read() # Read the moisture level from the sensor print("Moisture: {}".format(value)) # Print the 12-bit moisture level to the serial monitor time.sleep(0.5) # Pause the loop for 500 milliseconds

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 Bodenfeuchtesensor.
  • 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.
  • Stecken Sie den Sensor in die Erde und gießen Sie sie, oder tauchen Sie ihn langsam in eine Tasse Salzwasser.
  • Sehen Sie sich die Meldung in der Shell unten in Thonny an.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot Moisture: 2223 Moisture: 2255 Moisture: 2279 Moisture: 2313 Moisture: 2350 Moisture: 2383 Moisture: 2395 Moisture: 1260 Moisture: 1325 Moisture: 1271 Moisture: 1261 Moisture: 1254 Moisture: 1261 Moisture: 1264 Moisture: 1360 Moisture: 1258 Moisture: 1263 Moisture: 1266 Moisture: 1258 Moisture: 1239 Moisture: 1264 Moisture: 1307 Moisture: 1488
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡

※ Notiz:

  • Verwenden Sie zum Testen kein reines Wasser, da es keinen Strom leitet und die Sensorwerte nicht beeinflusst.
  • Die Sensorwerte werden nie null sein. Es ist normal, dass die Werte zwischen 1200 und 2300 liegen, dies kann sich aber je nach Faktoren wie der Einstecktiefe des Sensors, der Art des Bodens oder Wassers und der Versorgungsspannung ändern.
  • Halten Sie den Schaltungsteil (oben am Sensor) aus der Erde oder dem Wasser heraus, um eine Beschädigung des Sensors zu vermeiden.

Kalibrierung des kapazitiven Bodenfeuchtesensors

Die Messwerte des Sensors ändern sich je nach Bodenart und Wassergehalt. Um ihn korrekt zu verwenden, müssen wir einen Schwellenwert festlegen, der anzeigt, ob der Boden nass oder trocken ist.

Schritte zur Kalibrierung:
  1. Führen Sie den bereitgestellten Code auf dem ESP32 aus.
  2. Stecken Sie den Feuchtigkeitssensor in die Erde.
  3. Geben Sie nach und nach Wasser in die Erde.
  4. Beobachten Sie die Meldung in der Shell unten in Thonny.
  5. Notieren Sie den Wert, wenn der Boden von trocken zu nass wechselt. Dieser Wert wird als THRESHOLD bezeichnet.

Feststellen, ob der Boden nass oder trocken ist

Aktualisieren Sie nach der Kalibrierung den notierten THRESHOLD-Wert in diesem neuen Code. Dieser Code stellt fest, ob der Boden nass oder trocken ist.

/* * 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-soil-moisture-sensor */ from machine import ADC, Pin import time AOUT_PIN = 36 # The ESP32 pin GPIO36 (ADC0) connected to the moisture sensor THRESHOLD = 1500 # Set threshold value for moisture level # Initialize the analog pin for reading moisture_sensor = ADC(Pin(AOUT_PIN)) # Set the ADC width (resolution) to 12 bits moisture_sensor.width(ADC.WIDTH_12BIT) # Set the attenuation to 11 dB, allowing input range up to ~3.3V moisture_sensor.atten(ADC.ATTN_11DB) # Infinite loop while True: value = moisture_sensor.read() # Read the moisture level from the sensor if value_12bit > THRESHOLD: # Compare sensor reading to threshold print("The soil is DRY ({})".format(value_12bit)) # Print dry status if above threshold else: print("The soil is WET ({})".format(value_12bit)) # Print wet status if below threshold time.sleep(0.5) # Wait for half a second before next read

Sehen Sie sich die Meldung in der Shell unten in Thonny an.

Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot The soil is DRY (2124) The soil is DRY (2000) The soil is DRY (1864) The soil is DRY (1588) The soil is DRY (1556) The soil is WET (1484) The soil is WET (1452) The soil is WET (1368) The soil is WET (1252)
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 Bodenfeuchtesensor 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.

Verwandte Tutorials

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