Arduino UNO Q - Capteur d'Humidité du Sol

Un capteur d'humidité du sol mesure la quantité d'eau dans le sol — utile pour les systèmes d'arrosage automatique, la surveillance de serre et l'automatisation agricole. Dans ce tutoriel, vous apprendrez à connecter un capteur d'humidité du sol capacitif à l'Arduino UNO Q, à lire les valeurs d'humidité, calibrer les seuils humide/sec, et surveiller le sol à distance via Telegram.

※ Note:

Utilisez toujours le capteur d'humidité du sol capacitif plutôt que le type résistif. Les capteurs résistifs ont des électrodes exposées qui se corrodent rapidement en raison de l'électrolyse. Les capteurs capacitifs sont scellés et résistants à la corrosion, offrant une durée de vie beaucoup plus longue.

Arduino UNO Q - Capteur d'Humidité du Sol

Matériel Requis

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×Capteur d'humidité du sol capacitif
1×Fils de connexion
1×Recommandé: Shield à bornier à vis pour Arduino Uno
1×Recommandé: Sensors/Servo Expansion Shield for Arduino Uno
1×Recommandé: Shield plaque d'essai pour Arduino Uno
1×Recommandé: Boîtier pour Arduino Uno
1×Recommandé: Kit plaque de base prototypage et plaque d'essai pour Arduino Uno

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

Note d'achat: De nombreux capteurs d'humidité du sol capacitifs sur le marché sont de faible qualité, quelle que soit la version. Nous recommandons vivement d'acheter le capteur avec puce TLC555I de la marque DIYables en utilisant le lien ci-dessus. Nous l'avons testé et il a bien fonctionné.

À Propos du Capteur d'Humidité du Sol

Capteur d'Humidité du Sol Capacitif vs Résistif

Il existe deux types de capteurs d'humidité du sol — résistif et capacitif. Ce tutoriel utilise uniquement le type capacitif :

  • Capteur résistif : Fait passer du courant entre des électrodes exposées → provoque une corrosion avec le temps
  • Capteur capacitif : Pas de conducteurs exposés → résistant à la corrosion, durée de vie plus longue
Capteur d'Humidité du Sol Résistif Corrodé

Brochage

Le capteur d'humidité du sol capacitif possède trois broches :

  • Broche GND : Connecter à GND (0V)
  • Broche VCC : Connecter à 3,3V (le MCU de l'Arduino UNO Q fonctionne à 3,3V)
  • Broche AOUT : Sortie analogique — tension proportionnelle à l'humidité du sol ; connecter à une broche d'entrée analogique
Brochage du Capteur d'Humidité du Sol Capacitif

Fonctionnement

La broche AOUT produit une tension plus élevée lorsque le sol est sec et une tension plus basse lorsque le sol est humide :

  • Sol sec → tension élevée → valeur ADC élevée (proche de 4095 sur Arduino UNO Q)
  • Sol humide → tension basse → valeur ADC faible (proche de 0)

※ Note:

Différence ADC de l'Arduino UNO Q : Le MCU STM32 utilise un ADC 12 bits (0–4095), comparé au 10 bits (0–1023) sur de nombreuses autres cartes Arduino. Les valeurs de seuil de calibration seront plus élevées — généralement dans la plage 1500–3000 selon votre capteur.

Schéma de Câblage

Schéma de Câblage Arduino UNO Q Capteur d'Humidité du Sol

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Broche Capteur Broche Arduino UNO Q
GND GND
VCC 3,3V
AOUT A0

※ Note:

N'enterrez PAS la carte de circuit (section supérieure) du capteur dans le sol ou l'eau — insérez uniquement la sonde (section inférieure) dans le sol.

Code MCU

L'Arduino UNO Q possède deux processeurs : le MCU STM32 (gère le contrôle matériel en temps réel) et le MPU Qualcomm (exécute Debian Linux). Dans cette section, seul le MCU STM32 est programmé — le côté Linux reste inactif. Une section ultérieure montrera comment les deux processeurs fonctionnent ensemble.

Exemple 1 : Lire la Valeur Brute d'Humidité

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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); }

Étapes Rapides

  • Première utilisation d'Arduino UNO Q ? Suivez le tutoriel Démarrer avec Arduino UNO Q pour préparer votre environnement de développement avant de continuer.
  • Câbler le capteur : Connectez GND à GND, VCC à 3,3V, et AOUT à A0.
  • Connecter : Branchez l'Arduino UNO Q à votre ordinateur avec un câble USB-C.
  • Ouvrir Arduino App Lab : Lancez Arduino App Lab et attendez qu'il détecte votre Arduino UNO Q.
  • Créer une nouvelle application : Cliquez sur le bouton Créer une nouvelle application.
