Composants · 7 min de lecture

Capteur de mouvement PIR (HC-SR501) : détection de mouvement avec Arduino, ESP32 et Pico

Comment fonctionne un capteur de mouvement PIR ? Câblage du HC-SR501, réglage de la sensibilité et de la durée, modes H/L, code Arduino, ESP32 et Pico, lumière à détection de mouvement et éviter les fausses détections.

Un capteur PIR (Passive InfraRed, infrarouge passif) est un capteur bon marché et très économe qui détecte quand une personne ou un animal bouge dans son champ de vision. Les éclairages d'escalier qui s'allument tout seuls, les alarmes et les sonnettes automatiques fonctionnent le plus souvent avec un PIR. Le mot « passif » signifie que le capteur n'émet rien lui-même : il se contente d'écouter le rayonnement infrarouge émis par les corps chauds autour de lui. Le modèle le plus utilisé dans les projets Arduino est le HC-SR501.

Capteur de mouvement PIR HC-SR501
Capteur PIR HC-SR501 : le dôme blanc est une lentille de Fresnel ; la carte en dessous porte deux potentiomètres de réglage et un cavalier de déclenchement.

Comment fonctionne un capteur PIR ?

Tout corps plus chaud que le zéro absolu émet un rayonnement infrarouge, et le corps humain rayonne surtout vers 9 à 10 micromètres de longueur d'onde. Au cœur du capteur se trouve un élément pyroélectrique sensible à ce rayonnement, divisé en deux moitiés. Quand rien ne bouge, les deux moitiés reçoivent le même rayonnement, leurs signaux s'annulent et la sortie reste calme. Quand quelqu'un traverse le champ de vision, une moitié puis l'autre reçoit davantage de rayonnement ; le circuit du module détecte cette différence et la broche OUT passe à HIGH.

Le dôme blanc est une lentille de Fresnel. Il découpe le champ de vision en dizaines de petites zones et concentre le rayonnement de chacune sur l'élément. Quand une personne passe d'une zone à l'autre, le signal change : c'est pourquoi un capteur PIR détecte très bien le mouvement, mais pas quelqu'un qui reste parfaitement immobile.

Caractéristiques techniques du HC-SR501

CaractéristiqueValeur
Tension d'alimentation4,5–20 V (5 V recommandés)
Courant de veilleEnviron 50 µA
SortieNumérique : 3,3 V en cas de mouvement, 0 V sinon
Portée de détection3–7 m (réglable)
Angle de détectionEnviron 110°
Durée de sortieEnviron 3 secondes à 5 minutes (réglable)
Temps de blocageEnviron 2,5 secondes après l'extinction de la sortie
Temps de chauffe30 à 60 secondes à la mise sous tension

Les réglages du module

  • Potentiomètre Sx (sensibilité) : règle la portée. En le tournant dans le sens horaire, elle passe d'environ 3 à 7 mètres.
  • Potentiomètre Tx (durée) : règle combien de temps la sortie reste à HIGH après une détection. Dans le sens horaire, la durée s'allonge.
  • Cavalier H (redéclenchable) : tant que le mouvement continue, la temporisation repart à zéro ; idéal pour l'éclairage.
  • Cavalier L (non redéclenchable) : à la fin de la durée, la sortie repasse à LOW même si le mouvement continue ; il faut alors un nouveau déclenchement.
  • Temps de blocage : pendant environ 2,5 secondes après le passage de la sortie à LOW, aucun nouveau mouvement n'est détecté ; ce temps n'est pas réglable.
Pour tes premiers essais, tourne les deux potentiomètres à fond dans le sens antihoraire (durée la plus courte, sensibilité la plus faible) et mets le cavalier sur H. Tu n'auras pas à attendre plusieurs minutes après chaque test ; régler la durée ensuite dans le code est de toute façon bien plus souple.

Brochage et câblage du HC-SR501

BrocheRôleArduino UnoESP32Raspberry Pi Pico
VCCAlimentation5VVIN (5V)VBUS (5V)
OUTSortie numérique (3,3 V)D2GPIO 27GP16
GNDMasseGNDGNDGND
Sur la plupart des modules, le nom des broches est imprimé sur le dessus de la carte, sous le dôme blanc. Tu peux retirer délicatement le dôme pour lire les inscriptions, puis le remettre en place.

Détecter un mouvement avec Arduino

Le code ci-dessous attend que le capteur ait chauffé, puis écrit un message dans le moniteur série au début et à la fin de chaque mouvement, en allumant et en éteignant la LED intégrée de l'Arduino. Surveiller uniquement les changements d'état, plutôt que d'afficher la sortie en boucle, c'est aussi la méthode que tu utiliseras dans de vrais projets.

