Arduino UNO Q - Vanne d'Eau/Liquide

Une vanne solénoïde d'eau/liquide contrôle le débit d'eau, d'huile ou d'autres liquides. Elle s'ouvre lorsque 12V est appliqué et se ferme lorsque l'alimentation est coupée. L'Arduino UNO Q la contrôle via un relais. Avec Bridge et Telegram, vous pouvez ouvrir et fermer la vanne à distance depuis n'importe où.

Dans ce tutoriel, vous apprendrez :

Arduino UNO Q Vanne d'Eau/Liquide

Matériel Requis

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×Liquid Solenoid Valve
1×Relais
1×Adaptateur secteur 12V
1×Connecteur d'alimentation DC
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 de la Vanne d'Eau/Liquide

Brochage

Une vanne solénoïde possède deux connexions filaires :

  • Fil positif (+) rouge : Connecter à 12V DC via le relais
  • Fil négatif (-) noir : Connecter à GND de l'alimentation 12V DC
Brochage de la Vanne d'Eau

Fonctionnement

  • Quand 12V est appliqué → le solénoïde s'ouvre → le liquide peut s'écouler
  • Quand l'alimentation est coupée → le solénoïde se ferme → le débit de liquide s'arrête

※ Note:

Certaines vannes nécessitent une pression minimale du fluide pour s'ouvrir complètement après application des 12V. De plus, certaines vannes sont directionnelles — vérifiez la flèche de débit sur le corps. La vanne ne doit JAMAIS être connectée directement à une broche de l'Arduino UNO Q. Utilisez toujours un relais pour commuter l'alimentation 12V.

Comment Contrôler la Vanne

Le MCU de l'Arduino UNO Q contrôle un relais qui commute l'alimentation 12V vers la vanne solénoïde :

  • Broche relais HIGH → relais fermé → 12V vers vanne → vanne OUVERTE
  • Broche relais LOW → relais ouvert → pas d'alimentation vers vanne → vanne FERMÉE

Schéma de Câblage

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

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

Connectez la broche IN du module relais à la broche MCU D3. Connectez les bornes COM et NO du relais entre l'alimentation 12V et la vanne solénoïde. Connectez VCC du relais à 5V et GND à GND.

Relay Pin Arduino UNO Q MCU
GND GND
VCC 5V
IN D3

Comment Programmer pour la Vanne d'Eau

  • Configurer la broche du relais en sortie :
pinMode(RELAY_PIN, OUTPUT);
  • Ouvrir et fermer la vanne :
digitalWrite(RELAY_PIN, HIGH); // open valve delay(5000); digitalWrite(RELAY_PIN, LOW); // close valve delay(5000);

Code Arduino UNO Q

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

  • Le MCU STM32 contrôle le relais qui commute l'alimentation 12V vers la vanne solénoïde
  • 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.

Ce code ouvre la vanne pendant 5 secondes, puis la ferme — en se répétant en continu.

/* * 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-liquid-valve */ // This code opens and closes the water/liquid valve every 5 seconds. // The valve requires a 12V power supply and is controlled through a relay. // HIGH = valve OPEN, LOW = valve CLOSED #define RELAY_PIN 3 // The Arduino UNO Q MCU pin connected to the relay IN pin void setup() { Serial.begin(9600); pinMode(RELAY_PIN, OUTPUT); Serial.println("Arduino UNO Q Water/Liquid Valve ready"); } void loop() { Serial.println("Valve: OPEN"); digitalWrite(RELAY_PIN, HIGH); // open valve delay(5000); Serial.println("Valve: CLOSED"); digitalWrite(RELAY_PIN, LOW); // close valve delay(5000); }

É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 la vanne solénoïde, le relais et l'alimentation 12V à l'Arduino UNO Q MCU 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 : WaterValve
  • 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 la fonction intégrée 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
  • Observez la vanne alternant entre ouvert et fermé toutes les 5 secondes. Vous pouvez entendre le clic du solénoïde s'enclencher.

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/Liquid Valve ready [2026-04-29 09:00:01] Valve: OPEN [2026-04-29 09:00:06] Valve: CLOSED [2026-04-29 09:00:11] Valve: OPEN [2026-04-29 09:00:16] Valve: CLOSED

Bridge : Linux + MCU

