Le module capteur PIR
Info module :
ComplémentPrésentation générale⚓
Le capteur de présence s'appelle également PIR motion (Pyroelectric InfraRed sensor). Il fonctionne facilement, il détecte une variation d'onde infrarouge et génère alors un courant.
Ce capteur très simple d'utilisation va nous être très pratique.
Voilà à quoi il ressemble :

Il possède trois broche : le 5V, le GND, le signal de sortie (1 ou 0) en fonction de son état.
Truc & astuceSchéma de branchement⚓
ExempleCode du module⚓
Pour ce qui est du code :
A chaque fois que l'on passe devant le PIR, une LED s'allume et un message est envoyé sur le terminale Arduino en disant la valeur du capteur (0 ou 1) et lorsqu'il passe à 1 il envoie un message comme quoi un mouvement est détecté, et lorsqu'il passe à 0 il envoie un message comme quoi il y a un mouvement. De plus au départ il y a la calibration donc il est transmis sur la terminale qu'il y a la calibration qui est effectuée avec une succession de petit point le temps de la calibration.
Il y a des commentaires (//commentaires) à côtés des lignes pour préciser à quoi elles correspondent.
Le code pour le capteur PIR est le suivant : (à utiliser avec Arduino. Un autre chapitre sera dédié à l'utilisation avec NODE RED)
int calibrationTime = 10; // temps que l'on accorde au capteur de présence pour s'initialiser (entre 10 et 60 secondes)
int ledPin = 13; // broche de la LED
int inputPin = 2; // Entrée de la valeur du capteur
int pirState = LOW; // on commence avec aucun mouvement détecté
int val = 0; // valeur de la lecture du capteur
void setup() {
pinMode(ledPin, OUTPUT); // la broche de la LED est une sortie
pinMode(inputPin, INPUT); // la broche du capteur est une entrée
Serial.begin(9600);
Serial.print("calibration du capteur ");
for(int i = 0; i < calibrationTime; i++){
Serial.print("."); // mettre des petits points, un point par seconde jusqu'à la fin de la calibration
delay(1000);
}
}
void loop(){
val = digitalRead(inputPin); // lire la valeur du capteur et la stocker dans val
Serial.println(val); // écrire la valeur val
if (val == HIGH) { // Si la valeur = 1 ( high ) alors il y a un mouvement
digitalWrite(ledPin, HIGH); // allumer la LED
delay(150);
if (pirState == LOW) {
Serial.println("mouvement detecte!");
pirState = HIGH;
}
}
else {
digitalWrite(ledPin, LOW); // éteindre la LED
delay(300);
if (pirState == HIGH){
Serial.println("aucun mouvement");
pirState = LOW;
}
}
}
