Raspberry Pi - Capteur de mouvement

Vous êtes-vous déjà demandé, “Comment cela fonctionne-t-il ?”, lorsque vous rencontrez des endroits avec des portes automatiques, des lumières et des escalators ? Si oui, ce tutoriel non seulement répondra à votre question, mais vous montrera également comment y parvenir en utilisant un Raspberry Pi et un capteur de mouvement. Commençons !

Ce tutoriel vous apprend à utiliser un Raspberry Pi avec un capteur de mouvement. En détail, nous apprendrons :

Préparation du matériel

1×Raspberry Pi 4 Model B
1×HC-SR501 Motion Sensor
1×Jumper Wires
1×(Optional) Screw Terminal Block Shield for Raspberry Pi
1×(Optional) USB-C Power Cable with On/Off Switch for Raspberry Pi 4B
1×(Optional) Plastic Case and Cooling Fan for Raspberry Pi 4B
1×(Optional) HDMI Touch Screen Monitor for Raspberry Pi

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
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 est capable de détecter le mouvement des humains (ou des animaux). Il est largement utilisé dans une variété d'applications, telles que l'allumage/extinction automatique des ampoules, l'ouverture/fermeture des portes, l'activation/désactivation des escalators et la détection des intrus.

Le brochage du capteur de mouvement

Le capteur de mouvement HC-SR501 a 3 broches :

  • Broche GND : doit être reliée à GND (0V)
  • Broche VCC : doit être reliée à VCC (5V)
  • Broche OUTPUT : est une broche de sortie qui est à BAS lorsque aucun mouvement n'est détecté et à HAUT lorsque un mouvement est détecté. Cette broche doit être connectée à une broche d'entrée d'un Raspberry Pi.

Le HC-SR501 a un cavalier et deux potentiomètres. Ceux-ci sont utilisés pour ajuster les réglages du capteur.

Brochage du capteur de mouvement HC-SR501

Comment ça marche

Le capteur HC-SR501 est capable de reconnaître le mouvement en fonction des changements de la radiation infrarouge émise par un objet en mouvement. Pour être identifié par le capteur HC-SR501, l'objet doit satisfaire deux critères :

  • Il doit être en mouvement ou en vibration.
  • Il doit émettre de la lumière infrarouge.

Ainsi :

  • Si un objet est en mouvement mais n'émet pas de rayons infrarouges (par exemple, un robot ou un jouet véhicule), il ne sera pas détecté par le capteur.
  • Si un objet émet des rayons infrarouges mais n'est pas en mouvement (par exemple, une personne immobile), il ne sera pas détecté par le capteur.

Les humains et les animaux sont des sources de rayonnement infrarouge. Par conséquent, le capteur peut reconnaître leurs mouvements.

État de la broche OUTPUT :

  • Lorsque aucun humain (ou animal) n'est présent dans la plage détectée par le capteur, la broche OUTPUT est BASSE.
  • Si un humain (ou un animal) entre dans la plage détectée par le capteur, la broche OUTPUT passe de BASSE à ÉLEVÉE, indiquant qu'un mouvement a été détecté.
  • Si l'humain (ou l'animal) quitte la plage détectée par le capteur, la broche OUTPUT passe d'ÉLEVÉE à BASSE, indiquant que le mouvement a cessé.

La vidéo ci-dessus montre le fonctionnement théorique du détecteur de mouvement. En réalité, le détecteur de mouvement fonctionne légèrement différemment, selon les réglages du capteur (qui sont abordés dans la section Utilisations Avancées).

Détecter la Présence Humaine

Le capteur ne reconnaît pas la présence humaine. Il détecte uniquement le mouvement. Nous utilisons un Raspberry Pi pour inférer la présence de personnes en fonction du mouvement détecté par le capteur, en suivant ce principe :

  • Si un mouvement est observé, alors des personnes sont présentes.
  • Si aucun mouvement n'est détecté, alors des personnes sont absentes.

Cette règle est imparfaite dans un scénario pratique : lorsque des humains se trouvent dans la portée du capteur mais ne bougent pas, aucun mouvement n'est détecté. Par conséquent, le Raspberry Pi conclut que l'humain n'est pas présent.

Par exemple, dans votre salle de réunion, le détecteur de mouvement est utilisé pour allumer et éteindre la lumière. Lorsque des personnes entrent dans la salle, la lumière s'allume automatiquement. Si tout le monde reste immobile pendant la réunion, aucun mouvement ne sera détecté, indiquant qu'il n'y a personne, donc la lumière s'éteindra. Pour rallumer la lumière, quelqu'un doit bouger.

Cependant, ce problème n'est PAS grave et le capteur est peu coûteux. Par conséquent, il est largement utilisé pour détecter les humains dans de nombreuses applications.

