Arduino UNO Q - Capteur d'Eau

Un capteur d'eau peut détecter les fuites d'eau, les précipitations et les débordements de réservoir. Sur Arduino UNO Q, le signal analogique du capteur est lu par l'ADC 12 bits du MCU (plage 0–4095). Avec Bridge et Telegram, vous recevez des alertes instantanées sur votre téléphone dès que de l'eau est détectée.

Dans ce tutoriel, vous apprendrez :

Arduino UNO Q Capteur d'Eau

Matériel Requis

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×Water level sensor
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.

À Propos du Capteur d'Eau

Brochage

Le capteur d'eau possède trois broches :

  • S (Signal) : Sortie analogique — connecter à une broche d'entrée analogique du MCU
  • + (VCC) : Alimentation — connecter à 3,3V ou 5V. Dans ce tutoriel, connecté à une broche numérique pour le contrôle de l'alimentation
  • - (GND) : Masse
Brochage du Capteur d'Eau

※ Note:

Il est recommandé de connecter VCC à une broche de sortie numérique plutôt qu'au 5V permanent. Alimenter le capteur uniquement lors de la lecture pour réduire la corrosion des pastilles de cuivre dans les environnements humides.

Fonctionnement

Le capteur possède 10 pistes de cuivre — des lignes d'alimentation et de signal alternées. Lorsqu'elles sont sèches, elles sont isolées. Lorsqu'elles sont immergées dans l'eau, l'eau comble les écarts et modifie la résistance.

  • Plus d'eau → résistance plus faible → tension de sortie plus élevée → lecture ADC plus élevée
  • Moins d'eau → résistance plus élevée → tension de sortie plus faible → lecture ADC plus faible

Le MCU de l'Arduino UNO Q utilise un ADC 12 bits avec une référence de 3,3V, donc les lectures vont de 0 à 4095 (pas de 0 à 1023 comme sur l'Arduino Uno classique). Étalonnez le seuil selon votre capteur spécifique et le type d'eau.

※ Note:

Seules les pistes de cuivre exposées doivent toucher l'eau. Ne jamais immerger la totalité de la carte du capteur ni ses composants. Installez avec les pastilles du capteur orientées vers le bas dans le liquide.

Schéma de Câblage

Schéma de Câblage Arduino UNO Q Capteur d'Eau

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

Water Sensor Pin Arduino UNO Q MCU
* (GND) GND
+ (VCC) D5 (controlled power)
S (Signal) A0

Comment Programmer pour le Capteur d'Eau

  • Configurer les broches :
pinMode(POWER_PIN, OUTPUT); digitalWrite(POWER_PIN, LOW); // off by default
  • Lire la valeur du capteur :
digitalWrite(POWER_PIN, HIGH); // power on delay(10); // stabilize int value = analogRead(SIGNAL_PIN); // 0-4095 (12-bit ADC) digitalWrite(POWER_PIN, LOW); // power off
  • Détecter l'eau :
if (value > THRESHOLD) { Serial.println("Water detected!"); }

Code Arduino UNO Q

L'Arduino UNO Q dispose de deux processeurs fonctionnant ensemble :

  • Le MCU STM32 lit le capteur d'eau via l'ADC 12 bits chaque seconde et affiche le résultat
  • Le MPU Qualcomm exécute Debian Linux et gère le Wi-Fi, Python et la connectivité cloud
  • Dans cette section, seul le MCU est programmé — le côté Linux reste inactif. Une section ultérieure montre comment les deux processeurs fonctionnent ensemble via Bridge.

※ Note:

Le MCU de l'Arduino UNO Q utilise un ADC 12 bits (0–4095) avec une référence de 3,3V. C'est différent de l'Arduino Uno classique qui utilise un ADC 10 bits (0–1023) avec une référence de 5V. Ajustez la valeur THRESHOLD en conséquence lors de l'étalonnage.