Créer une nouvelle application dans Arduino App Lab sur Arduino UNO Q
  • Donnez un nom à l'application, par exemple : DIYables_SoilMoisture
  • Cliquez sur Créer pour confirmer.
  • Vous verrez un ensemble de dossiers et fichiers générés dans votre nouvelle application.
Dossiers et fichiers de l'application Arduino App Lab sur Arduino UNO Q
  • Trouvez le fichier sketch/sketch.ino — c'est ici que vous collerez le sketch MCU.
  • Coller le sketch : Copiez le code MCU ci-dessus et collez-le dans le fichier sketch. Laissez les autres fichiers par défaut.
    • 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
    • Téléverser : Cliquez sur le bouton Exécuter dans Arduino App Lab pour compiler et téléverser vers le STM32.
    Cliquez sur le bouton Exécuter dans Arduino App Lab sur Arduino UNO Q
    • Insérez la sonde du capteur dans le sol et ajoutez de l'eau progressivement. Observez la valeur ADC diminuer dans le Bridge Monitor (disponible dans la section suivante).
    • Conseil pratique : La valeur ne descendra pas à 0 même complètement mouillée. Notez la valeur minimale (humide) et la valeur maximale (sec) lors des tests — ce seront vos limites de calibration.

    Calibration

    La valeur d'humidité n'est pas absolue — elle dépend du capteur spécifique, de la composition du sol et du type d'eau. Pour détecter avec précision le sol humide vs sec, vous devez calibrer le seuil :

    1. Téléversez le code et insérez le capteur dans un sol sec → notez la valeur ADC (ex. 2800DRY_VALUE)
    2. Arrosez abondamment et attendez quelques minutes → notez la valeur ADC (ex. 1200WET_VALUE)
    3. Réglez THRESHOLD au point médian : (DRY_VALUE + WET_VALUE) / 22000
    4. Mettez à jour THRESHOLD dans l'Exemple 2 ci-dessous

    ※ Note:

    • Évitez de tester avec de l'eau distillée pure — elle a une très faible conductivité et peut ne pas modifier significativement la valeur.
    • N'immergez pas la section de la carte de circuit dans l'eau ou le sol.

    Exemple 2 : Détecter Sol Humide ou Sec

    Après calibration, mettez à jour THRESHOLD et utilisez ce code pour classer le sol comme HUMIDE ou SEC :

    /* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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); }

    Étapes Rapides

    • Utilisez la même application, remplacez le sketch par le code ci-dessus.
    • Mettez à jour THRESHOLD avec votre valeur calibrée.
    • Téléversez et insérez le capteur dans le sol — ajoutez de l'eau lentement et observez le changement d'état.
    • Conseil pratique : Ajoutez quelques points d'hystérésis (ex. deux seuils séparés pour HUMIDE et SEC) pour éviter les commutations rapides près de la limite.

    Programmation Bridge Linux + MCU

    L'Arduino UNO Q possède deux processeurs qui fonctionnent ensemble : le MPU (Qualcomm, exécute Debian Linux) et le MCU (STM32, exécute Zephyr OS avec votre sketch Arduino). Ils communiquent via RPC grâce à la bibliothèque Arduino_RouterBridge — jamais via des ports série bruts.

    • Le capteur est connecté au MCU (STM32) — câblé à la broche analogique A0. Le MCU lit la valeur ADC et classifie l'humidité du sol.
    • Le MPU ne peut pas lire le capteur directement — il doit demander la lecture au MCU via Bridge.call(). Le MCU répond avec la valeur d'humidité actuelle et l'état.
    • Le MPU dispose du Wi-Fi — parce que le MPU exécute Debian Linux complet avec Wi-Fi, il peut signaler l'état d'humidité du sol via Telegram à la demande.
    • Communication : Bridge.call() côté Linux invoque les fonctions Bridge.provide() côté MCU
    • ⚠️ Réservé : /dev/ttyHS1 (Linux) et Serial1 (MCU) sont utilisés par le routeur Arduino — ne les ouvrez jamais directement

    En bref : Le MPU demande la lecture d'humidité → Le MCU lit l'ADC, classifie HUMIDE/SEC → Le MCU rapporte le résultat → Le MPU l'enregistre ou le transmet.

    Sketch MCU — humidité du sol avec Bridge et sortie Monitor :

    /* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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() {}

    Script Python (Arduino App Lab) — interroger l'humidité depuis Linux :

    /* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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)
    • Remarque : Assurez-vous que Bridge.begin() est appelé dans le sketch MCU et que le sketch est téléversé avant d'exécuter le script Python côté Linux.
    • ⚠️ Avertissement : N'ouvrez jamais directement /dev/ttyHS1 (sous Linux) ou n'utilisez pas Serial1 (sur MCU) dans votre code — ces ports sont réservés par le routeur Arduino et y accéder cassera le Bridge.

    Étapes Rapides

    • Téléverser le sketch MCU : Ouvrez Arduino App Lab, créez une nouvelle application, collez le sketch MCU Bridge ci-dessus dans sketch/sketch.ino, installez la bibliothèque Arduino_RouterBridge, et cliquez sur Exécuter.
    • Ajouter le script Python : Collez le code Python ci-dessus dans l'onglet Python de la même application.
    • Exécuter l'application : Cliquez sur Exécuter — le côté Python lit l'humidité toutes les 2 secondes.
    • Ajoutez de l'eau au sol et observez l'état passer entre SEC et HUMIDE dans la console.
    • Vérifier la console : Ouvrez l'onglet Console → sous-onglet MCU Monitor.

    Sortie de la Console App Lab

    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)

    Intégration Telegram

    Surveillez l'humidité de votre sol à distance depuis n'importe où via Telegram.

    Si vous n'avez pas encore de bot Telegram, consultez Arduino UNO Q - Bot Telegram pour obtenir votre token de bot avant de continuer.

    Sketch MCU : Gardez le même sketch MCU de la section Bridge précédente — aucune modification nécessaire. Assurez-vous qu'il est déjà téléversé et en cours d'exécution sur le STM32 avant de continuer.

    Script Python (Arduino App Lab) — bot Telegram pour la surveillance de l'humidité du sol :

    /* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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)
    • Remarque : Remplacez YOUR_BOT_TOKEN par le token obtenu auprès de @BotFather sur Telegram.
    • Envoyez /read pour obtenir la valeur ADC d'humidité actuelle et l'état humide/sec.

    Étapes Rapides

    • Téléverser le sketch MCU : Utilisez le sketch MCU Bridge de la section précédente (téléversez-le d'abord si ce n'est pas déjà fait).
    • Coller le script Telegram : Copiez le code Python ci-dessus dans l'onglet Python de votre application dans Arduino App Lab.
    • Définir votre token : Remplacez YOUR_BOT_TOKEN dans le script par votre token de bot réel.
    • Exécuter l'application : Cliquez sur Exécuter — le bot commence à écouter les messages Telegram.
    • Testez : Insérez le capteur dans un sol sec puis humide, envoyez /read à chaque fois — le bot répond avec la valeur d'humidité et l'état.

    Sortie de la Console App Lab

    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

    Intégration d'OpenClaw

    Vous pouvez adapter OpenClaw à ce tutoriel en vous référant aux instructions du tutoriel Arduino UNO Q - OpenClaw.

    Idées d'Applications/Projets

    • Arrosage automatique des plantes : Déclencher un relais de pompe quand /read retourne SEC — combiner avec le tutoriel relais
    • Surveillance de serre : Planifier des alertes Telegram /read toutes les heures via une tâche cron côté Linux
    • Système d'irrigation intelligent : Combiner plusieurs capteurs d'humidité du sol avec le tutoriel système d'irrigation automatique
    • Suivi de santé du sol : Enregistrer les relevés d'humidité dans un fichier sur le MPU Linux et visualiser les tendances dans le temps
    • Arrosage sensible à la météo : Combiner les données d'humidité du sol avec une API météo en ligne sur le MPU pour éviter l'arrosage quand de la pluie est prévue

    Défiez-vous

    • Facile : Ajouter une commande Telegram /status qui répond "Le sol est SEC — pensez à arroser !" ou "Le sol est HUMIDE — pas besoin d'arroser."
    • Moyen : Enregistrer les relevés d'humidité avec horodatage dans un fichier CSV sur le système de fichiers Linux du MPU toutes les 10 minutes
    • Avancé : Créer un système d'irrigation automatique qui lit l'humidité du sol toutes les 30 minutes et envoie une alerte Telegram quand le sol devient sec

    Références de Fonctions

    Tutoriels connexes

    ※ NOS MESSAGES

    • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !