Arduino UNO Q - Capteur de Mouvement

Ce tutoriel vous montre comment utiliser un capteur de mouvement PIR HC-SR501 avec Arduino UNO Q pour détecter le mouvement humain. Vous apprendrez :

Capteur de Mouvement Arduino UNO Q

Matériel Requis

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×Capteur de mouvement HC-SR501
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 de Mouvement HC-SR501

Capteur de Mouvement HC-SR501

Le capteur PIR HC-SR501 détecte le mouvement humain ou animal. Il est couramment utilisé dans l'automatisation de l'éclairage, le contrôle des portes, les escaliers roulants et la détection d'intrus.

Brochage

Le HC-SR501 possède trois broches :

  • Broche GND : Connecter à GND (0V).
  • Broche VCC : Connecter à VCC (5V).
  • Broche OUTPUT : Envoie LOW en l'absence de mouvement, HIGH lorsque du mouvement est détecté. Connecter à une broche d'entrée numérique du MCU.
Brochage du Capteur de Mouvement HC-SR501

Le capteur possède également un cavalier et deux potentiomètres pour ajuster la sensibilité et le délai. Commencez avec les paramètres par défaut — consultez la section Utilisations Avancées pour les détails.

Fonctionnement

Le HC-SR501 détecte le mouvement en percevant les changements de rayonnement infrarouge. Pour déclencher la détection, un objet doit :

  • Être en mouvement
  • Émettre de l'énergie infrarouge (les humains et les animaux le font naturellement)

Comportement de la broche OUTPUT :

  • Aucun mouvement : OUTPUT est LOW.
  • Mouvement détecté : OUTPUT passe de LOW à HIGH.
  • Mouvement arrêté : OUTPUT passe de HIGH à LOW.

Réglage Initial du Capteur

Réglage du délaiVisser entièrement dans le sens antihoraire (délai minimum).
Réglage de la portée de détectionVisser entièrement dans le sens horaire (portée maximale).
Sélecteur de déclenchement répétéPlacer le cavalier en mode déclenchement répétable.
Réglage initial du capteur de mouvement Arduino

Schéma de Câblage

Schéma de Câblage Capteur de Mouvement Arduino UNO Q

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

Code MCU

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

/* * 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-motion-sensor */ #define SENSOR_PIN 2 // The Arduino UNO Q pin connected to the OUTPUT pin of the motion sensor int motion_state = LOW; int prev_motion_state = LOW; void setup() { pinMode(SENSOR_PIN, INPUT); } void loop() { prev_motion_state = motion_state; motion_state = digitalRead(SENSOR_PIN); if (prev_motion_state == LOW && motion_state == HIGH) { // Motion detected — add your action here } else if (prev_motion_state == HIGH && motion_state == LOW) { // Motion stopped — add your action here } }

É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âblez les composants : Connectez VCC → 5V, GNDGND, OUTPUT → broche 2.
  • Connectez : Branchez l'Arduino UNO Q à votre ordinateur avec un câble USB-C.
  • Ouvrez Arduino App Lab : Lancez Arduino App Lab et attendez qu'il détecte votre Arduino UNO Q.
  • Créez une nouvelle App : Cliquez sur le bouton Create New App.
Créer une Nouvelle App dans Arduino App Lab sur Arduino UNO Q
  • Donnez un nom à l'App, par exemple : DIYables_MotionSensor
  • Cliquez sur Create pour confirmer.
  • Vous verrez un ensemble de dossiers et de fichiers générés dans votre nouvelle App.
