Arduino UNO Q - Bodenfeuchte-Sensor
Ein Bodenfeuchte-Sensor misst, wie viel Wasser sich im Boden befindet — nützlich für automatische Bewässerungssysteme für Pflanzen, Gewächshausüberwachung und landwirtschaftliche Automatisierung. In diesem Lernprogramm erfahren Sie, wie Sie einen kapazitiven Bodenfeuchte-Sensor mit Arduino UNO Q verbinden, Feuchtigkeitswerte auslesen, Nass-/Trocken-Schwellwerte kalibrieren und den Boden remote über Telegram überwachen.
※ Notiz:
Verwenden Sie immer den kapazitiven Bodenfeuchte-Sensor anstelle des resistiven Typs. Resistive Sensoren haben freiliegende Elektroden, die aufgrund von Elektrolyse schnell korrodieren. Kapazitive Sensoren sind versiegelt und korrosionsbeständig, was eine viel längere Lebensdauer ermöglicht.

Hardware erforderlich
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
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.
Über den Bodenfeuchte-Sensor

Es gibt zwei Arten von Bodenfeuchte-Sensoren — resistiv und kapazitiv. Dieses Lernprogramm verwendet nur den kapazitiven Typ:
- Resistiver Sensor: Leitet Strom zwischen freiliegenden Elektroden — führt im Laufe der Zeit zu Korrosion
- Kapazitiver Sensor: Keine freiliegenden Leiter — korrosionsbeständig, längere Lebensdauer

Pinbelegung
Der kapazitive Bodenfeuchte-Sensor hat drei Pins:
- GND-Pin: Mit GND verbinden (0V)
- VCC-Pin: Mit 3,3V verbinden (Arduino UNO Q MCU läuft mit 3,3V)
- AOUT-Pin: Analoger Ausgang — Spannung proportional zur Bodenfeuchte; mit einem analogen Eingangspin verbinden

Funktionsweise
Der AOUT-Pin gibt eine höhere Spannung aus, wenn der Boden trocken ist, und eine niedrigere Spannung, wenn der Boden nass ist:
- Trockener Boden → hohe Spannung → hoher ADC-Wert (näher an 4095 auf Arduino UNO Q)
- Nasser Boden → niedrige Spannung → niedriger ADC-Wert (näher an 0)
※ Notiz:
Arduino UNO Q ADC-Unterschied: Der STM32 MCU verwendet einen 12-Bit-ADC (0–4095), im Vergleich zu 10-Bit (0–1023) auf vielen anderen Arduino-Platinen. Kalibrierungsschwellwerte sind höher — typischerweise im Bereich von 1500–3000, abhängig von Ihrem Sensor.
Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
| Sensor-Pin | Arduino UNO Q Pin |
|---|---|
| GND | GND |
| VCC | 3,3V |
| AOUT | A0 |
※ Notiz:
Vergraben Sie NICHT die Leiterplatte (oberer Abschnitt) des Sensors im Boden oder Wasser — fügen Sie nur die Sonde (unterer Abschnitt) in den Boden ein.
MCU-Code
Der Arduino UNO Q hat zwei Prozessoren: den STM32 MCU (verwaltet Echtzeit-Hardwaresteuerung) und den Qualcomm MPU (läuft auf Debian Linux). In diesem Abschnitt wird nur der STM32 MCU programmiert — die Linux-Seite bleibt inaktiv. Ein späterer Abschnitt zeigt, wie beide Prozessoren zusammenarbeiten.
Beispiel 1: Rohen Feuchtigkeitswert auslesen
Schnelle Schritte
- Erste Erfahrung mit Arduino UNO Q? Folgen Sie dem Erste Schritte mit Arduino UNO Q Lernprogramm, um Ihre Entwicklungsumgebung vorzubereiten, bevor Sie fortfahren.
- Verdrahten Sie den Sensor: Verbinden Sie GND mit GND, VCC mit 3,3V und AOUT mit A0.
- Verbinden: Schließen Sie Arduino UNO Q mit einem USB-C-Kabel an Ihren Computer an.
- Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis es Ihr Arduino UNO Q erkennt.
- Erstellen Sie eine neue App: Klicken Sie auf die Schaltfläche Neue App erstellen.

- Geben Sie der App einen Namen, beispielsweise: DIYables_SoilMoisture
- Klicken Sie auf Erstellen, um zu bestätigen.
- Sie sehen einen Satz von Ordnern und Dateien in Ihrer neuen App.

- Suchen Sie die Datei sketch/sketch.ino — hier können Sie die MCU-Skizze einfügen.
- Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.

- Search for Arduino_RouterBridge created by Arduino and click the Install button.
- Hochladen: Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab, um zu kompilieren und auf den STM32 hochzuladen.

