Il est possible d’actionner un système, comme un alarme, en détectant la présence d’une personne à l’aide d’un capteur de mouvement PIR. En domotique, il est courant d’actionner des appareils lorsqu’une personne rentre dans une pièce. Ceci est rendu possible grâce à des capteurs de mouvement comme le capteur infrarouge passif ou PIR( Passive Infared sensor). Nous allons voir dans ce tutoriels comment gérer le capteur PIR à l’aide d’un microcontrôleur Arduino.
Matériel
- Ordinateur
- Arduino UNO
- Câble USB A Mâle/B Mâle
- Capteur de mouvement PIR
Principe de fonctionnement
Tout objet ayant une température au dessus du zéro absolu émet un rayonnement infrarouge. C’est ce qu’on peut voir sur les images de caméra thermique. Le capteur PIR est muni de deux cellules sensibles aux infrarouges qui vont détecter les rayons infrarouges réfléchit ou émit par un objet.
Lorsqu’il n’y a pas de mouvement, le niveau d’infrarouge reçu est le même pour les deux cellules. Lors du passage d’un objet, l’émission de ces rayons va être modifiée sur une cellule puis sur l’autre ce qui va permettre de détecter le mouvement.
Le cache blanc, qui couvre et protège généralement le capteur, est une lentille de Fresnel avec plusieurs facettes qui permet de concentrer et , parfois, filtrer le rayonnement infrarouge sur les cellules.
Schéma
Le module PIR peut être alimenté par le microcontrôleur directement et, comme il renvoie un état, la sortie du capteur est branchée à une entrée digitale.
Code
Le capteur PIR renvoie un état haut(HIGH) lorsqu’il détecte un mouvement et un état bas(LOW) si il n’y a rien. Il sera donc gérer comme une entrée digitale à l’aide de la fonction digitalRead() d’Arduino.
//Parameters const int pirPin = 2; //Variables bool pirStatus = false; void setup() { //Init Serial USB Serial.begin(9600); Serial.println(F("Initialize System")); //Init digital input pinMode(pirPin, INPUT); } void loop() { readPIR(); } void readPIR( ) { /* function readPIR */ ////Test routine for PIR pirStatus = digitalRead(pirPin); Serial.print(F("Sensor status")); Serial.println(pirStatus); if (pirStatus) { Serial.print(F("----> Detection")); delay(500); } delay(100); }
Applications
- Allumage d’une lumière à la détection d’un mouvement
- Activation d’une alarme lors de l’intrusion d’une personne
Sources
- https://www.arduino.cc/reference/en/language/functions/digital-io/digitalwrite/
- Gestion de capteurs avec Arduino
Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie
Bonjour,
Je viens de trouver vos codes qui sont toujours justes quand on les vérifient sur Arduino et je vous en remercie. Je viens de le tester et lorsque je bouge devant le capteur PIR rien ne se passe ou doit on brancher un autre appareil ??
Merci de votre réponse. J’ai fait le test du clavier grâce à votre Tuto et cela a marché parfaitement.
Cordialement
Bonjour,
Merci beaucoup pour votre commentaire
si le branchement des broches est correctement fait et la continuité est bonne sur chacun des fils, il ne devrait pas y avoir de problème.
Est-ce que vous avez bien le print « Initialize System » qui s’affiche sur le moniteur série?
Quels modèles de carte Arduino et de capteur PIR utilisez-vous?
Bonjour,
Merci pour votre réponse j’ai ouvert le moniteur série comme conseillé et j’ai eu plusieurs lignes de messages : DetectionSensorstatus1. J’en conclu que cela a fonctionné. Je suis novice et cela me passionne malgré mes 74 ans. J’aimerai bien avoir un même schéma mais qui allumerait une LED en fonction des détections de mouvements.
Merci beaucoup pour votre réponse rapide.