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