Raspberry Pi - Capteur de Mouvement HC-SR501

Connectez le pin d'entrée numérique d'un Raspberry Pi au pin OUTPUT du capteur HC-SR501. En utilisant le code du Raspberry Pi, nous pouvons vérifier la valeur du pin OUTPUT pour détecter le mouvement.

Diagramme de câblage

Schéma de câblage du capteur de mouvement Raspberry Pi

This image is created using Fritzing. Click to enlarge image

Pour simplifier et organiser votre câblage, nous vous recommandons d'utiliser un Screw Terminal Block Shield pour Raspberry Pi. Ce shield garantit des connexions plus sûres et plus faciles à gérer, comme illustré ci-dessous :

Raspberry Pi Screw Terminal Block Shield

Réglage initial

Time Delay AdjusterScrew it in anti-clockwise direction fully.
Detection Range AdjusterScrew it in clockwise direction fully.
Repeat Trigger SelectorPut jumper as shown on the image.
réglage initial du capteur de mouvement arduino

Comment programmer un capteur de mouvement

  • Configurez une entrée numérique sur la broche d'un Raspberry Pi en utilisant la fonction GPIO.setup().
GPIO.setup(PIR_PIN, GPIO.IN)
  • Accédez à la broche OUTPUT du capteur en utilisant la fonction GPIO.input().
pir_value = GPIO.input(PIR_PIN) # Valeur du détecteur de mouvement infrarouge passif

Code Raspberry Pi - Imprimer l'état du mouvement

Étapes rapides

  • Assurez-vous d'avoir Raspbian ou tout autre système d'exploitation compatible avec le Raspberry Pi installé sur votre Pi.
  • Assurez-vous que votre Raspberry Pi est connecté au même réseau local que votre PC.
  • Assurez-vous que votre Raspberry Pi est connecté à Internet si vous avez besoin d'installer des bibliothèques.
  • Si c'est la première fois que vous utilisez Raspberry Pi, voyez Installation du logiciel - Raspberry Pi..
  • Connectez votre PC au Raspberry Pi via SSH en utilisant le client SSH intégré sur Linux et macOS ou PuTTY sur Windows. Voir comment connecter votre PC au Raspberry Pi via SSH.
  • Assurez-vous d'avoir la bibliothèque RPi.GPIO installée. Si ce n'est pas le cas, installez-la en utilisant la commande suivante :
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Créez un fichier script Python motion_sensor.py et ajoutez le code suivant :
# Ce code Raspberry Pi a été développé par newbiely.fr # Ce code Raspberry Pi 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/raspberry-pi/raspberry-pi-motion-sensor import RPi.GPIO as GPIO import time # Set the GPIO mode and HC-SR501 PIR motion sensor pin GPIO.setmode(GPIO.BCM) PIR_PIN = 12 GPIO.setup(PIR_PIN, GPIO.IN) try: while True: # Read the HC-SR501 PIR motion sensor value pir_value = GPIO.input(PIR_PIN) # PIR output is high when motion is detected if pir_value == GPIO.HIGH: print("Motion detected!") else: print("No motion detected.") time.sleep(0.1) except KeyboardInterrupt: print("Exiting...") GPIO.cleanup()
  • Enregistrez le fichier et exécutez le script Python en exécutant la commande suivante dans le terminal :
python3 motion_sensor.py
  • Déplacez votre main devant la plage du capteur.
  • Vérifiez la sortie dans le Terminal.
PuTTY - Raspberry Pi
No motion detected. No motion detected. No motion detected. Motion detected! Motion detected! Motion detected! Motion detected!

Le script s'exécute en boucle infinie continuellement jusqu'à ce que vous appuyiez sur Ctrl + C dans le terminal.

Le code ci-dessus vérifie continuellement l'état de mouvement et l'affiche. Dans certains cas, vous pourriez souhaiter l'imprimer ou agir lors de la détection d'un changement dans l'état de mouvement. Si un tel scénario se présente, consultez la session suivante.

Code Raspberry Pi - Détecte les changements d'état de mouvement

  • Créez un fichier script Python motion_sensor_events.py et ajoutez le code suivant :
# Ce code Raspberry Pi a été développé par newbiely.fr # Ce code Raspberry Pi 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/raspberry-pi/raspberry-pi-motion-sensor import RPi.GPIO as GPIO import time # Set the GPIO mode and HC-SR501 PIR motion sensor pin GPIO.setmode(GPIO.BCM) PIR_PIN = 12 GPIO.setup(PIR_PIN, GPIO.IN) # Initialize variables to keep track of previous and current states prev_pir_value = GPIO.LOW pir_value = GPIO.LOW try: while True: # Read the HC-SR501 PIR motion sensor value pir_value = GPIO.input(PIR_PIN) # Check for change event (motion started or stopped) if pir_value != prev_pir_value: if pir_value == GPIO.HIGH: print("Motion started!") else: print("Motion stopped!") # Update the previous value with the current value prev_pir_value = pir_value time.sleep(0.1) except KeyboardInterrupt: print("Exiting...") GPIO.cleanup()
  • Enregistrez le fichier et exécutez le script Python en exécutant la commande suivante dans le terminal :
