Le capteur de mouvement infrarouge PIR détecte une présence sans rien toucher et sans rien émettre : il repère la chaleur d'un corps qui se déplace dans son champ de vision. C'est le composant des éclairages qui s'allument au passage, des alarmes de présence et des portes automatiques.
Le module que nous livrons est un HC-SR501, la référence la plus répandue au monde. Il est prêt à brancher : il délivre directement un signal que l'Arduino comprend, et trois fils suffisent.
À quoi sert un capteur PIR ?
Contrairement à un détecteur à ultrasons, le PIR ne mesure pas une distance : il surveille les variations de chaleur infrarouge dans une zone. Deux fenêtres sensibles sont comparées en permanence, et le signal se déclenche dès qu'un corps plus chaud que le fond se déplace.
- Éclairage automatique — une lumière qui s'allume à votre passage et s'éteint seule.
- Alarme de présence — un buzzer ou une notification dès qu'une personne entre.
- Détection de passage — savoir qu'un couloir ou une porte a été franchi.
- Économie d'énergie — réveiller un écran ou un module seulement quand il y a quelqu'un.
- Automatisation — ouvrir une porte, lancer un ventilateur, allumer une vitrine.
Caractéristiques techniques
| Modèle | HC-SR501 — capteur pyroélectrique piloté par un circuit BISS0001 |
|---|---|
| Alimentation | 4,5 à 20 V continu (5 V en pratique) |
| Sortie | Numérique TTL : 3,3 V en détection, 0 V au repos |
| Portée de détection | 3 à 7 mètres, réglable |
| Angle de détection | Environ 110° |
| Temporisation | 5 secondes à 5 minutes, réglable |
| Temps de blocage | 2,5 secondes après chaque détection |
| Consommation au repos | Moins de 50 µA |
| Modes de déclenchement | L (une seule fois) ou H (répétitif), au choix par cavalier |
| Température de service | −15 °C à +70 °C |
| Dimensions | 32 × 24 mm — lentille Ø 23 mm, deux trous M2 espacés de 28 mm |
Brochage : trois fils, pas un de plus
Les trois broches sont sérigraphiées sur la carte, sous le dôme :
| VCC | Alimentation. À relier au 5 V de l'Arduino. Accepte de 4,5 à 20 V, mais restez sur le 5 V de la carte. |
|---|---|
| OUT | La sortie. Elle passe à 3,3 V quand un mouvement est détecté, et retombe à 0 V ensuite. À relier à une entrée numérique. |
| GND | La masse. À relier au GND de l'Arduino — c'est la référence commune, sans laquelle rien ne fonctionne. |
Un point rassurant : la sortie est en 3,3 V, jamais en 5 V. Elle ne risque donc pas d'abîmer une entrée d'Arduino, et elle est même directement compatible avec un ESP32 ou un ESP8266.
Les deux réglages et le cavalier
Deux petits potentiomètres orange, sur le côté de la carte, se règlent avec un tournevis fin :
- Le potentiomètre de portée (souvent marqué Sx) règle la sensibilité. Dans un sens, le capteur détecte jusqu'à 7 mètres ; dans l'autre, il se limite à environ 3 mètres. Pour une pièce de vie, 3 à 4 mètres suffisent et évitent les fausses détections.
- Le potentiomètre de temporisation (souvent marqué Tx) règle combien de temps la sortie reste haute après une détection : de 5 secondes à 5 minutes. Pour un éclairage d'escalier, une à deux minutes est un bon départ.
Le cavalier jaune, lui, choisit le mode de déclenchement — et c'est le réglage que les débutants oublient :
- Position H (répétitif, réglage d'usine) — chaque nouveau mouvement relance le compte à rebours. La lumière reste allumée tant que quelqu'un bouge.
- Position L (non répétitif) — le compte à rebours démarre une fois pour toutes. Même si vous continuez de bouger, la sortie retombera à zéro au bout du délai réglé.
Deux comportements à connaître avant de conclure à une panne
Le capteur a besoin d'environ une minute pour se calibrer après la mise sous tension. Pendant ce temps, il se cale sur la température ambiante et peut produire de fausses détections. Ce n'est pas un défaut : c'est son fonctionnement normal. Attendez une minute avant de juger.
Après chaque détection, le capteur se bloque 2,5 secondes. Sortie retombée à zéro, il n'accepte plus aucun signal pendant ce court laps de temps. Un mouvement pendant ce blocage est simplement ignoré.
Mini-projet : un détecteur de présence qui allume et qui bipe
Voici un montage complet, à faire en une quinzaine de minutes. Une LED s'allume et un buzzer retentit dès qu'une personne entre dans la pièce.
Ce qu'il faut
| La détection | Le capteur PIR HC-SR501 — celui de cette page |
|---|---|
| Le cerveau | Uno R3 + câble USB |
| Le voyant | LED 5mm Rouge |
| La protection de la LED | Résistance 1/4w 220 ohm |
| Le son | Buzzer 16 ohms 2 kHz actif |
| Le support | Plaque d'essai 400 points |
| Les liaisons | 10 × fil mâle-femelle |
Pourquoi des fils mâle-femelle ? Le capteur porte trois broches mâles, et une plaque d'essai n'accepte que des broches mâles. C'est donc le fil mâle-femelle qui relie les deux : l'extrémité femelle se clipse sur le capteur, l'extrémité mâle se pique dans la plaque.
Le câblage
Capteur VCC | → Arduino 5V |
|---|---|
Capteur OUT | → Arduino D2 |
Capteur GND | → Arduino GND |
| LED (patte longue) | → Arduino D8, en passant par la résistance 220 Ω |
| LED (patte courte) | → Arduino GND |
| Buzzer (fil rouge) | → Arduino D9 |
| Buzzer (fil noir) | → Arduino GND |
Le programme
À copier dans l'IDE Arduino, puis à téléverser sur la carte :
/*
* Detecteur de presence - capteur PIR HC-SR501
* Carte : Arduino Uno R3
* Montage : capteur PIR, une LED rouge et un buzzer actif
*
* Composants, brochage et fiche complete : www.marocproduits.com
*/
const byte PIN_PIR = 2; // sortie OUT du capteur PIR
const byte PIN_LED = 8; // LED rouge, via une resistance de 220 ohms
const byte PIN_BUZZER = 9; // buzzer actif
void setup() {
pinMode(PIN_PIR, INPUT);
pinMode(PIN_LED, OUTPUT);
pinMode(PIN_BUZZER, OUTPUT);
Serial.begin(9600);
Serial.println("Calibration du capteur, environ 60 secondes...");
// Le HC-SR501 se cale sur la temperature ambiante au demarrage.
// Sans cette attente, les premieres detections sont aleatoires.
delay(60000);
Serial.println("Capteur pret.");
}
void loop() {
if (digitalRead(PIN_PIR) == HIGH) {
digitalWrite(PIN_LED, HIGH);
digitalWrite(PIN_BUZZER, HIGH);
Serial.println("Mouvement detecte");
} else {
digitalWrite(PIN_LED, LOW);
digitalWrite(PIN_BUZZER, LOW);
}
// Petite pause : inutile d'interroger le capteur des milliers de fois
// par seconde, sa sortie ne change pas plus vite que cela.
delay(50);
}Comment ça marche
Le programme est volontairement court, parce que toute l'intelligence est dans le capteur : il gère lui-même la détection, le délai et le blocage. L'Arduino se contente de lire une broche.
digitalRead(PIN_PIR)renvoieHIGHtant que la sortie du capteur est haute — c'est-à-dire pendant toute la durée que vous avez réglée avec le potentiomètre de temporisation, pas seulement à l'instant du mouvement.- Le buzzer est un modèle actif : il contient son propre oscillateur, donc un simple
digitalWritesuffit à le faire sonner. Avec un buzzer passif, il faudrait employertone()en précisant la fréquence. - La résistance de 220 Ω en série avec la LED n'est pas facultative : sans elle, la LED reçoit trop de courant et grille en quelques secondes.
Pour aller plus loin
- Ne biper que la nuit — ajoutez une photorésistance et ne déclenchez le buzzer que si la lumière ambiante est faible.
- Un son plus doux — remplacez
digitalWrite(PIN_BUZZER, HIGH)partone(PIN_BUZZER, 1000, 200), pour un bip court d'une fraction de seconde au lieu d'un son continu. - Un compteur de passages — affichez le nombre de détections sur un afficheur LCD 16×02 I2C.
Variante : allumer une vraie lampe en 230 V
Pour commander une ampoule du secteur, le capteur ne suffit plus : il faut interposer un relais. Le principe est le même, mais le circuit de puissance est séparé du circuit de commande.
Il vous faudra un Module 1 relais 5v en plus du montage précédent.
Capteur VCC | → Arduino 5V |
|---|---|
Capteur OUT | → Arduino D2 |
Capteur GND | → Arduino GND |
Relais VCC | → Arduino 5V |
Relais GND | → Arduino GND |
Relais IN | → Arduino D7 |
Relais COM et NO | → en série avec la phase qui alimente la lampe |
/*
* Eclairage automatique - capteur PIR HC-SR501 et module relais
*
* Composants, brochage et fiche complete : www.marocproduits.com
*/
const byte PIN_PIR = 2;
const byte PIN_RELAIS = 7;
void setup() {
pinMode(PIN_PIR, INPUT);
pinMode(PIN_RELAIS, OUTPUT);
// La plupart des modules relais se collent sur un niveau BAS.
// On force l'etat eteint au demarrage pour eviter une lampe allumee
// pendant la minute de calibration du capteur.
digitalWrite(PIN_RELAIS, HIGH);
delay(60000);
}
void loop() {
if (digitalRead(PIN_PIR) == HIGH) {
digitalWrite(PIN_RELAIS, LOW); // colle le relais : la lampe s'allume
} else {
digitalWrite(PIN_RELAIS, HIGH); // relache le relais : la lampe s'eteint
}
delay(200);
}Attention au sens du relais. Beaucoup de modules se déclenchent sur un niveau bas, d'autres sur un niveau haut. Si votre lampe fait l'inverse de ce que vous attendez, inversez simplement LOW et HIGH dans le programme — aucun composant n'est en cause.
Le 230 V ne se manipule pas à moitié. Coupez le disjoncteur avant toute intervention, ne travaillez jamais sur le circuit de puissance sous tension, et enfermez le relais et les bornes dans un boîtier isolant. Si vous n'avez jamais câblé du secteur, faites-vous accompagner, ou restez sur la LED : tout ce qui suit fonctionne à l'identique en basse tension.
Questions fréquentes
Mon capteur se déclenche tout seul, pourquoi ?
C'est presque toujours l'une de ces quatre causes : la minute de calibration n'est pas terminée, le capteur vise une source de chaleur changeante (radiateur, bouche d'air conditionné, courant d'air chaud), il reçoit la lumière directe du soleil, ou la portée est réglée trop haut pour la pièce. Réduisez la sensibilité et éloignez le capteur des sources de chaleur.
Est-ce qu'il détecte à travers une vitre ?
Non. Le verre arrête le rayonnement infrarouge lointain. Un capteur PIR derrière une vitre ou une vitrine ne détecte rien de l'autre côté — c'est d'ailleurs une protection utile pour éviter les fausses détections depuis la rue.
Peut-on l'alimenter en 3,3 V ?
Non, pas de façon fiable. Le module demande au minimum 4,5 V. Utilisez la sortie 5 V de l'Arduino. En revanche, sa sortie est bien en 3,3 V, donc elle se branche sans adaptation sur un ESP32 ou un ESP8266 — pour une alimentation sur batterie ou un projet connecté, c'est même l'un des meilleurs capteurs de mouvement disponibles.
Fonctionne-t-il dehors ?
Il fonctionne, mais mal : le soleil et les variations de température extérieure sont des sources infrarouges puissantes qui provoquent des déclenchements incessants. Pour l'extérieur, préférez un détecteur à ultrasons ou un capteur radar.
Combien de temps la sortie reste-t-elle haute ?
Aussi longtemps que vous l'avez réglé avec le potentiomètre de temporisation — de 5 secondes à 5 minutes — et non uniquement à l'instant précis du mouvement. Si vous voulez agir dans les premières secondes puis ignorer la suite, mesurez le front montant dans votre programme plutôt que le niveau de la broche.
À combiner avec
Si vous partez de zéro, le KIT Starter contient déjà la carte Uno R3, la plaque d'essai, les fils, les résistances de 220 Ω, un buzzer et des LED : en y ajoutant ce capteur, vous avez exactement le montage de cette page. Pour une base plus large, le Kit Arduino Uno maroc couvre davantage de projets.