/* * 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-water-sensor */ // Arduino UNO Q has a 12-bit ADC (0-4095) with 3.3V reference. // The water sensor VCC is powered only when reading to reduce corrosion. #define POWER_PIN 5 // The Arduino UNO Q MCU pin connected to VCC of water sensor #define SIGNAL_PIN A0 // The Arduino UNO Q MCU pin connected to the signal pin of water sensor // Threshold for detecting water (calibrate for your sensor and water) // With 12-bit ADC (0-4095), typical dry=0, partial=300-800, fully wet>1500 #define THRESHOLD 500 int value = 0; void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); digitalWrite(POWER_PIN, LOW); // start with sensor powered off Serial.println("Arduino UNO Q Water Sensor ready"); } void loop() { digitalWrite(POWER_PIN, HIGH); // power the sensor delay(10); // allow sensor to stabilize value = analogRead(SIGNAL_PIN); // read 12-bit ADC value (0-4095) digitalWrite(POWER_PIN, LOW); // power off the sensor Serial.print("Sensor value: "); Serial.print(value); if (value > THRESHOLD) { Serial.println(" => Water detected!"); } else { Serial.println(" => No water"); } delay(1000); }

Étapes Rapides

Première utilisation de l'Arduino UNO Q ? Suivez le tutoriel Démarrer avec Arduino UNO Q avant de continuer.

  • Connectez : Câblez le capteur d'eau au MCU de l'Arduino UNO Q comme indiqué dans le schéma de câblage.
  • Ouvrez Arduino App Lab : Lancez Arduino App Lab et attendez qu'il détecte votre Arduino UNO Q.
  • Créez 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 : WaterSensor
  • Cliquez sur Créer pour confirmer.
Dossiers et fichiers de l'application Arduino App Lab sur Arduino UNO Q
  • Collez le code : Copiez le code MCU ci-dessus et collez-le dans sketch/sketch.ino. Gardez les autres fichiers par défaut.
  • Aucune bibliothèque requise — utilise uniquement les fonctions intégrées analogRead() et digitalWrite().
  • Téléversez : Cliquez sur le bouton Exécuter dans Arduino App Lab.
Cliquer sur le bouton Exécuter dans Arduino App Lab sur Arduino UNO Q
  • Abaissez progressivement les pastilles du capteur dans un verre d'eau et observez les valeurs ADC augmenter dans le Moniteur Série.

Étalonnage

Après le téléversement, observez les valeurs du capteur :

  • Complètement sec : valeur ≈ 0
  • Partiellement immergé : valeur ≈ 300–1000
  • Principalement immergé : valeur ≈ 1500–3000

Réglez THRESHOLD au-dessus du niveau de bruit à sec (par ex. 500) pour détecter de manière fiable la présence d'eau.

Sortie 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
[2026-04-29 09:00:01] Arduino UNO Q Water Sensor ready [2026-04-29 09:00:02] Sensor value: 0 => No water [2026-04-29 09:00:03] Sensor value: 0 => No water [2026-04-29 09:00:04] Sensor value: 312 => No water [2026-04-29 09:00:05] Sensor value: 875 => Water detected! [2026-04-29 09:00:06] Sensor value: 1943 => Water detected! [2026-04-29 09:00:07] Sensor value: 2501 => Water detected!

Bridge : Linux + MCU

Cette section montre comment programmer les deux processeurs de l'Arduino UNO Q afin que le côté Linux puisse lire les valeurs du capteur et recevoir les événements de détection d'eau via Bridge :

  • Le capteur d'eau est connecté au MCU — le MCU lit l'ADC chaque seconde et met en cache la valeur
  • Le MPU ne peut pas lire l'ADC directement — il appelle des fonctions Bridge pour obtenir la valeur du capteur, le statut ou les événements
  • Le MPU dispose du Wi-Fi — exécutant Debian Linux complet, il peut envoyer des alertes Telegram lors de la première détection d'eau
  • Arduino_RouterBridge active la communication RPC entre les deux processeurs
  • ⚠️ /dev/ttyHS1 (Linux) et Serial1 (MCU) sont RÉSERVÉS par le routeur — ne les ouvrez jamais dans le code utilisateur

En résumé : Le MCU lit l'ADC chaque seconde → détecte le changement d'état → définit un indicateur d'événement → le MPU interroge et envoie une alerte Telegram.

Code MCU (Bridge)