Dossiers et fichiers de l'App Arduino App Lab sur Arduino UNO Q
  • Trouvez le fichier sketch/sketch.ino — c'est là que vous collerez le sketch MCU.
  • Collez le sketch : Copiez le code MCU ci-dessus et collez-le dans le fichier sketch. Conservez 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éversez : Cliquez sur le bouton Run dans Arduino App Lab pour compiler et téléverser vers le STM32.
    Cliquer sur le bouton Run dans Arduino App Lab sur Arduino UNO Q
    • Testez : Marchez devant le capteur. Utilisez la section Bridge ci-dessous pour voir les événements de mouvement dans le Monitor.

    Programmation Bridge Linux + MCU

    L'Arduino UNO Q dispose 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 de mouvement est connecté au MCU (STM32) — broche OUTPUT sur la broche 2.
    • Le MPU ne peut pas lire le capteur directement — il appelle Bridge.call("check_motion") sur le MCU, qui lit le capteur et signale les transitions de mouvement au Monitor.
    • Le MPU dispose du Wi-Fi — parce que le MPU exécute Debian Linux complet avec Wi-Fi, il peut transmettre les alertes de mouvement à Telegram.
    • Communication : Bridge.call() côté Linux invoque Bridge.provide() côté MCU (puisque seul digitalRead() est utilisé — aucune écriture matérielle)
    • ⚠️ Réservé : /dev/ttyHS1 (Linux) et Serial1 (MCU) sont utilisés par l'Arduino Router — ne les ouvrez jamais directement

    En bref : Le MPU interroge le capteur → le MCU lit la broche et signale les transitions → le Monitor affiche les événements de mouvement.

    Sketch MCU — détection de mouvement avec 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-motion-sensor */ #include "Arduino_RouterBridge.h" #define SENSOR_PIN 2 int motion_state = LOW; int prev_motion_state = LOW; void check_motion() { prev_motion_state = motion_state; motion_state = digitalRead(SENSOR_PIN); if (prev_motion_state == LOW && motion_state == HIGH) { Monitor.println("Motion detected!"); } else if (prev_motion_state == HIGH && motion_state == LOW) { Monitor.println("Motion stopped!"); } else { Monitor.println(motion_state == HIGH ? "Motion: ACTIVE" : "Motion: none"); } } void setup() { Bridge.begin(); Monitor.begin(); pinMode(SENSOR_PIN, INPUT); Bridge.provide("check_motion", check_motion); Monitor.println("Motion Sensor Bridge ready"); } void loop() {}

    Script Python (Arduino App Lab) — interroge les événements de mouvement toutes les 0,5 secondes :

    /* * 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-motion-sensor */ from arduino.app_utils import * import time def loop(): Bridge.call("check_motion") time.sleep(0.5) 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 (sur Linux) ni n'utilisez Serial1 (sur MCU) dans votre code — ils sont réservés par l'Arduino Router et y accéder cassera le Bridge.

    Étapes Rapides

    • Téléversez le sketch MCU : Ouvrez Arduino App Lab, créez une nouvelle App, collez le sketch Bridge MCU dans sketch/sketch.ino, installez la bibliothèque Arduino_RouterBridge, et cliquez sur Run.
    • Ajoutez le script Python : Collez le code Python ci-dessus dans l'onglet Python de la même App.
    • Exécutez l'App : Cliquez sur Run — Python interroge le capteur de mouvement toutes les 0,5 secondes.
    • Vérifiez la console : Ouvrez l'onglet Console → sous-onglet MCU Monitor et marchez devant le capteur.

    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
    Motion Sensor Bridge ready Motion detected! Motion stopped! Motion detected! Motion stopped!

    Intégration Telegram

    Recevez des alertes de mouvement 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 : Conservez 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 détection de mouvement :

    /* * 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-motion-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 == "/status": status = Bridge.call("check_motion") send_message(chat_id, status if status else "No motion state change since last check.") else: send_message(chat_id, "Commands:\n/status — check current motion sensor state") time.sleep(0.5) App.run(user_loop=loop)
    • Remarque : Remplacez YOUR_BOT_TOKEN par le token obtenu depuis @BotFather sur Telegram.
    • Envoyez /status pour déclencher une vérification manuelle de l'état du capteur de mouvement.

    Étapes Rapides

    • Téléversez le sketch MCU : Utilisez le sketch Bridge MCU de la section précédente (téléversez-le d'abord si ce n'est pas déjà fait).
    • Collez le script Telegram : Copiez le code Python ci-dessus dans l'onglet Python de votre App dans Arduino App Lab.
    • Définissez votre token : Remplacez YOUR_BOT_TOKEN dans le script par votre token de bot réel.
    • Exécutez l'App : Cliquez sur Run — le bot commence à écouter les messages Telegram.
    • Testez : Envoyez /status — le bot répond avec l'état du mouvement actuel.

    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: /status [2026-04-29 12:00:01] Motion: none [2026-04-29 12:01:30] Telegram: /status [2026-04-29 12:01:30] Motion detected!
    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
    /status
    10:15 AM ✓✓
    Motion: none
    10:16 AM
    /status
    10:17 AM ✓✓
    Motion detected!
    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.

    Utilisations Avancées

    Cette section est consacrée à des connaissances approfondies. NE vous inquiétez pas si vous ne comprenez pas. Ignorez cette section si elle vous surcharge, et revenez un autre jour. Continuez à lire les sections suivantes.

    Réglage de la Portée de Détection

    Ajuste la distance de détection (environ 3 à 7 mètres) :

    • Complètement dans le sens horaire → ~3 mètres.
    • Complètement dans le sens antihoraire → ~7 mètres.
    Portée de Détection du Capteur de Mouvement

    Réglage du Délai

    Ajuste le temps de maintien après l'arrêt du mouvement :

    • Complètement dans le sens horaire → ~5 minutes.
    • Complètement dans le sens antihoraire → ~3 secondes.
    Réglage du délai du capteur de mouvement

    Sélecteur de Mode de Déclenchement

    Sélection du déclencheur du capteur de mouvement
    • Mode déclenchement unique : OUTPUT passe à HIGH pendant time_delay, puis LOW pendant 3 secondes, en se répétant tant que le mouvement continue.
    • Mode déclenchement répétable : OUTPUT reste HIGH pendant toute la durée du mouvement plus time_delay. Recommandé pour la plupart des applications.

    ※ Note:

    Utilisez le mode déclenchement répétable pour la plupart des applications. En pratique :

    • Les appareils s'allument lorsqu'une personne est détectée.
    • Les appareils s'éteignent après un délai une fois la personne partie.

    Idées d'Applications/Projets

    • Éclairage intelligent : Allumez les lumières quand quelqu'un entre dans une pièce, éteignez-les après son départ
    • Alerte de sécurité : Envoyez un message Telegram chaque fois que du mouvement est détecté
    • Compteur d'occupation : Comptez combien de fois le mouvement démarre par heure
    • Économie d'énergie : Éteignez les appareils après une période sans mouvement détecté

    Défiez-vous

    • Facile : Faites clignoter une LED trois fois chaque fois que du mouvement est détecté
    • Moyen : Enregistrez les événements de mouvement avec des horodatages dans un fichier sur le MPU
    • Avancé : Envoyez automatiquement une notification Telegram (sans avoir besoin de /status) chaque fois que du mouvement est détecté

    Références des Fonctions

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