Description
Module Détecteur de Mouvement PIR – Infrarouge HC-SR501
Le module détecteur de mouvement infrarouge HC-SR501 est un capteur PIR (Passive Infrared) utilisé pour détecter le mouvement humain ou animal dans un champ de détection. Ce capteur est largement utilisé dans les systèmes de sécurité, l’automatisation de la maison, et les projets de détection de mouvement.
Caractéristiques en détail
- Tension d’alimentation : 4.5V à 20V DC
- Sortie : Signal digital HIGH (3.3V) ou LOW (0V)
- Angle de détection : < 120 degrés
- Distance de détection : Jusqu’à 7 mètres
- Temps de retard : Ajustable de 5 secondes à 5 minutes
- Dimensions : 32 mm x 24 mm
- Consommation de courant : < 60µA
- Température de fonctionnement : -15°C à 70°C
Fonctionnement
Le capteur PIR HC-SR501 détecte les changements dans les niveaux d’infrarouge dans son champ de vision. Lorsqu’un objet chaud (comme un humain ou un animal) entre dans ce champ, le capteur envoie un signal HIGH. Le module est équipé de deux potentiomètres pour ajuster la sensibilité et le délai de temporisation.
Applications
- Systèmes de sécurité
- Éclairage automatique
- Comptage de personnes
- Systèmes d’alarme
- Projets domotiques
Brochage
- VCC : Alimentation (4.5V à 20V)
- OUT : Sortie numérique
- GND : Masse
Comment l’utiliser
Pour utiliser le capteur HC-SR501 avec un Arduino, connectez la broche VCC à l’alimentation 5V de l’Arduino, la broche GND à la masse, et la broche OUT à une entrée numérique de l’Arduino (par exemple, D2).
Comment l’utiliser avec Arduino Uno
Exemple de code Arduino de base
#define PIR_PIN 2
#define LED_PIN 13
void setup() {
pinMode(PIR_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
int pirState = digitalRead(PIR_PIN);
if (pirState == HIGH) {
digitalWrite(LED_PIN, HIGH);
Serial.println("Mouvement détecté !");
} else {
digitalWrite(LED_PIN, LOW);
Serial.println("Pas de mouvement.");
}
delay(1000);
}
But du code
Ce code lit l’état du capteur de mouvement et allume une LED si un mouvement est détecté. Il affiche également l’état du capteur sur le moniteur série.
Composants nécessaires pour le code de base
- Arduino Uno
- Module détecteur de mouvement HC-SR501
- Câbles de connexion
Explication détaillée du code de base
- Initialisation : La communication série est établie à 9600 bauds. Les broches PIR_PIN et LED_PIN sont configurées respectivement en entrée et sortie.
- Lecture des données : La valeur de la broche PIR_PIN est lue et stockée dans la variable pirState. Si un mouvement est détecté, la LED s’allume et un message est affiché sur le moniteur série. Sinon, la LED s’éteint et un autre message est affiché.
Brochage détaillé des connexions du code de base
- VCC : Connecter à l’alimentation 5V (Arduino)
- GND : Connecter à la masse (Arduino)
- OUT : Connecter à D2 (Arduino)
Exemple de code Arduino avancé pour affichage sur LCD avec gestion d’erreurs et améliorations
#include <LiquidCrystal_I2C.h>
// Constantes
const int PIR_PIN = 2; // Broche du capteur PIR
const int LED_PIN = 13; // Broche de la LED interne de l'Arduino
const int DELAY_TIME = 1000; // Délai entre les lectures en millisecondes
LiquidCrystal_I2C lcd(0x27, 16, 2); // Initialisation de l'écran LCD I2C avec l'adresse 0x27 et une taille de 16x2
void setup() {
pinMode(PIR_PIN, INPUT); // Configurer la broche PIR_PIN en entrée
pinMode(LED_PIN, OUTPUT); // Configurer la broche LED_PIN en sortie
lcd.begin(); // Initialisation de l'écran LCD
lcd.backlight(); // Allumer le rétroéclairage de l'écran LCD
Serial.begin(9600); // Initialisation de la communication série à 9600 bauds
}
void readSensorValue(int& pirState) {
pirState = digitalRead(PIR_PIN); // Lire l'état du capteur PIR
}
void displayValuesOnLCD(int pirState) {
static int lastPirState = -1; // Variable pour stocker le dernier état du capteur PIR affiché
if (pirState != lastPirState) { // Met à jour l'affichage uniquement si l'état a changé
lcd.clear(); // Efface l'écran LCD
lcd.setCursor(0, 0); // Positionne le curseur à la première ligne
lcd.print("PIR Sensor: "); // Affiche le texte "PIR Sensor: "
if (pirState == HIGH) {
lcd.setCursor(0, 1); // Positionne le curseur à la deuxième ligne
lcd.print("Mouvement!"); // Affiche "Mouvement!"
} else {
lcd.setCursor(0, 1); // Positionne le curseur à la deuxième ligne
lcd.print("Pas de mouv."); // Affiche "Pas de mouv."
}
lastPirState = pirState; // Met à jour le dernier état affiché
}
}
void displayValuesOnSerialConsole(int pirState) {
if (pirState == HIGH) {
Serial.println("Mouvement détecté !"); // Affiche "Mouvement détecté !" sur la console série
} else {
Serial.println("Pas de mouvement."); // Affiche "Pas de mouvement." sur la console série
}
}
void loop() {
int pirState;
readSensorValue(pirState); // Lire l'état du capteur PIR
digitalWrite(LED_PIN, pirState); // Allumer ou éteindre la LED en fonction de l'état du capteur PIR
displayValuesOnLCD(pirState); // Afficher l'état sur l'écran LCD
displayValuesOnSerialConsole(pirState); // Afficher l'état sur la console série
delay(DELAY_TIME); // Attendre avant de refaire une lecture
}
Composants nécessaires pour le code avancé
- Arduino Uno
- Module détecteur de mouvement HC-SR501
- Écran LCD I2C 1602
- Câbles de connexion
Explication détaillée du code amélioré
- Inclusion de la bibliothèque : La bibliothèque
LiquidCrystal_I2C.h
est incluse pour permettre la communication avec l’écran LCD utilisant le protocole I2C. - Définition des constantes : Les constantes définissent les broches du capteur PIR (
PIR_PIN
) et de la LED (LED_PIN
), ainsi que le délai entre les lectures (DELAY_TIME
). - Initialisation de l’écran LCD : La fonction
setup()
initialise l’écran LCD et la communication série à une vitesse de 9600 bauds. Les brochesPIR_PIN
etLED_PIN
sont configurées respectivement en entrée et sortie. - Lecture des valeurs des capteurs : La fonction
readSensorValue(int& pirState)
lit l’état du capteur PIR et le stocke dans la variablepirState
. - Affichage des valeurs sur l’écran LCD : La fonction
displayValuesOnLCD(int pirState)
affiche l’état du capteur PIR sur l’écran LCD avec des mises à jour uniquement lorsque l’état change. Elle utilise une variable statique pour suivre le dernier état affiché. - Affichage des valeurs sur la console série : La fonction
displayValuesOnSerialConsole(int pirState)
envoie l’état du capteur PIR à la console série. - Boucle principale : La boucle
loop()
lit l’état du capteur PIR, met à jour la LED en conséquence, affiche l’état sur l’écran LCD et sur la console série. Elle attend ensuite une seconde avant de refaire une lecture.
Installation de Drivers/bibliothèques
Codes de base et avancé Aucune bibliothèque spéciale n’est nécessaire pour le code de base. Pour le code avancé utilisant un écran LCD I2C, installez la bibliothèque LiquidCrystal_I2C
via le gestionnaire de bibliothèques de l’IDE Arduino.
- Ouvrez l’IDE Arduino.
- Allez dans le menu Sketch -> Include Library -> Manage Libraries…
- Recherchez
LiquidCrystal_I2C
et cliquez sur Installer.
Mots clés: capteur de mouvement, infrarouge passif, détection PIR, HC-SR501, sécurité domestique, automatisation industrielle, économie d’énergie, motion, sensor, mouvment.