Les capteurs PIR, pour Passive Infrared Sensor (capteur infrarouge passif) permettent de détecter la présence d’humains mobiles dans le champ du capteur (ça ne fonctionne pas avec les zombies!). Ils sont utilisés dans divers systèmes de sécurité et détecteurs de mouvements. On en trouve à bas coût, et ils sont très simples à utiliser. Cet article servira de tutoriel sur l’utilisation d’un capteur PIR avec un Arduino.
Le capteur PIR
Ces capteurs n’émettent rien (d’ou le passive dans le nom), mais au contraire captent les rayonnement infrarouge émis les êtres vivants à sang chaud passant dans le champ de détection du capteur. Pour élargir la zone de détection, ceux ci sont souvent recouverts d’une lentille dite de Fresnel. Des composants électroniques divers traitent la sortie brute du capteur en lui même et permettent d’obtenir une sortie numérique en fonction du mouvement détecté. Vous pourrez trouver davantage d’informations à ce sujet sur cette page du site Adafruit (en anglais).
Capteur PIR et Arduino : le câblage
Le câblage est extrêmement simple, comme le montre le schéma suivant :
Il suffit en effet de connecter la broche + du capteur (qui ne ressemblera pas à celui du schéma, mais plutôt à celui de la photo en tête d’article) au 5V du Arduino (ou au 3.3V si votre carte fonctionne à cette tension), la broche gnd ou – à la masse du Arduino (gnd), et la broche out/signal à la broche D2 du Arduino (ou une autre, au choix). Et là… c’est fini! 🙂
Vérifiez bien toutefois les broches sur le capteur, une inversion du + et du – pourrait abîmer voir griller votre capteur.
Programme
Le programme est tout aussi simple, puisqu’il suffit de lancer Arduino, puis ouvrir le menu Fichier, cliquer sur Exemples, puis 02.Digital, et enfin Button. On utilise en effet le même code que pour l’exemple sur la lecture d’un bouton, car le capteur fonctionne d’une façon comparable. Si de l’activité est détectée, il enverra un signal logique haut (5V) sinon il enverra un signal logique bas (0V). De ce fait, en fonction de la valeur lue sur la broche D2 on pourra allumer ou eteindre la LED. Voici le code commenté en français:
const int buttonPin = 2; // broche du capteur PIR const int ledPin = 13; // la LED du Arduino int buttonState = 0; // etat de la sortie du capteur void setup() { pinMode(ledPin, OUTPUT); //la broche de la LED est mise en sortie pinMode(buttonPin, INPUT); //la broche du capteur est mise en entree } void loop() { buttonState = digitalRead(buttonPin);//lecture du capteur if (buttonState == HIGH) //si quelquechose est detecte { digitalWrite(ledPin, HIGH); //on allume la LED } else //sinon { digitalWrite(ledPin, LOW); //on eteint la LED } }
En compilant puis téléversant ce code, vous pourrez observer la LED du Arduino (qui est connectée à la sortie 13) s’allumer quand une activité est détectée par le capteur et s’éteindre dans le cas contraire
Conclusions
Ce capteur est très simple, mais également fiable, efficace, précis et peu coûteux. Autant de bonnes raisons de l’intégrer dans divers projets. Pour détecter le passage de personnes dans une zone, le code ci dessus conviendra bien, puisqu’on souhaitera une bonne réactivité du système. En revanche, si l’on souhaite commander un éclairage, il sera désagréable de voir celui ci s’éteindre à chaque fois qu’on reste immobile quelques secondes. Pour y remédier, il faudra modifier le code, en ajoutant un délai à l’extinction pour que l’éclairage ne se coupe que si aucune activité n’est détectée pendant une durée à déterminer.
Nous nous pencherons sur ces problématiques dans un prochain billet, sur la création d’un contrôleur d’éclairage à automatique basé sur le capteur PIR, et reprenant la base que nous avons développée et présentée dans le billet sur le contrôleur de LED simple.
Bonjour,
Je suis complétement novice en Arduino et autres Rasp’framboises.
Mais bricoleur depuis toujours, avec un minimum de base en montages électroniques simples.
Pouvez-vous me dire comment lancer un fichier MP3 suite à la détection d’une présence grâce au PIR?
A partir d’un module Arduino de base. Quel module son conseillez-vous?
Et quel code… le plus gros problème pour moi… J’ai des notions de basic mais c’est tout. Et ne comprends pas très bien comment entrer ces lignes de codes dans la mémoire de l’Arduino. Je travaille sur MacOs Sierra.
Merci pour votre aide
J
Hello! Le Arduino ne peut pas lire un MP3, il n’est pas assez puissant pour. Il y a des moyens, mais il faut des composants supplémentaires qui lisent le MP3.
La solution c’est de tout faire depuis un raspi.
Le capteur PIR connecté au RASPI, et un script python qui analyse la sortie du capteur dans une boucle infinie.
Du coup , si la sortie du capteur est à 1, on lance une commande qui lit le MP3 (il faut chercher un peu, mais il existe
des logiciels en ligne de commande qui lisent des MP3), sinon on ne fait rien.
Pour apprendre à programmer en python, voici un lien :
http://linuxfr.org/news/domptage-de-serpents-pour-les-enfants-apprendre-%C3%A0-programmer-en
Il y a un lien vers un PDF en français, qui permettra TRÈS RAPIDEMENT d’apprendre à programmer un peu; et pourquoi pas davantage avec un peu plus d’engagement 🙂
Hello !
Pour la réalisation de mon projet je souhaite utiliser ce capteur infrarouge : http://www.gotronic.fr/art-capteur-infrarouge-c7288-11553.htm
Celui-ci fonctionne de la même manière mais en utilisant la différence de température.
Du coup, je me demande, le programme va t-il fonctionner ?
Merci d’avance !
Hello Loan, c’est le même capteur, donc ça fonctionnera pareil 🙂 (les capteurs PIR fonctionnent sur ce principe de différence de température, avec un peu d’électronique pour faire un seuil quand un changement important est détecté)
Par contre le capteur sur ce lien est un peu cher, il doit être moitié moins cher chez snootlab!
Merci Sky pour ta réponse rapide ! 🙂 Je vais voir ça chez snootlab !
[…] Comme dit plus haut, vous pourrez approfondir le sujet en consultant mon tutoriel sur les capteurs PIR et leur utilisation sur un Arduino. […]
Bonjour,
Je recherche une solution pour démarrer mon programme sur elegoo uno r3 (arduino uno) qui grâce à un détecteur PIR actionne deux moteurs pas à pas; pour les moteurs tout est ok mais je ne trouve pas la programmation qui met en attente le programme si rien n’est détecté.
Merci d’avance.
Bonjour et tout d’abord merci pour ces explications claires et détaillées sur le principe du capteur PIR Incompatible avec mes besoins je pense avoir enfin une partie de la solution avec ce capteur, mais je n’ai jamais rien programmé et je commence tout juste à discerner le fonctionnement des cartes dont la arduino la magique ! Je v=crois aussi avoir vu tous les tutos sur la question pour la réalisation de mon projet, mais en vain ..
Il me faut décrire mon projet de façon simple et sans dessin, ce qui pour moi (graphiste) est déjà un premier défi.
Donc voilà , imaginons trois espaces, un que j’appellerais l’entré, l’autre local central et le dernier local de réserve. . Il s’agit de cheminer de l’entrée jusqu’à la réserve en passant par celui du milieu muni de fait de deux porte et leurs deux serrure magnétiques et aussi d’un éclairage. L’accès à la réserve par ce chemin sera rendu impossible et c’est le but de mon projet.
Le besoin serait le suivant : Tout d’abord rendre accessible le local central muni d’un serrure électrique (télécommande sans doute). Ensuite, au franchissement de l’espace central, une fois entré dans cet espace déclencher la lumière tant que la personne est dans le local central et en même temps condamner la serrure de la porte du fond jusqu’à sa sortie, la sortie éteignant la lumière et dé-condamnant la porte du fond.
Le pense que cela doit être faisable, mais que cela doit demander aussi une sacrée maitrise de la logique domotique les événement étant liés les uns aux autres et en fonction de la présence ou pas d’une personne, d’ailleurs je en suis pas sur de poster au bonne endroit d’autant que je propose rémunération sur l’étude et la réalisation de ce projet..
Quoiqu’il en soit, j’aurais aimé le réaliser moi même bien sûr, mais conscient de mon ignorance je préfère m’en remettre à ceux qui connaissent. Ceci dit, je suis preneur de tous conseils ou possibilités qui pourraient faire avancer ce besoin très spécifique.
En remerciant sky99 et tous les participants au blog.
marcus
En revanche, si l’on souhaite commander un éclairage, il sera désagréable de voir celui ci s’éteindre à chaque fois qu’on reste immobile quelques secondes. Pour y remédier, il faudra modifier le code, en ajoutant un délai à l’extinction pour que l’éclairage ne se coupe que si aucune activité n’est détectée pendant une durée à déterminer.
En fait j’ai pas bien compris peux tu m’aider dans l’écriture du code ?
Merci
jaime tro ce ke tu fé cé géniale
je sui gay
J’aime pas trop les capteurs
OK tu fais un peu trop le fou toi
Merci pour le tuto, simple mais tres pratiqur et clair.
C’est vraiment SIPER
TRO BI11111111111 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
salu moi ces jacky j’aim bien vautre cyte il et tro supers il ma beacou aitdé pour le coure de tecnologi
Je compte mettre en place un système de comptage/decomtage a l’aide de deux capteur pir et affiche le résultat a l’aide de l’afficheur LCD merci beaucoup pour votre aide