Arduino (C++)
1const int PIR_PIN = 2;
2const int LED_PIN = 13;        // dahili LED / built-in LED
3
4bool motion = false;
5
6void setup() {
7  pinMode(PIR_PIN, INPUT);
8  pinMode(LED_PIN, OUTPUT);
9  Serial.begin(9600);
10  Serial.println("Sensör ısınıyor / warming up...");
11  delay(30000);                  // ilk 30 sn kararsız / unstable for ~30 s
12  Serial.println("Hazır / ready");
13}
14
15void loop() {
16  bool now = digitalRead(PIR_PIN);
17  if (now && !motion) {
18    Serial.println("Hareket algılandı / motion detected");
19    digitalWrite(LED_PIN, HIGH);
20    motion = true;
21  } else if (!now && motion) {
22    Serial.println("Hareket bitti / motion ended");
23    digitalWrite(LED_PIN, LOW);
24    motion = false;
25  }
26}
À la première mise sous tension, le capteur passe 30 à 60 secondes à « apprendre » son environnement et peut se déclencher tout seul pendant ce temps. Attendre cette durée dans le code, ou ignorer les premiers déclenchements, évite les fausses alarmes à chaque démarrage.

Lumière à détection de mouvement : gérer la durée avec millis()

Garder la durée d'allumage dans le code plutôt que sur le potentiomètre Tx est beaucoup plus souple. Le code ci-dessous mémorise l'heure à chaque mouvement détecté et éteint la lumière 20 secondes après le dernier mouvement : tant que quelqu'un bouge dans la pièce, elle reste allumée. Sur LIGHT_PIN, tu peux brancher une LED ou un module relais pour une lampe secteur ; avec un relais actif à l'état bas, inverse HIGH et LOW à la dernière ligne. Le câblage du relais est expliqué dans Qu'est-ce qu'un module relais ?

Arduino (C++)
1const int PIR_PIN = 2;
2const int LIGHT_PIN = 7;               // LED ya da röle / LED or relay
3const unsigned long ON_TIME = 20000;   // son hareketten sonra 20 sn / 20 s after last motion
4
5unsigned long lastMotion = 0;
6
7void setup() {
8  pinMode(PIR_PIN, INPUT);
9  pinMode(LIGHT_PIN, OUTPUT);
10}
11
12void loop() {
13  if (digitalRead(PIR_PIN) == HIGH) {
14    lastMotion = millis();             // her harekette süreyi yenile / refresh on every motion
15  }
16  bool on = (lastMotion != 0) && (millis() - lastMotion < ON_TIME);
17  digitalWrite(LIGHT_PIN, on ? HIGH : LOW);
18}

PIR avec l'ESP32 et le Raspberry Pi Pico

La sortie du HC-SR501 est déjà en 3,3 V : elle peut donc aller directement sur l'ESP32 et le Pico, sans pont diviseur. Alimente toutefois le module en 5 V, car son régulateur est instable sous 4,5 V. Le même code Arduino fonctionne sur l'ESP32 ; dans les projets sur batterie, mettre l'ESP32 en sommeil profond et le réveiller avec la sortie du PIR (ext0 wakeup) prolonge l'autonomie de plusieurs semaines. Sur le Pico en MicroPython, tu peux utiliser une interruption pour ne manquer aucun mouvement :

MicroPython
1from machine import Pin
2import time
3
4pir = Pin(16, Pin.IN)            # GP16
5led = Pin(25, Pin.OUT)           # dahili LED; Pico W'de Pin("LED") / onboard LED; Pin("LED") on Pico W
6
7def on_motion(pin):
8    led.value(pin.value())       # hareket varken yanar / on while there is motion
9    print("Hareket / motion" if pin.value() else "Bitti / ended")
10
11pir.irq(trigger=Pin.IRQ_RISING | Pin.IRQ_FALLING, handler=on_motion)
12
13while True:
14    time.sleep(1)

Éviter les fausses détections

  • Ne le dirige pas vers une source de chaleur : radiateurs, bouches de climatisation, fenêtres ensoleillées et lampes chaudes le déclenchent par des variations brusques de température.
  • Éloigne-le des objets qui bougent : rideaux, plantes ou branches agités par le vent et chauffés par le soleil ressemblent à un mouvement.
  • Nettoie l'alimentation : relais et modules Wi-Fi créent des parasites ; ajoute un condensateur de 100 µF entre VCC et GND du capteur.
  • Éloigne-le un peu de l'ESP32 : collé à l'antenne Wi-Fi, le HC-SR501 peut se déclencher tout seul de temps en temps ; quelques centimètres et un fil court suffisent généralement.
  • Avec des animaux : baisse la sensibilité et fixe le capteur en hauteur, légèrement incliné vers le bas.
  • Pas derrière une vitre : le verre ordinaire bloque l'infrarouge ; un capteur derrière une fenêtre ne voit pas les mouvements dehors.