Cette section montre comment programmer les deux processeurs de l'Arduino UNO Q afin que le côté Linux puisse ouvrir et fermer la vanne via Bridge :

  • La vanne solénoïde est connectée au MCU via relais — le MCU contrôle la broche de sortie du relais
  • Le MPU ne peut pas contrôler le relais directement — il appelle des fonctions Bridge pour ouvrir ou fermer la vanne
  • Le MPU dispose du Wi-Fi — exécutant Debian Linux complet, il peut accepter des commandes de Telegram ou de tout service web et les traduire en actions de contrôle de vanne
  • 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 MPU reçoit les commandes open/close → appelle Bridge → le MCU contrôle le relais → la vanne s'actionne.

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-liquid-valve */ #include "Arduino_RouterBridge.h" #define RELAY_PIN 3 // The Arduino UNO Q MCU pin connected to the relay IN pin // HIGH = valve OPEN, LOW = valve CLOSED bool is_open = false; String open_valve(String arg) { digitalWrite(RELAY_PIN, HIGH); is_open = true; Monitor.println("Valve: OPEN"); return "open"; } String close_valve(String arg) { digitalWrite(RELAY_PIN, LOW); is_open = false; Monitor.println("Valve: CLOSED"); return "closed"; } String get_state(String arg) { return is_open ? "open" : "closed"; } void setup() { Bridge.begin(); Monitor.begin(); pinMode(RELAY_PIN, OUTPUT); digitalWrite(RELAY_PIN, LOW); // start closed is_open = false; Bridge.provide_safe("open_valve", open_valve); Bridge.provide_safe("close_valve", close_valve); Bridge.provide("get_state", get_state); Monitor.println("Arduino UNO Q Water/Liquid Valve Bridge ready"); Monitor.println("Initial state: CLOSED"); } void loop() {}

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-liquid-valve */ from arduino.app_utils import * import time def loop(): state = Bridge.call("get_state") print(f"Valve state: {state}") # Example: open for 5 seconds, then close if state == "closed": print("Opening valve...") Bridge.call("open_valve") time.sleep(5) print("Closing valve...") Bridge.call("close_valve") time.sleep(1) App.run(user_loop=loop)

Étapes Rapides

  • Connectez : Câblez la vanne solénoïde, le relais et l'alimentation 12V à 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 WaterValveBridge, 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
  • Observez le cycle de la vanne : ouvert → attendre 5 secondes → fermé → attendre 1 seconde → répéter.

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/Liquid Valve Bridge ready [2026-04-29 09:00:01] Initial state: CLOSED [2026-04-29 09:00:02] Valve: OPEN [2026-04-29 09:00:07] Valve: CLOSED
DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:00:02] Valve state: closed [2026-04-29 09:00:02] Opening valve... [2026-04-29 09:00:07] Closing valve... [2026-04-29 09:00:08] Valve state: closed

Telegram

Contrôlez la vanne d'eau/liquide à distance via Telegram — ouvrez et fermez depuis n'importe où avec une simple commande.

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-liquid-valve */ 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(): 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/Liquid Valve Bot\n" "/open - Open the valve\n" "/close - Close the valve\n" "/state - Read current valve state") elif text == "/open": result = Bridge.call("open_valve") send_message(chat_id, f"💧 Valve state: {result}") elif text == "/close": result = Bridge.call("close_valve") send_message(chat_id, f"🚫 Valve state: {result}") elif text == "/state": result = Bridge.call("get_state") send_message(chat_id, f"Valve state: {result}") else: send_message(chat_id, "Unknown command. Send /start for help.") time.sleep(1) 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. Envoyez /open depuis Telegram pour démarrer le débit, puis /close pour l'arrêter.

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] Received: /open [2026-04-29 09:10:12] Received: /state [2026-04-29 09:10:20] Received: /close
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
/state
10:15 AM ✓✓
Valve state: closed
10:16 AM
/open
10:17 AM ✓✓
💧 Valve state: open
10:18 AM
/state
10:19 AM ✓✓
Valve state: open
10:20 AM
/close
10:21 AM ✓✓
🚫 Valve state: closed
10:22 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 la vanne solénoïde et l'Arduino UNO Q :

  • Système d'irrigation à distance : Contrôler l'arrosage du jardin depuis n'importe où via Telegram — envoyer /open pour démarrer l'irrigation et /close pour l'arrêter, avec le côté Linux enregistrant la durée de chaque session dans un fichier
  • Arrosage programmé : Programmer le MPU pour ouvrir automatiquement la vanne pendant 10 minutes chaque matin à 6h en utilisant l'horloge système Linux — aucune intervention manuelle nécessaire
  • Réponse aux fuites d'eau : Combiner un capteur d'eau avec la vanne — lorsque le capteur détecte une fuite, Python appelle immédiatement Bridge.call("close_valve") pour couper l'alimentation en eau et envoie une alerte Telegram
  • Appoint automatique pour aquarium : Utiliser un capteur de niveau d'eau dans un aquarium — lorsque le niveau descend en dessous d'un seuil, Python ouvre la vanne pendant 30 secondes pour ajouter de l'eau, puis la ferme et envoie une confirmation Telegram
  • Distributeur de bière/jus : Contrôler une vanne solénoïde alimentaire connectée à un réservoir de liquide — /open distribue le liquide et /close l'arrête, avec un minuteur pour éviter le sur-versement

Relevez le Défi

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

  • Facile : Ajouter une commande Telegram /open_10s qui ouvre la vanne pendant exactement 10 secondes en utilisant time.sleep(10) du côté Python avant d'appeler Bridge.call("close_valve").
  • Moyen : Implémenter un calendrier d'irrigation quotidien : Python lit un fichier de planning (par ex. schedule.json avec des heures d'ouverture/fermeture) et contrôle automatiquement la vanne en fonction de l'horloge système Linux — envoyer une notification Telegram lorsque chaque session commence et se termine.
  • Avancé : Construire un enregistreur de temps de débit : chaque fois que la vanne est ouverte via Telegram ou automatiquement, Python enregistre l'heure de début, l'heure de fermeture et la durée dans un fichier CSV — implémenter une commande Telegram /log qui renvoie les 5 dernières sessions d'irrigation.

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