Arduino UNO R4 - Capteur de mouvement

Ce tutoriel vous explique comment utiliser le capteur de mouvement HC-SR501 et l'Arduino UNO R4 pour détecter l'être humain. En détail, nous allons apprendre :

Capteur de mouvement Arduino UNO R4

À propos du capteur de mouvement HC-SR501

Capteur de mouvement HC-SR501

Le capteur PIR HC-SR501 détecte les mouvements humains ou animaux. Il est couramment utilisé dans diverses applications telles que l'allumage et l'extinction des lumières, l'ouverture et la fermeture des portes, le fonctionnement des escalators et la détection d'intrus.

Quand vous vous rendez dans des lieux où les portes s'ouvrent et se ferment toutes seules, où les lumières s'allument et s'éteignent automatiquement, ou où les escaliers mécaniques démarrent d'eux-mêmes, vous êtes-vous déjà demandé : « Comment cela se passe-t-il ? » Si c'est le cas, ce guide expliquera non seulement comment cela fonctionne, mais il vous montrera aussi comment le créer vous-même. Commençons !

Schéma des broches

Le capteur de mouvement HC-SR501 est livré avec trois broches :

  • Broche GND : connectez-la à GND (0 V)
  • Broche VCC : connectez-la à VCC (5 V)
  • Broche OUTPUT : envoie LOW lorsqu'il n'y a pas de mouvement, HIGH lorsqu'il y a un mouvement. Connectez cette broche à la broche d'entrée de l'Arduino UNN R4.

Le module HC-SR501 comprend un cavalier et deux potentiomètres, qui permettent d'ajuster les paramètres du capteur. Commencez par le réglage par défaut. Vous pouvez trouver plus d'informations dans la section « Utilisations Avancées ». Utilisations Avancées

Schéma de brochage du capteur de mouvement HC-SR501

Comment ça fonctionne

Le capteur HC-SR501 détecte les mouvements en observant les variations de la lumière infrarouge émise par l’objet qui bouge. Pour que le capteur HC-SR501 détecte un objet, il doit satisfaire deux conditions :

  • Tremble ou se déplace
  • émet de l'énergie infrarouge

Par conséquent :

  • Si un objet se déplace sans émettre de rayons infrarouges (comme un robot ou une voiture-jouet), le capteur ne le détectera pas.
  • Si un objet émet des rayons infrarouges mais ne bouge pas (comme une personne qui reste immobile), le capteur ne le détectera pas.

Les humains et les animaux émettent naturellement de l'infrarouge. En raison de cela, le capteur peut détecter quand les humains et les animaux bougent.

L'état de la broche de sortie :

  • Si aucune personne ou aucun animal ne se déplace dans la portée du capteur, la broche OUTPUT du capteur est à l'état bas.
  • Si une personne ou un animal entre dans la portée du capteur, la broche OUTPUT passe de l'état bas à l'état haut, indiquant une détection de mouvement.
  • Si une personne ou un animal sort de la portée du capteur, la broche OUTPUT passe de l'état haut à l'état bas, indiquant la fin du mouvement.

La vidéo montre l'idée de base de la façon dont le capteur de mouvement fonctionne. Dans des situations réelles, la façon dont il opère peut varier légèrement en fonction de ses réglages, comme expliqué dans la section Utilisations avancées.

Arduino UNO R4 - Capteur de mouvement HC-SR501

Lorsque vous configurez une broche de l'Arduino UNO R4 en entrée numérique, elle peut détecter si l'élément connecté se trouve dans un état bas ou haut.

Connectez la broche de l'Arduino UNO R4 à la broche de sortie du capteur HC-SR501. Ensuite, utilisez le code Arduino UNO R4 pour lire la valeur de la broche de sortie afin de détecter le mouvement.

Diagramme de câblage

Schéma de câblage du capteur de mouvement Arduino UNO R4

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Voir Comment alimenter l'Arduino UNO R4..

Paramètre initial

