Electronique & Raspberry Pi : détectez les intrus avec le capteur de mouvement PIR
Le capteur de mouvement PIR (Passive Infrared Sensor) est un senseur électronique qui mesure la lumière infrarouge (IR) rayonnant à partir d’objets dans son champ de vision. Ils sont très souvent utilisés dans les systèmes d’alarmes ou de détection de présence pour leur faible coût (3,80€ chez belectronique.fr) et leur efficacité.
Le fonctionnement d’un capteur PIR n’est pas compliqué à comprendre. Il possède 3 pins : l’alimentation, la masse et le pin data qui va nous intéresser. Par défaut, celui-ci est à l’état bas. Quand le capteur détectera un mouvement cette sortie passera à l’état haut pendant une durée comprise entre 5s et 2min réglable grâce à un des deux petits potentiomètres situés à l’arrière du capteur, l’autre permettant de régler la sensibilité de 3 à 7m.
Pour les détails techniques, ce capteur est basé sur un circuit-integré BISS001, en regardant le datasheet on s’aperçoit que c’est un CI spécialisé pour cette application qu’il opère entre 3 et 5V et qu’il consomme très peu de courant, il est donc idéal pour une utilisation à piles.
Tester un capteur PIR
Pour tester un capteur PIR, rien de plus simple : il suffit de l’alimenter entre 3 et 5V (3 piles LR6 font parfaitement l’affaire, pour ma part j’utilise mon alimentation stabilisée de laboratoire et un régulateur 5V) et de brancher une led avec sa résistance en série sur le pin data. En bon prince je vous ai même fait un schéma de ce circuit d’une difficulté remarquable.
Vous pouvez à présent faire vos tests de distance, de réglages de sensibilité et de temps d’activation.
Oui c’est bien beau mais ça va nous servir à quoi en fait ?
On peut imaginer pas mal d’applications :
- Un allumage automatique d’une lampe quand une personne passe grâce à un relais
- Un « compte-personnes » en reliant la sortie du capteur sur un compteur logique comme le CD4017
- Une alarme entièrement personnalisée et personnalisable avec le Raspberry Pi (quelques pistes dans la suite de l’article)
Et que sais-je d’autre ? La seule limite à l’électronique est votre imagination.
Connecter le capteur PIR au Raspberry Pi
J’ai réalisé un petit programme en python avec la librairie RPi.GPIO qui permet d’utiliser le capteur PIR avec un Raspberry Pi et ainsi avoir accès à beaucoup de possibilités (créations d’événements sous certaines conditions, envoi d’un message sur votre téléphone, interface web regroupant des informations sur votre logement quand vous êtes en déplacement…).
Mon programme allume un buzzer quand un mouvement est détecté, le code n’est pas très compliqué mais permet d’appréhender les bases de cette librairie. Il nécessite les droits sudo pour être exécuté.
import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) pir_pin = 18 #le capteur PIR est connecté au GPIO 18 buzzer_pin = 22 #le buzzer est connecté au GPIO 22 GPIO.setup(pir_pin, GPIO.IN) #configuration en entrée pour le PIR GPIO.setup(buzzer_pin, GPIO.OUT) #configuration en sortie pour le buzzer Try: while True: if GPIO.input(pir_pin): print("MOUVEMENT DETECTE!") GPIO.output(buzzer_pin, True) time.sleep(0.5) except KeyboardInterrut: GPIO.cleanup()
Liens :
Détecteur de mouvement PIR sur belectronique.fr
Datasheet du capteur
Bonjour,
Merci pour ce tutoriel. J’ai fais exactement la même manipulation que vous même, mais mon capteur détecte un mouvement en continu. J’ai réglé la sensibilité dans tout les sens mais rien n’y fait.
Merci.
Salut,
Essaye d’ajouter pull_up_down = GPIO.PUD_DOWN dans le setup du pin d’entrée.
GPIO.setup(pin_dentree, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
Cela aura pour effet de forcer à 0 la valeur du pin et d’éviter les faux positifs.
En espérant que ça t’aide.
TOZ FDP
Bonjour,
J’ai suivi le tuto à la lettre mais quand je lance le script python, je n’ai que des alertes ! Le capteur semble détecter des mouvements constamment alors qu’il n’y a rien.
J’ai testé en scrutant le port GPIO via les commandes wiringPi suivantes :
$ gpio mode 1 in
$ gpio read 1
et le résultat est bien « 0 » puis se met à « 1 » dès que je passe la main devant.
J’ai donc un problème avec python ou avec la librairie RPi.GPIO.
Quelqu’un peut-il m’aider ou m’expliquer pourquoi en python, je vois toujours le port sur « 1 » ?
merci
super tuto 🙂
comment je fait l’appel de ce programme en python dans un programme html pour pouvoir accédé au capteur a l’aide d’une page web.
Merci
bonjour!
merci pour l’article. mon capteur semble en permanence déclenché 3s, se couper, se réenclencher.
il y a bien une alternance cyclique de 0 et de 1, et 3s me semble la durée mini de la valeur haute quand le capteur de déclenche.
j’ai du mal à comprendre ce comportment.