Site icon AranaCorp

Utilisation d’un capteur PIR avec Arduino

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

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

Sources

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

Quitter la version mobile