PIR, radar hyperfréquence ou ultrasons ?

CaractéristiquePIR (HC-SR501)Radar hyperfréquence (RCWL-0516)Ultrasons (HC-SR04)
Ce qu'il détecteCorps chauds en mouvementTout type de mouvementLa distance d'un objet devant lui
À travers une cloison fine ou un boîtierNonOuiNon
Personne parfaitement immobileNonNonMesurée comme une distance
ConsommationTrès faible (~50 µA)Faible (~3 mA)Moyenne (~15 mA)
Usage typiqueÉclairage, alarmeCapteurs cachés, ouvre-portesDétection d'obstacles, mesure de niveau

Si tu veux savoir si quelqu'un bouge, et non si quelqu'un est dans la pièce, le PIR est la solution la plus économique. Pour mesurer à quelle distance se trouve un objet, consulte Capteur de distance HC-SR04.

Idées de projets avec un capteur PIR

  • Éclairage automatique de couloir : allume une lampe via un relais à la détection d'un mouvement et éteins-la après 30 secondes sans mouvement.
  • Alarme antivol : fais sonner un buzzer si un mouvement est détecté en mode nuit ; pour le son, vois Qu'est-ce qu'un buzzer ?
  • Veilleuse intelligente : associe le PIR à un capteur de lumière LDR pour une lampe qui ne s'allume que dans le noir et en cas de mouvement.
  • Notification sur le téléphone : envoie un message Telegram depuis un ESP32 quand un mouvement est détecté.
  • Écran économe : allume le rétroéclairage d'un LCD quand quelqu'un approche et éteins-le quand il s'en va.
  • Compteur de passages : compte chaque passage devant une porte et affiche-le sur un écran.

Erreurs fréquentes et solutions

  • La sortie reste à HIGH en permanence : la durée Tx est trop longue ou il y a un mouvement constant en mode H ; baisse le potentiomètre et vérifie que le capteur ne vise pas une source de chaleur.
  • Il ne se déclenche jamais : VCC n'est peut-être pas à 5 V, le capteur chauffe encore ou le fil OUT est sur une autre broche que celle du code.
  • Il se déclenche tout seul toutes les quelques secondes : l'alimentation est parasitée ; ajoute un condensateur et éloigne-le des relais et modules Wi-Fi.
  • Il ne redétecte pas juste après la fin du mouvement : le temps de blocage d'environ 2,5 secondes est normal, le capteur n'est pas en panne.
  • Mal orienté : un PIR détecte le mieux quand le mouvement traverse son champ de vision latéralement ; il remarque plus tard quelqu'un qui marche droit vers lui.

Le capteur PIR est l'un des meilleurs points de départ pour ton premier projet domotique : trois fils et tu vois tout de suite le résultat. Dans l'application BlueGrays, tu trouveras des projets de lumière à détecteur de mouvement, de sonnette et d'alarme, pas à pas avec schémas et code.

Questions fréquentes

À quelle distance un capteur PIR détecte-t-il ?

Le HC-SR501 détecte entre 3 et 7 mètres sur un angle d'environ 110 degrés. La portée se règle avec le potentiomètre Sx (sensibilité) du module ; dans le sens horaire, elle augmente.

Un capteur PIR détecte-t-il une personne immobile ?

Non. Un PIR ne détecte que les variations du rayonnement infrarouge, c'est-à-dire le mouvement. Il ne remarquera pas quelqu'un assis parfaitement immobile. Pour savoir si quelqu'un est présent dans une pièce, on utilise des radars de présence mmWave comme le LD2410.

Un capteur PIR fonctionne-t-il à travers une vitre ?

Non. Le verre ordinaire ne laisse pas passer l'infrarouge émis par le corps humain : un capteur derrière une vitre ne voit pas les mouvements dehors. Pour l'extérieur, installe le capteur dehors, à l'abri de la pluie.

Le HC-SR501 fonctionne-t-il en 3,3 V ?

Son régulateur est instable sous 4,5 V, il faut donc l'alimenter en 5 V. La sortie est déjà en 3,3 V et peut aller directement sur un ESP32 ou un Pico. Pour un système entièrement en 3,3 V, utilise le petit module PIR AM312, qui fonctionne de 2,7 à 12 V.

Pourquoi mon capteur PIR se déclenche-t-il tout seul ?

Les causes les plus fréquentes sont le temps de chauffe, les sources de chaleur dans son champ (radiateur, soleil, climatisation) et les parasites sur l'alimentation. Ignore les 60 premières secondes, détourne le capteur des sources de chaleur, ajoute un condensateur entre VCC et GND et éloigne-le des modules Wi-Fi.