/* * 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-water-sensor */ // Arduino UNO Q has a 12-bit ADC (0-4095) with 3.3V reference. #include "Arduino_RouterBridge.h" #define POWER_PIN 5 // The Arduino UNO Q MCU pin connected to VCC of water sensor #define SIGNAL_PIN A0 // The Arduino UNO Q MCU pin connected to the signal pin of water sensor #define THRESHOLD 500 int cached_value = 0; bool water_event = false; bool prev_water_detected = false; unsigned long last_read_ms = 0; const unsigned long READ_INTERVAL = 1000; String get_value(String arg) { return String(cached_value); } String get_status(String arg) { return cached_value > THRESHOLD ? "water_detected" : "no_water"; } String get_event(String arg) { if (water_event) { water_event = false; return "water_detected"; } return "none"; } void setup() { Bridge.begin(); Monitor.begin(); pinMode(POWER_PIN, OUTPUT); digitalWrite(POWER_PIN, LOW); Bridge.provide("get_value", get_value); Bridge.provide("get_status", get_status); Bridge.provide("get_event", get_event); Monitor.println("Arduino UNO Q Water Sensor Bridge ready"); } void loop() { unsigned long now = millis(); if (now - last_read_ms >= READ_INTERVAL) { last_read_ms = now; digitalWrite(POWER_PIN, HIGH); delay(10); cached_value = analogRead(SIGNAL_PIN); digitalWrite(POWER_PIN, LOW); bool water_detected = cached_value > THRESHOLD; if (water_detected && !prev_water_detected) { water_event = true; Monitor.print("Water detected! Sensor value: "); Monitor.println(cached_value); } else if (!water_detected && prev_water_detected) { Monitor.println("Water gone. Sensor dry."); } prev_water_detected = water_detected; } }

Code Python (Bridge)

/* * 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-water-sensor */ from arduino.app_utils import * import time def loop(): value = Bridge.call("get_value") status = Bridge.call("get_status") print(f"Sensor value: {value} Status: {status}") time.sleep(1) App.run(user_loop=loop)

Étapes Rapides

  • Connectez : Câblez le capteur d'eau à l'Arduino UNO Q comme indiqué dans le schéma de câblage.
  • Ouvrez Arduino App Lab : Lancez Arduino App Lab et attendez que la carte soit détectée.
  • Créez une nouvelle application : Cliquez sur Créer une nouvelle application, nommez-la WaterSensorBridge, puis cliquez sur Créer.
  • Collez le sketch MCU : Copiez le code MCU Bridge ci-dessus et collez-le dans sketch/sketch.ino.
  • Collez le code Python : Copiez le code Python Bridge ci-dessus et collez-le dans le fichier Python de l'application.
  • 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éversez : Cliquez sur le bouton Exécuter dans Arduino App Lab.
Cliquer sur le bouton Exécuter dans Arduino App Lab sur Arduino UNO Q
  • Plongez les pastilles du capteur dans l'eau et observez le changement de statut dans les deux consoles.

Sortie 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
[2026-04-29 09:00:01] Arduino UNO Q Water Sensor Bridge ready [2026-04-29 09:00:06] Water detected! Sensor value: 1243 [2026-04-29 09:00:09] Water gone. Sensor dry.
DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:00:02] Sensor value: 0 Status: no_water [2026-04-29 09:00:03] Sensor value: 0 Status: no_water [2026-04-29 09:00:06] Sensor value: 1243 Status: water_detected [2026-04-29 09:00:09] Sensor value: 12 Status: no_water

Telegram

Recevez des alertes Telegram instantanées lorsque de l'eau est détectée par le capteur sur Arduino UNO Q.

Sketch MCU : Conservez le même sketch MCU de la section Bridge précédente.

Code Python (Telegram)

