Combinez un capteur de porte avec une LED sur Arduino UNO Q pour que la LED s'allume automatiquement quand la porte s'ouvre et s'éteigne quand elle se ferme. Ajoutez Bridge et Telegram pour contrôler la LED à distance et recevoir des alertes instantanées de porte.
Dans ce tutoriel, vous apprendrez :
Comment câbler un capteur de porte et une LED sur le MCU Arduino UNO Q
Comment programmer le MCU (code Arduino C/C++) pour contrôler une LED avec un capteur de porte
Comment programmer le côté Linux (Python) et le côté MCU (C/C++) pour surveiller l'état de la porte et contrôler la LED via Bridge
Comment recevoir des alertes Telegram et contrôler la LED à distance quand la porte s'ouvre ou se ferme
Comment utiliser OpenClaw sur Arduino UNO Q avec le capteur de porte et la LED
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: Pour simplifier le processus de câblage, nous recommandons d'utiliser le LED Module, qui est livré avec une résistance intégrée.
À Propos de la LED et du Capteur de Porte
Si vous n'êtes pas familier avec la LED ou le capteur de porte, consultez d'abord ces tutoriels :
Synchronisez l'état de la LED avec le capteur de porte :
int door_state = digitalRead(DOOR_SENSOR_PIN);if (door_state == HIGH)digitalWrite(LED_PIN, HIGH); // porte ouverte → LED ALLUMÉEelsedigitalWrite(LED_PIN, LOW); // porte fermée → LED ÉTEINTE
Code Arduino UNO Q
L'Arduino UNO Q dispose de deux processeurs travaillant ensemble :
Le MCU STM32 lit le capteur de porte et contrôle la LED directement — pas de délais nécessaires, toute la logique s'exécute sur le MCU
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.
La LED s'allume quand la porte s'ouvre et s'éteint quand elle se ferme. L'état est imprimé sur le Moniteur Série toutes les 500ms.
/* * 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-door-sensor-led*/#define DOOR_SENSOR_PIN 9#define LED_PIN 3int door_state;voidsetup() {Serial.begin(9600);pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP);pinMode(LED_PIN, OUTPUT);Serial.println("Arduino UNO Q Door Sensor + LED ready");}voidloop() { door_state = digitalRead(DOOR_SENSOR_PIN);if (door_state == HIGH) {Serial.println("The door is open → LED ON");digitalWrite(LED_PIN, HIGH); } else {Serial.println("The door is closed → LED OFF");digitalWrite(LED_PIN, LOW); }delay(500);}
Étapes Rapides
Première utilisation de l'Arduino UNO Q ? Suivez le tutoriel Démarrer avec Arduino UNO Q avant de continuer.
Connecter : Câblez le capteur de porte et la LED sur le MCU Arduino UNO Q comme indiqué dans le schéma de câblage.
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 Créer une nouvelle application, nommez-la DoorSensorLed, puis cliquez sur Créer.
Coller le programme : Collez le code MCU dans sketch/sketch.ino.
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.
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_RouterBridgeArduino
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.
Ouvrez et fermez la porte — la LED devrait s'allumer quand la porte est ouverte et s'éteindre quand elle est fermée.
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
[2026-04-29 09:00:01] Arduino UNO Q Door Sensor + LED ready
[2026-04-29 09:00:02] Door: CLOSED LED: OFF
[2026-04-29 09:00:03] Door: OPEN LED: ON
[2026-04-29 09:00:05] Door: CLOSED LED: OFF
Bridge : Linux + MCU
/* * 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-door-sensor-led*/#include"Arduino_RouterBridge.h"#define DOOR_SENSOR_PIN 9#define LED_PIN 3int last_state = LOW;bool door_opened_event = false;bool door_closed_event = false;String get_door_state(String arg) {int state = digitalRead(DOOR_SENSOR_PIN);return (state == HIGH) ? "open" : "closed";}String get_led_state(String arg) {return (digitalRead(LED_PIN) == HIGH) ? "on" : "off";}String set_led(String arg) {if (arg == "on") {digitalWrite(LED_PIN, HIGH); Monitor.println("LED turned ON via Bridge");return"on"; } else {digitalWrite(LED_PIN, LOW); Monitor.println("LED turned OFF via Bridge");return"off"; }}String get_event(String arg) {if (door_opened_event) { door_opened_event = false;return"opened"; }if (door_closed_event) { door_closed_event = false;return"closed"; }return"none";}voidsetup() {Bridge.begin(); Monitor.begin();pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP);pinMode(LED_PIN, OUTPUT); last_state = digitalRead(DOOR_SENSOR_PIN);digitalWrite(LED_PIN, (last_state == HIGH) ? HIGH : LOW);Bridge.provide("get_door_state", get_door_state);Bridge.provide("get_led_state", get_led_state);Bridge.provide_safe("set_led", set_led);Bridge.provide("get_event", get_event); Monitor.println("Arduino UNO Q Door Sensor + LED Bridge ready"); Monitor.println(last_state == HIGH ? "Door is open" : "Door is closed");}voidloop() {int state = digitalRead(DOOR_SENSOR_PIN);if (state != last_state) { last_state = state;if (state == HIGH) { door_opened_event = true;digitalWrite(LED_PIN, HIGH); Monitor.println("Door opened! LED ON"); } else { door_closed_event = true;digitalWrite(LED_PIN, LOW); Monitor.println("Door closed. LED OFF"); } }}
/* * 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-door-sensor-led*/from arduino.app_utils import *import timedef loop(): door = Bridge.call("get_door_state") led = Bridge.call("get_led_state")print(f"Door: {door} LED: {led}") time.sleep(0.5)App.run(user_loop=loop)
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
[2026-04-29 09:00:01] Arduino UNO Q Door Sensor + LED Bridge ready
[2026-04-29 09:00:02] Door: CLOSED LED: OFF
[2026-04-29 09:00:03] Door: OPEN LED: ON
DIYables_Apps
Stop
sketch.ino
1#include"Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:00:02] Door: CLOSED LED: OFF
[2026-04-29 09:00:03] ⚠️ Door OPENED — LED turned ON
Telegram
Recevez des alertes Telegram quand la porte s'ouvre ou se ferme, et contrôlez la LED à distance.
Programme MCU : Conservez le même programme MCU de la section Bridge précédente.
/* * 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-door-sensor-led*/from arduino.app_utils import *import requestsimport timeTELEGRAM_BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN"CHAT_ID = "YOUR_CHAT_ID"last_update_id = 0def 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"]exceptExceptionas 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)exceptExceptionas e:print(f"Error sending message: {e}")def loop():# Auto-notify on door events event = Bridge.call("get_event")if event == "opened": msg = "🚪 Door opened! LED is ON."print(msg) send_message(CHAT_ID, msg)elif event == "closed": msg = "🔒 Door closed. LED is OFF."print(msg) send_message(CHAT_ID, msg)# Handle Telegram commands updates = get_updates()for update in updates: last_update_id = update["update_id"]if"message"notin 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 Door Sensor + LED Bot\n""/door - Read current door state\n""/led - Read current LED state\n""/ledon - Turn LED on\n""/ledoff - Turn LED off\n""/event - Check for a door event")elif text == "/door": result = Bridge.call("get_door_state") send_message(chat_id, f"Door state: {result}")elif text == "/led": result = Bridge.call("get_led_state") send_message(chat_id, f"LED state: {result}")elif text == "/ledon": result = Bridge.call("set_led", "on") send_message(chat_id, f"LED turned: {result}")elif text == "/ledoff": result = Bridge.call("set_led", "off") send_message(chat_id, f"LED turned: {result}")elif text == "/event": result = Bridge.call("get_event") send_message(chat_id, f"Door event: {result}")else: send_message(chat_id, "Unknown command. Send /start for help.") time.sleep(0.5)App.run(user_loop=loop)
Sortie de la Console App Lab
DIYables_Apps
Stop
sketch.ino
1#include"Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:00:01] Waiting for Telegram messages...
[2026-04-29 09:00:05] ⚠️ Door OPENED
[2026-04-29 09:00:10] Door CLOSED
Telegram12:45
Welcome to Telegram!
ArduinoBot10:19
Chatting with Arduino...
BotFatherYesterday
Your bot has been created.
ArduinoBot
bot
Today
/led_on
10:15 AM✓✓
LED is ON.
10:16 AM
/led_off
10:17 AM✓✓
LED is OFF.
10:18 AM
/door
10:19 AM✓✓
Door: OPEN
10:20 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
Lumière automatique d'entrée : La LED (ou une ampoule via relais) s'allume automatiquement quand la porte d'entrée s'ouvre
Alarme de porte : Recevez une alerte Telegram immédiate quand une porte ou fenêtre surveillée s'ouvre
Journal de présence : Enregistrez chaque ouverture de porte avec horodatage dans un fichier Linux pour suivre les heures d'entrée et de sortie
Sécurité de pièce : La LED rouge s'allume dans une pièce adjacente quand quelqu'un entre
Mettez-Vous au Défi
Facile : Ajoutez un buzzer qui bipe quand la porte s'ouvre.
Moyen : Ajoutez un compteur qui compte combien de fois la porte a été ouverte et rapportez-le via /count sur Telegram.
Avancé : Implémentez une alarme avec délai — envoyez une alerte Telegram seulement si la porte reste ouverte plus de 30 secondes.
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 !