Quelle est la différence entre les modes H et L du HC-SR501 ?

En mode H (redéclenchable), la temporisation repart à chaque détection tant que le mouvement continue : une lumière reste allumée tant que quelqu'un bouge. En mode L (non redéclenchable), la sortie s'éteint à la fin de la durée même si le mouvement continue ; le déclenchement suivant arrive après le temps de blocage.

Voir tous les projets
Détecteur de mouvement avec capteur de mouvement
#24Débutant
Premium

Détecteur de mouvement avec capteur de mouvement

Projet de base qui allume des LED en détectant un mouvement dans l'environnement grâce à un capteur de mouvement PIR. Enseigne la lecture de capteurs numériques et la logique de détection de mouvement

4.6(47)
66
Sonnette et lumière avec détecteur de mouvement
#25Intermédiaire
Premium

Sonnette et lumière avec détecteur de mouvement

Projet qui allume la LED et joue la mélodie de la sonnette avec le buzzer lorsque le capteur PIR détecte un mouvement. Il combine la détection de mouvement avec la notification sonore et lumineuse.

4.7(54)
70
Éclairage automatique avec le capteur de mouvement PIR ESP32
#121Intermédiaire
Premium

Éclairage automatique avec le capteur de mouvement PIR ESP32

Dans ce projet, nous allons détecter toute personne entrant dans la pièce à l'aide du capteur de mouvement PIR HC-SR501 et allumer automatiquement la LED. Lorsqu'un mouvement sera détecté, la LED restera allumée pendant un certain temps et nous gérerons le temps à l'aide de la fonction `millis()` et d'un compteur, sans avoir recours à `delay()`. Nous obtiendrons ainsi un système d'éclairage à détecteur de mouvement qui ne bloque pas l'ESP32 et permet d'effectuer d'autres tâches. Dans la vie de t

4.4(24)
38
Alarme de détection de mouvement ESP32
#140Intermédiaire
Premium

Alarme de détection de mouvement ESP32

Dans ce projet réalisé à l'aide d'un ESP32 et d'un capteur PIR, un buzzer se déclenche pour émettre une alarme sonore dès qu'un mouvement est détecté. Il s'agit d'une application simple et peu coûteuse pour un système de sécurité. (Les images sont fournies à titre indicatif ; veuillez les associer au texte correspondant)

4.4(10)
15
Éclairage Intelligent ESP32 (PIR + LDR + Relais + OLED)
#141Avancé
Premium

Éclairage Intelligent ESP32 (PIR + LDR + Relais + OLED)

Transformez votre couloir, votre salle de bain ou votre garde-manger en éclairage intelligent avec l'ESP32 ! En utilisant un capteur de mouvement PIR, un capteur de lumière LDR et un module relais, nous construisons le scénario classique "la lumière s'allume lorsqu'un mouvement est détecté dans l'obscurité" — si l'environnement est déjà lumineux, le mouvement N'ACTIVE PAS la lumière, économisant ainsi de l'énergie pendant la journée. La lumière reste allumée pendant 30 secondes ; si le mouvement

4.3(6)
11
Système d'Alarme de Mouvement ESP32 (PIR + Buzzer + LED + Telegram)
#145Avancé
Premium

Système d'Alarme de Mouvement ESP32 (PIR + Buzzer + LED + Telegram)

Un système d'alarme de sécurité intelligent qui active le buzzer et la LED lorsque le capteur PIR détecte un mouvement, tout en envoyant une notification instantanée au propriétaire via Telegram. Il intègre un cooldown de 30 secondes pour éviter les fausses alarmes. Idéal pour la sécurité domestique, la surveillance de garage, d'entrepôts ou de bureaux. Avec l'ESP32-CAM, des notifications photo sont possibles ; avec l'ESP32 DevKit V1 classique, des notifications texte sont envoyées.

0.0(0)
8
Système d'alerte laser
#22Intermédiaire
Premium

Système d'alerte laser

Projet de sécurité qui détecte l'interruption du faisceau laser via une LDR et avertit par un buzzer et une LED. Il enseigne la logique de la détection de l'interruption de la lumière avec une paire l

4.8(64)
82
Système de sécurité laser
#23Avancé
Premium

Système de sécurité laser

Système de sécurité avancé qui déclenche l'alarme lorsque le faisceau laser est interrompu et qui peut être réinitialisé par un bouton-poussoir ou une commande IR. Enseigne les sources d'entrée multip

4.8(60)
77

Apprends comment un capteur PIR détecte les mouvements humains, comment régler le HC-SR501, le brancher sur un Arduino, réaliser une lumière à détection de mouvement et éviter les fausses alarmes.

Capteur de mouvement PIR (HC-SR501) : détection de mouvement avec Arduino, ESP32 et Pico | BlueGrays