Time Delay AdjusterScrew it in anti-clockwise direction fully.
Detection Range AdjusterScrew it in clockwise direction fully.
Repeat Trigger SelectorPut jumper as shown on the image.
Réglage initial du capteur de mouvement Arduino

Comment programmer un capteur de mouvement

  • Configurez une broche de l'Arduino UNO R4 en mode entrée numérique en utilisant la fonction pinMode().
pinMode(SENSOR_PIN, INPUT);
  • Utilisez la fonction digitalRead() pour vérifier l'état de la broche de sortie du capteur.
motion_state = digitalRead(SENSOR_PIN);
  • Détecter le moment où le mouvement commence (la broche passe de LOW à HIGH).
prev_motion_state = motion_state; // Stocker l'état précédent de la broche motion_state = digitalRead(SENSOR_PIN); // Lire l'état actuel de la broche if (prev_motion_state == LOW && motion_state == HIGH) { // Vérifier la transition de LOW à HIGH Serial.println("Motion detected!"); }
  • Détecter quand le mouvement s'arrête (l'état de la broche passe de HIGH à LOW).
prev_motion_state = motion_state; // Préserver l'état précédent de la broche motion_state = digitalRead(SENSOR_PIN); // Mettre à jour l'état actuel à partir de l'entrée du capteur if (prev_motion_state == HIGH && motion_state == LOW) { // Détecter la transition de HIGH à LOW Serial.println("Motion stopped!"); // Afficher le message lorsque le mouvement s'arrête

Arduino UNO R4 code

/* * Ce code Arduino UNO R4 a été développé par newbiely.fr * Ce code Arduino UNO R4 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-uno-r4/arduino-uno-r4-motion-sensor */ #define SENSOR_PIN 2 // L'Arduino UNO R4 connecté à la broche de sortie du capteur de mouvement int motion_state = LOW; // Initialiser l'état actuel de la broche à LOW int prev_motion_state = LOW; // Initialiser l'état précédent de la broche à LOW void setup() { Serial.begin(9600); // Démarrage de la communication série à 9600 bauds pinMode(SENSOR_PIN, INPUT); // Configurer la broche SENSOR_PIN en entrée pour le capteur } void loop() { prev_motion_state = motion_state; // Assigner l'état actuel de la broche à l'état précédent pour la comparaison motion_state = digitalRead(SENSOR_PIN); // Lire l'état actuel à partir de la sortie du capteur // Vérifier la transition de LOW à HIGH indiquant que le mouvement est détecté if (prev_motion_state == LOW && motion_state == HIGH) { Serial.println("Motion detected!"); // Imprimer le message lorsque le mouvement est détecté // Optionnel : Actions supplémentaires lors de la détection de mouvement } // Vérifier la transition de HIGH à LOW indiquant que le mouvement s'est arrêté else if (prev_motion_state == HIGH && motion_state == LOW) { Serial.println("Motion stopped!"); // Afficher le message lorsque le mouvement s'est arrêté // Optionnel : Actions supplémentaires lorsque le mouvement s'arrête } }

Étapes rapides

Suivez ces instructions étape par étape :

  • Si c'est la première fois que vous utilisez l'Arduino Uno R4 WiFi/Minima, reportez-vous au tutoriel sur Arduino UNO R4 - Installation du logiciel..
  • Branchez les composants selon le schéma fourni.
  • Connectez la carte Arduino Uno R4 à votre ordinateur à l'aide d'un câble USB.
  • Lancez l'IDE Arduino sur votre ordinateur.
  • Sélectionnez la carte Arduino Uno R4 appropriée (par exemple, Arduino Uno R4 WiFi) et le port COM.
  • Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino
  • Appuyez sur le bouton Upload dans l'IDE Arduino pour téléverser le code sur l'Arduino UNO R4
  • Ouvrez le Moniteur série
  • Passez votre main devant le capteur
  • Vérifiez la sortie dans le Moniteur série
COM6
Send
Motion detected! Motion stopped!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Vidéo

Utilisations avancées