python3 motion_sensor_events.py
  • Déplacez votre main devant la portée du capteur.
  • Vérifiez la sortie dans le Terminal.
PuTTY - Raspberry Pi
Motion started! Motion stopped!

Vidéo

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.

Comme indiqué précédemment, un cavalier et deux potentiomètres peuvent être utilisés pour modifier la configuration du capteur.

Ajusteur de portée de détection

Ce potentiomètre est utilisé pour modifier la distance à laquelle quelque chose peut être détecté (entre environ 3 et 7 mètres).

  • Le tourner complètement vers la droite permet de détecter des objets jusqu'à environ 3 mètres.
  • Le tourner complètement vers la gauche permet de détecter des objets jusqu'à environ 7 mètres.
Portée de détection du capteur de mouvement

Régleur de délai temporel

Ce potentiomètre est utilisé pour modifier le délai temporel.

  • Lorsqu'il est tourné complètement dans le sens des aiguilles d'une montre, le délai est d'environ 5 minutes.
  • Lorsqu'il est tourné complètement dans le sens contraire des aiguilles d'une montre, le délai est d'environ 3 secondes.

La partie suivante élucide le concept de retard temporel en relation avec le déclencheur de répétition.

délai de réglage du capteur de mouvement

Sélecteur de Déclenchement Répété

Il existe un cavalier qui est utilisé pour choisir les modes de déclenchement : déclenchement unique ou déclenchement répétable.

sélection de déclenchement du capteur de mouvement

Faisons référence au réglage du délai, qui est réglé via le Time Delay Adjuster, en tant que time_delay. Si vous continuez à bouger dans la zone de portée du capteur pendant une longue période (appelée motion_time, qui est plusieurs fois plus longue que time_delay), alors en mode de déclenchement unique, l'état de la broche OUTPUT sera basculé entre BAS et HAUT plusieurs fois. La durée HAUTE sera égale à time_delay, tandis que la durée BAS sera fixée à 3 secondes.

mode de déclenchement unique du détecteur de mouvement
  • Mode de déclenchement répétable : L'état de la broche OUTPUT restera HAUT pendant une période de (motion_time + time_delay).
mode de déclenchement répétable du capteur de mouvement

Test en cours

  • Mode de déclenchement unique :
    • Placez le cavalier pour sélectionner le mode de déclenchement unique
    • Agitez votre main devant le capteur pendant environ 10 secondes
    • Éloignez votre main du capteur
    • Attendez 3 secondes et vous observerez la sortie dans le moniteur série comme ceci :
    PuTTY - Raspberry Pi
    Motion started! Motion stopped! Motion started! Motion stopped! Motion started! Motion stopped!

    Mode de déclenchement répétable :

    • Placez le cavalier pour sélectionner le mode de déclenchement répétable
    • Déplacez votre main devant le capteur pendant environ 10 secondes
    • Retirez votre main de la portée du capteur
    • Attendez 3 secondes et vous observerez la sortie dans le moniteur série comme suit :
    PuTTY - Raspberry Pi
    Motion started! Motion stopped!

    Nous pouvons observer que lorsque le mode "déclencheur unique" est activé, le capteur s'active deux ou trois fois. En revanche, en mode "déclencheur répétable", le capteur ne s'active qu'une seule fois.

    ※ Note:

    Pendant le temps BAS (3 secondes), qui est une valeur fixe et non ajustable, le capteur ne peut détecter aucun mouvement. En d'autres termes, il est bloqué pendant cette période, mais cela ne pose aucun problème.

    Il est suggéré d'utiliser le mode de déclenchement répétable.

    Pour de nombreuses applications dans le monde réel :

    • Nous allumons ou activons les machines/appareils lorsqu'une personne est présente
    • Nous n'éteignons pas ou ne désactivons pas les machines/appareils immédiatement lorsque la personne n'est plus présente. Nous les éteignons ou les désactivons après un délai de temporisation.

    Comment utiliser le délai temporel

    Si aucun humain n'est détecté, le système d'automatisation attendra un certain temps avant d'agir.

    Le capteur de mouvement dispose d'un ajusteur de délai temporel qui peut être réglé sur un minimum de 3 secondes et un maximum de 5 minutes. De plus, toute valeur peut être définie dans le code Raspberry Pi par programmation.

    Si nous ne spécifions pas de délai d'attente dans le code Raspberry Pi, le délai d'attente sera équivalent au délai défini dans le capteur.

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!