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.

Arduino UNO Q - Bodenfeuchte-Sensor

Hardware erforderlich

1×Arduino UNO Q
1×USB-Kabel für Arduino Uno Q
1×Kapazitiver Bodenfeuchte-Sensor
1×Jumper-Kabel
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Sensors/Servo Expansion Shield for Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

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.

Über den Bodenfeuchte-Sensor

Kapazitiv vs. Resistiv 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
Korrodierter resistiver Bodenfeuchte-Sensor

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
Kapazitiver Bodenfeuchte-Sensor Pinbelegung

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

Arduino UNO Q Bodenfeuchte-Sensor Verdrahtungsdiagramm

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

Sensor-PinArduino UNO Q Pin
GNDGND
VCC3,3V
AOUTA0

※ 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

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q 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-uno-q/arduino-uno-q-soil-moisture-sensor */ #define AOUT_PIN A0 // Arduino UNO Q pin connected to AOUT of soil moisture sensor void setup() { // nothing to set up } void loop() { // read 12-bit ADC value from moisture sensor (0 to 4095 on Arduino UNO Q) // higher value = drier soil; lower value = wetter soil int value = analogRead(AOUT_PIN); // TO DO: use value in your logic here // Example: map to a 0-100% dryness scale // int dryness = map(value, WET_VALUE, DRY_VALUE, 0, 100); delay(500); }

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.
Neue App in Arduino App Lab auf Arduino UNO Q 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.
Arduino App Lab App-Ordner und Dateien auf Arduino UNO Q
  • Suchen Sie die Datei sketch/sketch.ino — hier können Sie die MCU-Skizze einfügen.
  • Skizze einfügen: Kopieren Sie den MCU-Code oben und fügen Sie ihn in die Skizzendatei ein. Behalten Sie andere Dateien auf Standard.
    • Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.
    Add sketch library in Arduino App Lab on Arduino UNO Q
    • Search for Arduino_RouterBridge created by Arduino and click the Install button.
    My Apps / DIYables Apps
    Run
    Bricks
    No bricks added...
    Sketch Libraries
    No sketch libra...
    Files
    python
    sketch
    .gitignore
    README.md
    app.yaml
    sketch.ino
    Add sketch library
    Arduino_RouterBridge Arduino

    This library provides a simple RPC bridge for Arduino UNO Q boards, allowing communication between the board and other devices using MsgPack serialization.

    0.4.1
    Install
    More Info
    • Hochladen: Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab, um zu kompilieren und auf den STM32 hochzuladen.
    Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab auf Arduino UNO Q
    • 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:

    1. Laden Sie den Code hoch und fügen Sie den Sensor in trockenen Boden ein → notieren Sie den ADC-Messwert (z. B. 2800DRY_VALUE)
    2. Gießen Sie den Boden gründlich und warten Sie einige Minuten → notieren Sie den ADC-Messwert (z. B. 1200WET_VALUE)
    3. Stellen Sie THRESHOLD auf den Mittelpunkt: (DRY_VALUE + WET_VALUE) / 22000
    4. 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:

    /* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q 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-uno-q/arduino-uno-q-soil-moisture-sensor */ #define AOUT_PIN A0 // Arduino UNO Q pin connected to AOUT of soil moisture sensor #define THRESHOLD 2200 // CHANGE to your calibrated threshold (higher = drier on Arduino UNO Q) void setup() { // nothing to set up } void loop() { // read 12-bit ADC value from moisture sensor (0 to 4095 on Arduino UNO Q) int value = analogRead(AOUT_PIN); // higher ADC value = less water in soil = DRY if (value > THRESHOLD) { // TO DO: soil is DRY — add your logic here (e.g. turn on pump) } else { // TO DO: soil is WET — add your logic here (e.g. turn off pump) } delay(500); }

    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:

    /* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q 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-uno-q/arduino-uno-q-soil-moisture-sensor */ #include "Arduino_RouterBridge.h" #define AOUT_PIN A0 #define THRESHOLD 2200 // adjust after calibration void read_moisture() { int value = analogRead(AOUT_PIN); const char* status = (value > THRESHOLD) ? "DRY" : "WET"; Monitor.print("Moisture: "); Monitor.print(value); Monitor.print(" ("); Monitor.print(status); Monitor.println(")"); } void setup() { Bridge.begin(); Monitor.begin(); Bridge.provide("read_moisture", read_moisture); Monitor.println("Soil Moisture Bridge ready"); } void loop() {}

    Python-Skript (Arduino App Lab) — Bodenfeuchte von Linux abrufen:

    /* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q 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-uno-q/arduino-uno-q-soil-moisture-sensor */ from arduino.app_utils import * import time def loop(): while True: Bridge.call("read_moisture") time.sleep(2) App.run(user_loop=loop)
    • 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

    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    Message (Enter to send a message to "Newbiely" on usb(2820070321))
    New Line
    9600 baud
    Soil Moisture Bridge ready Moisture: 2850 (DRY) Moisture: 2740 (DRY) Moisture: 2100 (DRY) Moisture: 1750 (WET) Moisture: 1320 (WET)

    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:

    /* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q 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-uno-q/arduino-uno-q-soil-moisture-sensor */ from arduino.app_utils import * import requests import time BOT_TOKEN = "YOUR_BOT_TOKEN" API_URL = f"https://api.telegram.org/bot{BOT_TOKEN}" last_update_id = 0 def send_message(chat_id, text): requests.post(f"{API_URL}/sendMessage", json={"chat_id": chat_id, "text": text}) def get_updates(): global last_update_id resp = requests.get(f"{API_URL}/getUpdates", params={"offset": last_update_id + 1, "timeout": 5}) return resp.json().get("result", []) def loop(): global last_update_id updates = get_updates() for update in updates: last_update_id = update["update_id"] msg = update.get("message", {}) chat_id = msg.get("chat", {}).get("id") text = msg.get("text", "").strip() if text == "/read": result = Bridge.call("read_moisture") send_message(chat_id, result) else: send_message(chat_id, "Commands:\n/read — read soil moisture value and wet/dry status") time.sleep(1) App.run(user_loop=loop)
    • 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

    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    [2026-04-29 12:00:01] Telegram: /read [2026-04-29 12:00:01] Moisture: 2850 (DRY) [2026-04-29 12:05:30] Telegram: /read [2026-04-29 12:05:30] Moisture: 1320 (WET)
    Telegram
    Telegram 12:45
    Welcome to Telegram!
    ArduinoBot 10:19
    Chatting with Arduino...
    telegram-botfather
    BotFather Yesterday
    Your bot has been created.

    ArduinoBot

    bot
    Today
    /read
    10:15 AM ✓✓
    Moisture: 2850 (DRY)
    10:16 AM
    /read
    10:17 AM ✓✓
    Moisture: 1320 (WET)
    10:18 AM

    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

    Funktionsreferenzen

    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!