Cette section est consacrée à des connaissances approfondies. NE vous inquiétez pas si vous ne comprenez pas. Ignorez cette section si elle vous surcharge, et revenez un autre jour. Continuez à lire les sections suivantes.

Nous pouvons ajuster les réglages du capteur en utilisant un cavalier et deux potentiomètres, comme décrit ci-dessus.

Régleur de la portée de détection

Ce potentiomètre règle la distance de détection (environ 3 à 7 mètres).

  • Lorsqu'il est tourné complètement dans le sens horaire, la portée de détection est d'environ 3 mètres.
  • Lorsqu'il est tourné complètement dans le sens antihoraire, la portée de détection est d'environ 7 mètres.
Portée de détection du capteur de mouvement

Nous pouvons modifier les réglages du potentiomètre pour obtenir la portée souhaitée, comprise entre 3 et 7 mètres.

Régleur de délai

Ce potentiomètre ajuste le délai.

  • Si vous le tournez complètement dans le sens des aiguilles d'une montre, le délai sera d'environ 5 minutes.
  • Si vous le tournez complètement dans le sens inverse des aiguilles d'une montre, le délai sera d'environ 3 secondes.

Ensuite, nous expliquerons ce que signifie le délai temporel et comment il se rapporte à Repeat Trigger.

Ajuster le délai du capteur de mouvement

Sélecteur de déclencheur répété

Ce cavalier vous permet de choisir un mode de déclenchement : déclenchement unique ou déclenchement répétable.

Sélection du déclencheur du capteur de mouvement

Nous désignerons le réglage du délai d'attente (ajusté par le Time Delay Adjuster) comme time_delay. Imaginez que vous continuiez à vous déplacer dans la zone de détection du capteur pendant une période considérable, que nous appellerons motion_time (beaucoup plus longue que time_delay).

  • En mode à déclenchement unique, la broche de sortie bascule entre BAS et HAUT à plusieurs reprises. Elle reste HAUT pendant une période égale à "time_delay" et BAS pendant un temps fixe de 3 secondes.
Mode de déclenchement unique du capteur de mouvement
  • La broche de sortie reste à un niveau haut pendant la durée du mouvement plus le délai.
mode de déclenchement répétable du capteur de mouvement

Tests

Testons les modes de déclenchement. Tournez le régleur de délai complètement vers la gauche pour régler le temps de retard à 3 secondes.

  • Mode à déclenchement unique:
    • Placez le cavalier pour sélectionner le mode à déclenchement unique.
    • Agitez votre main devant le capteur pendant 10 secondes.
    • Retirez votre main de la portée du capteur.
    • Attendez 3 secondes ; puis vérifiez le moniteur série pour la sortie telle qu'elle est affichée.
    COM6
    Send
    Motion detected! Motion stopped! Motion detected! Motion stopped! Motion detected! Motion stopped!
    Autoscroll Show timestamp
    Clear output
    9600 baud  
    Newline  
    • Mode de déclenchement répétable:
      • Placez le cavalier pour activer le mode de déclenchement répétable.
      • Déplacez votre main en continu devant le capteur pendant environ 10 secondes.
      • Retirez votre main de la portée du capteur.
      • Après avoir attendu 3 secondes, vérifiez le moniteur série pour voir la sortie.
      COM6
      Send
      Motion detected! Motion stopped!
      Autoscroll Show timestamp
      Clear output
      9600 baud  
      Newline  

      En mode de déclenchement unique, le capteur s'active deux ou trois fois. En mode de déclenchement répétable, il ne s'active qu'une fois.

      ※ Note:

      Pendant la période LOW, qui dure 3 secondes, le capteur ne peut détecter aucun mouvement. Cela signifie que le capteur est inactif pendant cette période, mais cela ne pose généralement pas de problèmes.

      Il est conseillé d'utiliser le mode de déclenchement répétable.

      Dans les applications pratiques:

      • Les appareils ou machines sont souvent allumés lorsqu'une personne est détectée à proximité.
      • Les appareils ou machines ne sont pas éteints dès que la personne s'éloigne. Ils sont éteints après un certain délai.

Références de fonctions

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !