*
Make3D - 2024



Capteur infrarouge
avec Arduino


Le principe
Un capteur infrarouge permet de détecter un mouvement dans son champ de vision en se basant sur l’infrarouge. On parle aussi de capteur pyroélectrique ou PIR. Le PIR sont capable de détecter une variation des ondes infrarouges, ce qui génère un courant électrique. Dans le cas de notre capteur, il est en fait divisé en deux partie différente reliées ensemble afin de détecter une variation lors qu’une des moitiés capte plus qu’une autre. On a ainsi un relevé d’une différence, et non plus d’une valeur simple.



Lors d’un mouvement, la variation des deux moitiés vont varier, et on va donc capter cette variation positive.



Et l’intérieur fonctionne de la manière suivante :

PIR_interneLes spécifications techniques sont les suivantes :

Entrée : Courant continue de 4.5 à 20V
Sortie : High 3.3 V / Low 0V (Détection ou non)
Angle : <100 °
Dimension : 32 mm * 24 mm
Délai : de 5 à 200 secondes (ajustable)
Portée : de 3 à 7 mètres (ajustable).
Au repos : 50 microampères.



Branchement du PIR sur l’arduino Uno
On branche donc :
•Le VCC du Pir sur le 5V de l’arduino
•Le GRD du PIR sur le GRD de l’arduino
•La dernière branche sur le pin 2 de l’arduino
•On ajoute une led de contrôle entre le pin 13 et un GRD de l’arduino



Mais attention : D’un PIR à l’autre, les branchements sont inversés ! Avec 2 types de PIR, l'auteur de et article a grillé 2 PIR avant de se rendre compte que le branchement + et – était différent entre les 2 types de capteurs.

Le code(((--ERROR--)fin-gr)
Pour faire fonctionner tout ça, rien de bien compliqué. On commence par laisser 30 secondes au PIR pour se calibrer, puis un fois cela fait, on va en boucle relever la valeur que nous renvoi le capteur : 0 ou 1. 0 signifiant pas de signal et 1 signifiant qu’il détecte une variation infrarouge.

Voir le code ci-contre

On commence donc par initialiser les pins dans leur état d’entrée ou de sortie, puis on calibre le capteur.

Puis dans le loop, on relève, par le moniteurs série, la valeur renvoyée par le capteur.

Télécharger fiche pratique

Source : Yaug's Corner












// sensor calibration time
// (10-60 secs c.f. datasheet)
// int calibrationTime = 30;


int ledPin = 13; // pin for the LED
int inputPin = 2; // PIR input pin
int pirState = LOW; // start, no motion
int val = 0; // pin status

void setup() {
pinMode(ledPin, OUTPUT);
pinMode(inputPin, INPUT);
Serial.begin(9600);

Serial.print("calibrating sensor ");
for(int i = 0; i < calibrationTime; i++){
Serial.print(".");
delay(1000);
} }

void loop(){
// read input
val = digitalRead(inputPin);
Serial.println(val);
if (val == HIGH) {
// turn LED ON
digitalWrite(ledPin, HIGH);
delay(150);

if (pirState == LOW) {
Serial.println("Motion detected!");
pirState = HIGH;
}
} else {
// turn LED OF
digitalWrite(ledPin, LOW);
delay(300);
if (pirState == HIGH){
Serial.println("Motion ended!");
pirState = LOW;
} } }