- Sondieren Sie den Sensor in den Boden und fügen Sie schrittweise Wasser hinzu. Beobachten Sie, wie der ADC-Wert im Bridge Monitor abnimmt (verfügbar im nächsten Abschnitt).
- Pro-Tipp: Der Messwert wird nicht 0 erreichen, auch wenn er vollständig nass ist. Notieren Sie den Mindestwert (nass) und Maximalwert (trocken) während des Tests — diese werden Ihre Kalibrierungsgrenzen.
Kalibrierung
Der Feuchtigkeitswert ist nicht absolut — er hängt vom spezifischen Sensor, der Bodenzusammensetzung und der Wasserart ab. Um Nass- vs. Trockenbot genau zu erkennen, müssen Sie den Schwellwert kalibrieren:
- Laden Sie den Code hoch und fügen Sie den Sensor in trockenen Boden ein → notieren Sie den ADC-Messwert (z. B. 2800 → DRY_VALUE)
- Gießen Sie den Boden gründlich und warten Sie einige Minuten → notieren Sie den ADC-Messwert (z. B. 1200 → WET_VALUE)
- Stellen Sie THRESHOLD auf den Mittelpunkt: (DRY_VALUE + WET_VALUE) / 2 ≈ 2000
- Aktualisieren Sie THRESHOLD in Beispiel 2 unten
※ Notiz:
- Vermeiden Sie Tests mit reinem destilliertem Wasser — es hat eine sehr niedrige Leitfähigkeit und kann den Messwert möglicherweise nicht wesentlich ändern.
- Tauchen Sie den Schaltkreisteil nicht in Wasser oder Boden ein.
Beispiel 2: Nassen oder trockenen Boden erkennen
Nach der Kalibrierung aktualisieren Sie THRESHOLD und verwenden Sie diesen Code, um Boden als NASS oder TROCKEN zu klassifizieren:
Schnelle Schritte
- Verwenden Sie die gleiche App, ersetzen Sie die Skizze durch den Code oben.
- Aktualisieren Sie THRESHOLD mit Ihrem kalibrierten Wert.
- Hochladen und fügen Sie den Sensor in den Boden ein — fügen Sie Wasser langsam hinzu und beobachten Sie die Statusänderung.
- Pro-Tipp: Fügen Sie ein paar Punkte Hysterese hinzu (z. B. zwei separate Schwellwerte für NASS und TROCKEN), um ein schnelles Umschalten nahe der Grenze zu vermeiden.
Linux + MCU Bridge-Programmierung
Der Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten: den MPU (Qualcomm, läuft auf Debian Linux) und den MCU (STM32, läuft auf Zephyr OS mit Ihrer Arduino-Skizze). Sie kommunizieren über RPC über die Arduino_RouterBridge Bibliothek — niemals über rohe Seriellen Ports.
- Der Sensor ist mit dem MCU (STM32) verbunden — verdrahtet mit Analogpin A0. Der MCU liest den ADC-Wert und klassifiziert die Bodenfeuchte.
- Der MPU kann den Sensor nicht direkt auslesen — er muss die Messung vom MCU über Bridge.call() anfordern. Der MCU antwortet mit dem aktuellen Feuchtigkeitswert und Status.
- Der MPU hat Wi-Fi — da der MPU vollständiges Debian Linux mit Wi-Fi läuft, kann er den Bodenfeuchte-Status über Telegram auf Anforderung melden.
- Kommunikation: Bridge.call() auf der Linux-Seite ruft Bridge.provide() Funktionen auf der MCU-Seite auf
- ⚠️ Reserviert: /dev/ttyHS1 (Linux) und Serial1 (MCU) werden vom Arduino Router verwendet — öffnen Sie sie niemals direkt
Kurz gesagt: MPU fordert Feuchtigkeitsmessung an → MCU liest ADC, klassifiziert NASS/TROCKEN → MCU meldet Ergebnis → MPU protokolliert oder leitet weiter.
MCU-Skizze — Bodenfeuchte mit Bridge und Monitor-Ausgabe:
Python-Skript (Arduino App Lab) — Bodenfeuchte von Linux abrufen:
- Hinweis: Stellen Sie sicher, dass Bridge.begin() in der MCU-Skizze aufgerufen wird und die Skizze hochgeladen wird, bevor Sie das Python-Skript auf der Linux-Seite ausführen.
- ⚠️ Warnung: Öffnen Sie niemals /dev/ttyHS1 (auf Linux) direkt oder verwenden Sie Serial1 (auf MCU) in Ihrem Code — diese sind vom Arduino Router reserviert und das Zugreifen darauf bricht die Bridge.
Schnelle Schritte
- Laden Sie die MCU-Skizze hoch: Öffnen Sie Arduino App Lab, erstellen Sie eine neue App, fügen Sie die Bridge MCU-Skizze oben in sketch/sketch.ino ein, installieren Sie die Arduino_RouterBridge Bibliothek und klicken Sie auf Ausführen.
- Fügen Sie das Python-Skript hinzu: Fügen Sie den Python-Code oben in die Python-Registerkarte derselben App ein.
- Führen Sie die App aus: Klicken Sie auf Ausführen — die Python-Seite liest alle 2 Sekunden Feuchte aus.
- Fügen Sie Wasser zum Boden hinzu und beobachten Sie, wie der Status in der Konsole zwischen TROCKEN und NASS wechselt.
- Überprüfen Sie die Konsole: Öffnen Sie die Konsole-Registerkarte → Unterregisterkarte MCU Monitor.
App Lab-Konsolenausgabe
Telegram-Integration
Überwachen Sie Ihre Bodenfeuchte von überall aus remote über Telegram.
Wenn Sie noch keinen Telegram-Bot haben, lesen Sie Wie man einen Telegram-Bot erstellt, um Ihr Bot-Token zu erhalten, bevor Sie fortfahren.
MCU-Skizze: Behalten Sie die gleiche MCU-Skizze aus dem vorherigen Bridge-Abschnitt — keine Änderungen erforderlich. Stellen Sie sicher, dass sie bereits auf dem STM32 hochgeladen und läuft, bevor Sie fortfahren.
Python-Skript (Arduino App Lab) — Telegram-Bot für Bodenfeuchte-Überwachung:
- Hinweis: Ersetzen Sie YOUR_BOT_TOKEN durch das Token, das Sie von @BotFather auf Telegram erhalten haben.
- Senden Sie /read, um den aktuellen Feuchtigkeits-ADC-Wert und Nass-/Trocken-Status zu erhalten.
Schnelle Schritte
- Laden Sie die MCU-Skizze hoch: Verwenden Sie die Bridge MCU-Skizze aus dem vorherigen Abschnitt (laden Sie sie zuerst hoch, falls nicht geschehen).
- Fügen Sie das Telegram-Skript ein: Kopieren Sie den Python-Code oben in die Python-Registerkarte Ihrer App in Arduino App Lab.
- Legen Sie Ihr Token fest: Ersetzen Sie YOUR_BOT_TOKEN im Skript durch Ihr aktuelles Bot-Token.
- Führen Sie die App aus: Klicken Sie auf Ausführen — der Bot beginnt, auf Telegram-Nachrichten zu warten.
- Testen Sie es: Fügen Sie den Sensor in trockenen und dann nassen Boden ein, senden Sie jedes Mal /read — der Bot antwortet mit dem Feuchtigkeitswert und Status.
App Lab-Konsolenausgabe
ArduinoBot
OpenClaw-Integration
Sie können OpenClaw an dieses Lernprogramm anpassen, indem Sie die Anleitung zum Arduino Uno Q - OpenClaw Lernprogramm lesen.
Anwendungs-/Projektideen
- Automatische Pflanzenbewässerung: Aktivieren Sie ein Pumpen-Relais, wenn /read TROCKEN zurückgibt — kombinieren Sie mit dem Relais-Lernprogramm
- Gewächshausüberwachung: Planen Sie Telegram /read Warnungen jede Stunde über einen Cron-Job auf der Linux-Seite
- Intelligentes Bewässerungssystem: Kombinieren Sie mehrere Bodenfeuchte-Sensoren mit dem automatischen Bewässerungssystem-Lernprogramm
- Bodengesundheits-Tracker: Protokollieren Sie Feuchtigkeitsmessungen mit Zeitstempel in einer Datei auf der Linux-MPU und visualisieren Sie Trends im Laufe der Zeit
- Wetterbewusstes Gießen: Kombinieren Sie Bodenfeuchte-Daten mit der Online-Wetter-API auf der MPU, um das Gießen zu überspringen, wenn Regen vorhergesagt wird
Fordern Sie sich selbst heraus
- Einfach: Fügen Sie einen Telegram-Befehl /status hinzu, der "Boden ist TROCKEN — erwägen Sie zu gießen!" oder "Boden ist NASS — kein Gießen erforderlich." antwortet.
- Mittel: Protokollieren Sie Feuchtigkeitsmessungen mit Zeitstempeln alle 10 Minuten in eine CSV-Datei im Linux-Dateisystem der MPU
- Fortgeschrittene: Erstellen Sie ein automatisches Bewässerungssystem, das alle 30 Minuten die Bodenfeuchte ausliest und eine Telegram-Warnung sendet, wenn der Boden trocken wird