Capteur de mouvement (PIR) avec Arduino
Published: 2020-10-13 13:57:07

<center>Bienvenu!</center> 
   Nous verrons dans ce tutoriel le fonctionnement du capteur de mouvement passif à infrarouge avec Arduino. Pour comprendre son fonctionnement, nous contrôlerons l'allumage d'une LED par détection de mouvement.</br>

<center>Vous êtes prêt? Allons-y</center></br>

<b>1. Préambule</b>

Les capteurs de mouvement font partie intégrante du monde qui nous entoure. Ils contiennent des composants électroniques qui détectent les mouvements dans une zone d’opération précise afin de permettre le déclenchement d’une autre action. Les capteurs de mouvement remplacent divers types de commutateurs. 
Ces capteurs permettent différentes choses : 
-	déclenchement d’une alarme suite à une intrusion ; 
-	 contrôle de l’éclairage, la climatisation… suite à la présence ou non,etc.

Le capteur est dit passif parce qu’il n’émet pas de rayonnement infrarouge et n’analyse que les changements dans son champ en réagissant contre les éléments dont la température est différente de la température ambiante.

Le capteur de mouvement utilise l’effet Pyroélectrique. La pyroélectricité est la propriété de certains cristaux qui sont naturellement polarisés électriquement, et ont la capacité de générer une tension lorsqu’ils sont chauffés ou refroidis. Le changement de température modifie légèrement la position des atomes à l’intérieur de la structure cristalline, de sorte que la polarisation du matériau change. Ce changement de polarisation provoque une tension à travers le cristal. Si la température reste constante à sa nouvelle valeur, la tension pyroélectrique disparaît progressivement.
En effet, le coque du capteur de mouvement filtre les rayonnements et ne laisse passer que l’infrarouge qui arrive sur la fenêtre, la traverse et provoque une variation de tension au niveau des plaquettes pyroélectriques. Le capteur PIR est muni de deux plaquettes faites d’un matériau spécial sensible à l’IR.
Les deux plaquettes du capteur reçoivent la même quantité d’infrarouge lorsque rien ne s’est intrus dans leurs champs. Dès qu’il y aura intrusion, la quantité d’infrarouge au niveau des deux plaquettes va changer ce qui crée une impulsion.
On utilise des lentilles pour faire converger les rayonnements vers les plaquettes.

<b>2. Que savoir sur le capteur de mouvement PIR ?</b>

 Le capteur de mouvement passif à infrarouge (PIR) permet de détecter un mouvement dans son champ de vision en se basant sur l’infrarouge (émis par les corps chauds). C’est un capteur numérique dont le signal en sortie est au niveau haut (HIGH) si un mouvement est détecté et au niveau bas (LOW) si aucun mouvement n’est détecté. Le circuit du capteur intègre différents composants :
-	Résistances, transistor, condensateurs, ….
-	Le circuit intégré BISS0001 qui a les éléments nécessaires pour détecter les variations fournies par le capteur et activer une sortie ; 

Le capteur de mouvement PIR peut fonctionner sous deux modes : avec ou sans redéclenchement :

•	<b>Mode avec redéclenchement</b> : lorsque le capteur détecte un mouvement, la sortie HAUT dure un temps donné et si pendant ce temps il y a intrusion, le capteur détecte à nouveau le mouvement, le temps est prolongé et la sortie reste au niveau HAUT pendant un peu plus de temps.(c’est le mode par défaut du capteur) ;

•	<b>Mode sans redéclenchement</b> : lorsque le capteur détecte un mouvement le signal de sortie dure un temps fixe. Même si pendant ce temps où la sortie est au niveau HAUT il y a une nouvelle intrusion, le temps ne sera pas allongé, donc le capteur reviendra avant de redétecter un mouvement s’il y avait toujours de mouvement.


<center><b>Présentation du capteur de mouvement PIR</b></center>

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/gnsj0dfpdjapp7v0wwys.png)![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/19l61u2z9mj87iva8zks.png)

•Plage de tension de fonctionnement : 4,5-20 V CC
• Courant de repos : <50 µA
• Sortie de niveau : élevée 3,3 V / faible 0 V
• Déclencheur : L ne peut pas être répété déclencheur / H peut être répété déclencheur (dé-clencheur répété par défaut)
• Temps de retard  : 5-200S (réglable) la plage est (0.xx seconde à dizaines de seconde)
• Temps de blocage : 1S (par défaut) Peut être fait une plage (0.xx à dizaines de secondes
• Dimensions de la carte : 32 mm * 24 mm
• Angle Capteur : angle de cône <100 °
• Température de fonctionnement : -15 + 70
• Capteur de taille d’objectif : Diamètre : 23 mm (par défaut)
 

<i><center>Pour lire les bornes vous pouvez ouvrir la coque et lire sur la petite plaquette.</center></i>

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/3v3z9fhq6cnwzhbbi5yd.jpg)

<b<3. Matériels</b>
    Pour réaliser le test, nous aurons besoin de:
- <a href="https://youpilab.com/components/product/arduino-uno-r3/">Une carte arduino UNO</a>
- <a href="https://youpilab.com/components/product/capteur-de-mouvement-pir/">Un capteur de mouvement PIR</a>
- <a href="https://youpilab.com/components/product/led-pack-de-4-tete-jaune-jade-water-clear/">Une LED</a>
- <a href="https://youpilab.com/components/product/resistance-100r-1w/">Une résistance</a>
- <a href="">Des fils de connexion</a> 
<center><i>Tous ces matériels sont disponibles chez <a href="https://youpilab.com/components/">YoupiLab</a></i></center>

<b>4. Exemple de câblage :</b>
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/p5ogyhqrq9z30pwdxck6.PNG)


<b>5. Exemple de code arduino</b>

<pre>
int Sortie_capteur_PIR=4; //broche à travers laquelle le capteur enverra des informations à la carte arduino
int valeur_PIR=0;//on initialise la détection de mouvement à 0
int led=6;//broche de la LED

void setup() {
  Serial.begin(9600);
  pinMode(Sortie_capteur_PIR,INPUT);//on définie la sortie du capteur comme une entrée de arduino
  pinMode(led,OUTPUT);//on défine la broche de la LED comme une sortie dans arduino
}
void loop() {
   valeur_PIR=digitalRead(Sortie_capteur_PIR);//Lecture de la broche 4 : la soitie du capteur
  if(valeur_PIR){//si mouvement détecté
    Serial.println("Mouvement détecté");
    digitalWrite(led,HIGH);//on allume la LED
    delay(500);//on attend 0,5s avant de l'éteindre
    digitalWrite(led,LOW);//on éteind la LED
    delay(500);//on attend 0,5s avant de la rallumé
    }
    else{
      Serial.println("RAS");
      }
}

</pre>

<center>
Si tout a été bien fait, vous devriez constater le résultat attendu.

Je vous propose une vidéo de test sur: <a href="https://www.youtube.com/watch?v=dLRzXWlv-zQ&t=60s">capteur_de_mouvement_youtube.com</a> 

</center>