Arduino Nano - Capteur de mouvement
Vous êtes-vous déjà demandé : « Comment cela peut-il faire cela ? » lorsque vous rencontrez des endroits avec des portes automatiques, des lumières et des escaliers mécaniques ? Si oui, ce tutoriel répondra non seulement à votre question, mais vous montrera également comment y parvenir en utilisant Arduino Nano et un capteur de mouvement. Commençons !
Ce tutoriel vous explique comment utiliser un Arduino Nano avec un capteur de mouvement. En détail, nous allons apprendre :
- Fonctionnement du capteur de mouvement HC-SR501
- Comment connecter le capteur de mouvement HC-SR501 à l'Arduino Nano
- Comment programmer l'Arduino Nano pour lire l'état du capteur de mouvement HC-SR501
- Comment utiliser l'Arduino Nano et le capteur de mouvement HC-SR501 pour détecter la présence humaine et agir en conséquence.
Préparation du matériel
1 | × | Arduino Nano | |
1 | × | USB A to Mini-B USB cable | |
1 | × | HC-SR501 Motion Sensor | |
1 | × | Jumper Wires | |
1 | × | (Optional) 9V Power Adapter for Arduino Nano | |
1 | × | (Recommended) Screw Terminal Adapter for Arduino Nano |
Or you can buy the following sensor kits:
1 | × | DIYables Sensor Kit (30 sensors/displays) | |
1 | × | DIYables Sensor Kit (18 sensors/displays) |
À propos du capteur de mouvement HC-SR501
Le capteur PIR HC-SR501 est capable de détecter le mouvement des humains (ou des animaux). Il est couramment utilisé dans diverses applications, telles que l'allumage ou l'extinction automatique d'une ampoule, l'ouverture et la fermeture d'une porte, l'activation ou la désactivation d'un escalier mécanique et la détection d'un intrus.
Le brochage du capteur de mouvement
Le capteur de mouvement HC-SR501 possède 3 broches :
- Broche GND : Elle doit être connectée à GND (0V)
- Broche VCC : Elle doit être connectée à VCC (5V)
- Broche de SORTIE : C'est une broche de sortie qui sera à l'état BAS lorsque aucun mouvement n'est détecté, et à l'état HAUT lorsqu'un mouvement est détecté. Cette broche doit être connectée à la broche d'entrée de l'Arduino.
Le HC-SR501 possède un cavalier et deux potentiomètres qui servent à ajuster les réglages du capteur.
Comment ça fonctionne
Le capteur HC-SR501 est capable de détecter un mouvement basé sur les changements du rayonnement infrarouge provenant d'un objet en mouvement. Pour que le capteur HC-SR501 détecte l'objet, deux critères doivent être remplis :
- L'objet doit être en mouvement ou en train de trembler
- L'objet doit émettre des radiations infrarouges
Par conséquent :
- Si un objet est en mouvement mais n'émet pas de rayons infrarouges (par exemple, un robot ou un jouet de véhicule), il ne sera pas détecté par le capteur.
- Si un objet émet des rayons infrarouges mais ne se déplace pas (par exemple, une personne immobile), il ne sera pas détecté par le capteur.
Les humains et les animaux sont des sources de rayonnement infrarouge. Par conséquent, le capteur peut détecter leurs mouvements.
État de la broche de SORTIE :
- Lorsqu'aucun humain (ou animal) n'est présent dans la portée détectée du capteur, la broche de SORTIE du capteur est à l'état BAS.
- Si un humain (ou un animal) entre dans la portée détectée du capteur, la broche de SORTIE passera de BAS à HAUT, indiquant qu'un mouvement a été détecté.
- Lorsque l'humain (ou l'animal) quitte la portée détectée du capteur, la broche de SORTIE basculera de HAUT à BAS, signifiant que le mouvement est terminé.
La vidéo ci-dessus montre le fonctionnement de base d'un détecteur de mouvement. En réalité, le fonctionnement du détecteur de mouvement peut varier selon la configuration (qui est décrite dans la section Utilisations Avancées).
Détecter la présence humaine
Le capteur lui-même ne reconnaît pas la présence humaine. Il détecte uniquement le mouvement. Nous utilisons un Arduino Nano pour déduire la présence humaine en fonction du mouvement détecté par le capteur, selon cette règle :
- Si un mouvement est détecté, alors des humains sont présents.
- Si aucun mouvement n'est détecté, alors des humains ne sont pas présents.
Cette règle fonctionne de manière imparfaite dans une situation pratique : lorsque des personnes se trouvent à portée du capteur mais ne bougent pas, le mouvement ne sera pas détecté. En conséquence, l'Arduino Nano conclura qu'aucun humain n'est présent.
Par exemple, le capteur de mouvement dans votre salle de réunion est configuré pour activer les lumières lorsque des personnes sont présentes. Lorsque la réunion est en cours et que personne ne bouge, le mouvement n'est pas détecté et donc la présence humaine n'est pas reconnue, ce qui entraîne l'extinction des lumières. Pour les rallumer, il faut que quelqu'un bouge.
Cependant, ce problème n'est PAS grave et le capteur est bon marché. Par conséquent, il est largement utilisé pour détecter les humains dans de nombreuses applications.
Arduino Nano - Capteur de mouvement HC-SR501
Connectez la broche d'entrée numérique d'un Arduino à la broche de SORTIE du capteur HC-SR501. En utilisant le code Arduino Nano, nous pouvons vérifier la valeur de la broche de SORTIE pour détecter un mouvement.
Diagramme de câblage
This image is created using Fritzing. Click to enlarge image
Configuration initiale
Time Delay Adjuster | Screw it in anti-clockwise direction fully. |
Detection Range Adjuster | Screw it in clockwise direction fully. |
Repeat Trigger Selector | Put jumper as shown on the image. |
Comment programmer un capteur de mouvement
- Configurez une broche d'un Arduino en entrée numérique en utilisant la fonction pinMode().
- Vérifiez l'état de la broche de SORTIE du capteur avec la fonction digitalRead().
- Identifiez le moment où le mouvement commence (l'état de la broche passe de BAS à HAUT).
- Identifier quand l'état de la broche passe de HAUT à BAS indiquant que le mouvement s'est arrêté.
Code Arduino Nano
Étapes rapides
- Copiez le code ci-dessus et ouvrez-le dans l'IDE Arduino.
- Cliquez sur le bouton Upload dans l'IDE Arduino pour compiler et télécharger le code sur l'Arduino Nano.
- Ouvrez le moniteur série.
- Déplacez votre main à portée du capteur.
- Vérifiez la sortie dans le moniteur série.
Vidéo
Utilisations avancées
Comme mentionné précédemment, nous pouvons modifier la configuration du capteur en utilisant un cavalier et deux potentiomètres.
Ajusteur de portée de détection
Ce potentiomètre peut modifier la distance à laquelle quelque chose peut être détecté (environ 3 à 7 mètres).
- Le tourner complètement à droite permet de détecter des objets jusqu'à 3 mètres de distance.
- Le tourner complètement à gauche permet de détecter des objets jusqu'à 7 mètres de distance.
Nous pouvons utiliser le potentiomètre pour régler une plage de valeurs entre 3m et 7m.
Ajusteur de délai
Ce potentiomètre est utilisé pour modifier le délai.
- Lorsqu'il est tourné complètement dans le sens des aiguilles d'une montre, le délai est d'environ 5 minutes.
- Lorsqu'il est tourné complètement dans le sens inverse des aiguilles d'une montre, le délai est d'environ 3 secondes.
La section suivante fournit une explication du concept de délai temporel en conjonction avec le déclencheur de répétition.
Sélecteur de déclenchement répété
Un cavalier existe qui est utilisé pour choisir entre les modes de déclenchement : déclenchement unique ou déclenchement répétable.
Faisons référence au réglage du délai temporel, qui est configuré via le Réglage de Délai Temporel, comme time_delay. Si vous vous déplacez dans la portée du capteur pendant une longue période (connue sous le nom de motion_time) qui est plusieurs fois plus longue que time_delay :
- En mode Déclenchement Unique : l'état de la broche OUTPUT basculera plusieurs fois entre BAS et HAUT. La durée en HAUT sera égale à time_delay tandis que la durée en BAS est fixée à 3 secondes.
- Mode de déclenchement répétable : L'état de la broche OUTPUT restera ÉLEVÉ pendant une période de (temps de mouvement + délai temporel).
Test
- Mode de déclenchement unique :
- Placez le cavalier pour sélectionner le mode de déclenchement unique
- Agitez votre main devant le capteur pendant environ 10 secondes.
- Éloignez votre main de la zone du capteur
- Attendez 3 secondes, vous devriez observer la sortie sur le moniteur série comme suit :
- Placez le cavalier pour choisir le mode de déclenchement répétable
- Agitez votre main devant le capteur pendant environ 10 secondes
- Éloignez votre main de la portée du capteur
- Attendez 3 secondes, le résultat sera visible dans le moniteur série comme ceci :
- Nous activons ou mettons en marche des dispositifs/machines dès qu'une personne est présente
- Nous n'éteignons ni désactivons pas les dispositifs/machines immédiatement après qu'une personne n'est plus présente. Nous éteignons ou désactivons les dispositifs/machines après qu'un certain temps se soit écoulé.
Mode de déclenchement répétable :
Nous pouvons observer que lorsque le capteur est en mode de déclenchement unique, il s'activera deux ou trois fois. Alors que, en mode de déclenchement répétable, le capteur ne se déclenchera qu'une seule fois.
※ NOTE THAT:
Pendant le temps BAS (3 secondes, une valeur fixe et non ajustable), le capteur est incapable de détecter tout mouvement. Cela ne pose aucun problème en pratique.
Il est suggéré d'utiliser le mode de déclenchement répétable.
Dans de nombreux scénarios du monde réel :
Comment utiliser le délai d'attente
Si aucun humain n'est détecté, le système d'automatisation attendra pendant une période avant d'agir.
Le capteur de mouvement dispose d'un ajusteur de délai qui permet de régler le temps de retard à un minimum de 3 secondes et un maximum de 5 minutes. De plus, le code Arduino Nano peut être utilisé pour définir n'importe quelle valeur pour le délai.
Si nous ne spécifions pas de délai d'expiration dans le code de l'Arduino Nano, le délai d'expiration sera équivalent au délai configuré dans le capteur.
Si un délai d'expiration est établi dans le code de l'Arduino Nano, il sera l'agrégat du délai dans la configuration du capteur et du délai dans le code de l'Arduino Nano.
Définir un délai temporel dans le code Arduino Nano
Si le mode de déclenchement répétable est activé, alors le délai dans le code sera de 30 secondes plus time_delay, qui est réglé sur les paramètres du capteur via le réglage du délai.
Défiez-vous
Utilisez le capteur de mouvement pour réaliser l'un de ces projets :
- Activez la lumière lorsque vous entrez dans votre chambre et éteignez-la après 30 secondes après votre départ. Conseil : Consultez Arduino Nano - Relais.
- Déclenchez une alarme lorsque quelqu'un s'approche de vos objets de valeur. Conseil : Consultez Arduino Nano - Buzzer Piézoélectrique.