Aller au contenu

Capteur de mouvement PIR HC-SR501 et Arduino

Capteur de mouvement PIR HC-SR501 et Arduino

Objectifs : Découvrir comment utiliser un capteur de mouvement PIR et ses applications.

Difficulté : 1/5

Temps d'exécution : 15 min

Matériel nécessaire :

Le capteur de mouvent ou PIR ( )HC-SR501 que nous allons utiliser ensemble est un capteur capable de détecter les mouvements. Il détecte les rayonnements infrarouge dans son champ de vision et en déduit une présence ou un mouvement. Ce capteur peut servir dans de nombreuses applications notamment dans un système d'alarme.

robot capteur infrarouge

Ci-dessus les exemples d'un robot et d'un allumage automatique qui utilise un capteur infrarouge.

Pour commencer, voici des images du capteur HC-SR501 présent sur la boutique :

Il dispose de deux trous de fixation pour pouvoir l'assembler à votre projet, c'est plutôt pratique.

Fonctionnement du capteur de mouvements

Le capteur renvoie un signal qui possède deux états : un état bas (0 V) lorsque le capteur est au repos, et un état haut (3,3 V) si un mouvement est détecté.

Quand un mouvement a été pris en compte, le signal passe à l'état haut et un délai est déclenché. Une fois que le délai est terminé, le signal retourne à l'état bas.

Ce capteur infrarouge a la possibilité d'être paramétré par son utilisateur. Pour cela, il dispose de deux potentiomètres pour régler la distance de détection et la durée de l'état haut. Il y a aussi la possibilité de le configurer dans deux modes de fonctionnement grâce à un cavalier à placer entre deux broches.

Voici des images du signal émis par le capteur sur un oscilloscope pour illustrer ces explications :

Le délai à l'état haut est d'environ 2,5 secondes par défaut.

Comme vous pouvez le voir sur la seconde image, il y a un temps ou le signal du capteur est "forcé" à l'état bas. C'est à dire que pendant ce laps de temps là, le capteur ne détectera pas les mouvements. En faisant plusieurs essais, je trouve une valeur d'environ 6 secondes.

Le capteur possède deux modes de fonctionnement : 

  • Un mode de détection unique qui permet de détecter un seul mouvement à la fois
  • Un mode de détection multiple qui permet de détecter plusieurs mouvements et de déclencher le compteur du temps à l'état haut à partir du dernier mouvement détecté. L'image ci-dessous illustre ce mode de fonctionnement.

La cavalier sert à sélectionner ces deux modes :

le mode de détection unique

et le mode de détection multiple.

Utilisation du capteur PIR

Il est temps de relier votre capteur à votre carte arduino ! C'est simple, le capteur ne possède que 3 broches à connecter.

Les 3 broches sont en haut de l'image, voici leurs fonctions de gauche à droite : la masse, le signal de sortie (numérique), l'alimentation (5 V).

Il ne reste plus qu'à les relier de la sorte :

(lien de téléchargement)

A présent, voici un petit programme qui permet la lecture du capteur infrarouge :

Ce programme permet d'afficher dans le moniteur série si un mouvement est détecter ou non. Le seul problème est que l'affichage est en continu, même s'il n'y a pas de changement dans l'information le moniteur l'affiche tout de même. Par conséquent je trouve le moniteur série un peu surchargé.

Le programme suivant utilise les interruptions, ainsi le moniteur affiche les informations uniquement à chaque fois qu'elles changent ! C'est quand même plus lisible !

Et voilà ! Maintenant vous savez tous sur ce capteur et vous pouvez l'utiliser pour vos projets ! N'hésitez pas à les partager sur le forum et à demander de l'aide aux makers !

9 Commentaires

  • Avatar
    azerty
    janv. 26, 2018

    J'ai laissé les potentiomètres à leur position neutre et j'ai écrit même code et j'ai fait même montage mais ça n'affiche rien.Aidez moi s'il vous plait !

  • Avatar
    jacobée
    mai 3, 2018

    Bonjour, Dans l'optique d'une alarme sur un voilier (à quai) j'ai appliqué le principe expliqué dans cet article avec le même capteur PIR relié à un shield GSM. Utilisé seul comme dans votre article aucun problème. Couplé au shield GPRS tout fonctionne mais j'ai des détections intempestives et aléatoires que je ne comprends pas. Une détection toutes les trois heures dans le meilleur des cas ; ex : 01:19 - 04:18 - 07:18 etc... Cette situation ne se produit que si le PIR est connecté ; j'ai essayé sur différentes pin, c'est pareil. Une idée ? Merci !

    • Avatar
      Mike118
      mai 21, 2018

      Il faudrait peut être jeter un oeil à votre code ... Je vous invite à passer du côté du forum => www.robot-maker.com/forum

      • Avatar
        JJDelfino
        mai 24, 2018

        Bonjour, j'ai un probleme avec le deuxieme code, ca me dit que" 'detection_IR' was not declared in this scope". comment remedier a cela ?

  • Avatar
    Clément
    juil. 16, 2018

    Bonjour, j'ai brancher ce fameux détecteur pour un montage fait maison. Le but étant d'alimenter un servo moteur(4,8v) quand le capteur détecte un mouvement. J'ai donc le + de la batterie (4 piles LR6) sur le branchement VCC du capteur et le moins (des piles) sur le branchement GND du capteur. Le + du servo moteur est relié à l'out du capteur et le - du moteur est rélié au - des piles. Mon problème est que le capteur ne s'active pas peu importe les réglages de luminosité et de timer que je fais. Je me demande donc si le problème viens de mon montage ou si je fais une mauvaise utilisation du capteur. Je vous remercie par avance, Cordialement,

  • Avatar
    Samuel Martins
    oct. 18, 2018

    Bonjour, dans le cadre d un projet de groupe de fin de licence, nous aurions besoin d utiliser plusieurs capteurs, est-il possible de les relier sur la même carte arduino et dans ce cas combien au maximum? Nous cherchons à coder pour declencher du son.

  • Avatar
    says ayoub
    déc. 5, 2018

    bonsoir, j'ai besoin de quelques exemlpes de smart home .merci d'avance

  • Avatar
    gregoire
    juin 17, 2019

    connecter avec une led c'est le top bonne détection la led s'allume a la detection petite modofication sur le programme.

  • Avatar
    Sara
    avril 27, 2020

    bonsoir , stp j'aimerais savoir si on peut fixer une distance auxquelles on peut pas dépasser, et dès qu'on le dépasse le pir se déclenche .. et merci

Cet article vous a plu ? Laissez-nous un commentaire !

Tous les champs sont obligatoires

Nom:
E-mail: (ne sera pas publié)
Commentaire:
Recopier le code
ok