/* * 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-water-sensor */ from arduino.app_utils import * import requests import time TELEGRAM_BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN" CHAT_ID = "YOUR_CHAT_ID" last_update_id = 0 def get_updates(): global last_update_id url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/getUpdates" params = {"offset": last_update_id + 1, "timeout": 5} try: response = requests.get(url, params=params, timeout=10) data = response.json() if data["ok"]: return data["result"] except Exception as e: print(f"Error getting updates: {e}") return [] def send_message(chat_id, text): url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage" payload = {"chat_id": chat_id, "text": text} try: requests.post(url, data=payload, timeout=10) except Exception as e: print(f"Error sending message: {e}") def loop(): # Check for water event event = Bridge.call("get_event") if event == "water_detected": value = Bridge.call("get_value") print(f"Water event! Sensor value: {value}") send_message(CHAT_ID, f"💧 Water detected! Sensor value: {value}") # Check for Telegram commands updates = get_updates() for update in updates: last_update_id = update["update_id"] if "message" not in update: continue message = update["message"] chat_id = message["chat"]["id"] text = message.get("text", "").strip() print(f"Received: {text}") if text == "/start": send_message(chat_id, "Arduino UNO Q Water Sensor Bot\n" "/value - Read raw sensor value (0-4095)\n" "/status - Read water detection status\n" "Automatic alert when water is detected") elif text == "/value": result = Bridge.call("get_value") send_message(chat_id, f"Sensor value: {result}") elif text == "/status": result = Bridge.call("get_status") send_message(chat_id, f"Status: {result}") else: send_message(chat_id, "Unknown command. Send /start for help.") time.sleep(0.5) App.run(user_loop=loop)

Étapes Rapides

  • Remplacez YOUR_TELEGRAM_BOT_TOKEN par votre vrai token de bot obtenu auprès de BotFather.
  • Remplacez YOUR_CHAT_ID par votre ID de chat Telegram.
  • Collez ce code Python dans le fichier Python de votre application (conservez le même sketch MCU).
  • Cliquez sur le bouton Exécuter. Plongez le capteur dans l'eau — recevez l'alerte Telegram instantanément.

Sortie Console App Lab

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:10:00] Waiting for Telegram messages... [2026-04-29 09:10:05] Water event! Sensor value: 1567 [2026-04-29 09:10:12] Received: /status
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
/value
10:15 AM ✓✓
Sensor value: 0
10:16 AM
💧 Water detected! Sensor value: 1567
10:17 AM
/status
10:18 AM ✓✓
Status: water_detected
10:19 AM
/value
10:20 AM ✓✓
Sensor value: 1567
10:21 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 de Projets

Vous pouvez réaliser de nombreux projets utiles avec le capteur d'eau et l'Arduino UNO Q :

  • Système d'alerte de fuite : Placer le capteur d'eau sous un évier, une machine à laver ou un chauffe-eau — recevoir une alerte Telegram instantanée lorsqu'une fuite est détectée, avec la valeur ADC brute incluse pour l'évaluation de la gravité
  • Pluviomètre : Monter le capteur à l'extérieur sous un abri ouvert pour détecter le début des précipitations — Python enregistre les événements de pluie avec horodatage dans un fichier et envoie un résumé quotidien de pluie à Telegram
  • Garde contre le débordement d'aquarium : Positionner le capteur au bord du réservoir — lorsque le niveau d'eau atteint le capteur, le MPU vous alerte via Telegram et déclenche optionnellement un relais via Bridge pour couper la pompe à eau
  • Moniteur d'arrosage des plantes : Vérifier l'humidité du sol avec le capteur d'eau — lorsqu'une sécheresse est détectée (faible valeur ADC), envoyer un rappel Telegram pour arroser les plantes
  • Moniteur d'inondation de sous-sol : Installer plusieurs capteurs au niveau du sol dans tout un sous-sol — chaque capteur est connecté à une broche analogique séparée, et Python signale via Telegram quelles zones sont inondées

Relevez le Défi

Prêt à aller plus loin avec le capteur d'eau sur Arduino UNO Q ? Essayez ces défis :

  • Facile : Ajouter des catégories de niveau d'eau dans Python : si int(value) < 200"sec", < 800"humide", < 2000"mouillé", sinon "inondé" — envoyer la catégorie avec chaque réponse de statut Telegram.
  • Moyen : Implémenter un minuteur de délai : après qu'un événement de détection d'eau déclenche une alerte Telegram, attendre 60 secondes avant d'envoyer une autre alerte pour le même événement — éviter le spam lors d'une fuite prolongée.
  • Avancé : Enregistrer toutes les lectures du capteur avec horodatage dans un fichier CSV sous Linux toutes les 10 secondes, et implémenter une commande Telegram /report qui envoie un résumé de la dernière heure : valeur minimale, valeur maximale, nombre d'événements de détection d'eau et durée de contact avec l'eau.

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