Arduino Mega - Capteur de mouvement

Ce guide vous montre comment utiliser le capteur de mouvement HC-SR501 et un Arduino Mega pour détecter une personne. Voici ce que nous allons apprendre :

Arduino Mega motion sensor

Matériel requis

1×Arduino Mega
1×Câble USB 2.0 type A/B
1×Capteur de mouvement HC-SR501
1×Fils de connexion
1×Recommandé: Screw Terminal Block Shield for Arduino Uno/Mega
1×Recommandé: Breadboard Shield for Arduino Mega
1×Recommandé: Enclosure for Arduino Mega

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (30 capteurs/écrans)
1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du capteur de mouvement HC-SR501

HC-SR501 Motion Sensor

Le HC-SR501 est un capteur PIR qui détecte les personnes ou les animaux en mouvement. Il est souvent utilisé pour de nombreuses tâches, comme allumer et éteindre les lumières, ouvrir et fermer les portes, contrôler les escalators, et repérer les intrus.

Avez-vous déjà vu des portes qui s'ouvrent et se ferment toutes seules, des lumières qui s'allument et s'éteignent toutes seules, ou des escalators qui démarrent tout seuls ? Vous êtes-vous déjà demandé "Comment cela fonctionne-t-il ?" Si oui, ce guide vous expliquera comment cela fonctionne et vous montrera aussi comment le faire vous-même. Commençons !

Brochage

Le capteur de mouvement HC-SR501 a trois broches.

  • Broche GND : connecter à la masse (0 V)
  • Broche VCC : connecter au 5V
  • Broche OUTPUT : passe à LOW quand il n'y a pas de mouvement, HIGH quand il y a du mouvement. Connectez cette broche à la broche d'entrée d'un Arduino Mega.

Le HC-SR501 a un cavalier et deux boutons d'ajustement pour modifier les paramètres du capteur. Commencez avec le réglage par défaut. Pour plus d'informations, consultez la section "Utilisations avancées". Utilisations avancées

HC-SR501 Motion Sensor Pinout

Comment ça fonctionne

Le capteur HC-SR501 détecte le mouvement en surveillant les changements de lumière infrarouge de l'objet en mouvement. Pour que le HC-SR501 détecte un objet, deux choses doivent être vraies :

  • Il bouge ou se déplace.
  • Il émet de l'énergie infrarouge.

Donc :

  • Si quelque chose bouge mais n'émet pas de lumière infrarouge (par exemple, un robot ou une voiture jouet), le capteur ne le détectera pas.
  • Si quelque chose émet de la lumière infrarouge mais reste immobile (par exemple, une personne qui reste immobile), le capteur ne le détectera pas.

Les personnes et les animaux émettent naturellement de la chaleur. À cause de cela, le capteur peut détecter quand les personnes et les animaux bougent.

L'état de la broche de sortie :

  • Si rien ne bouge dans la portée du capteur, la broche OUTPUT est à LOW.
  • Si une personne ou un animal entre dans la portée du capteur, la broche OUTPUT passe de LOW à HIGH, indiquant qu'un mouvement est détecté.
  • Si une personne ou un animal quitte la portée du capteur, la broche OUTPUT passe de HIGH à LOW, indiquant que le mouvement a cessé.

La vidéo montre l'idée principale de comment le capteur de mouvement fonctionne. En réalité, son fonctionnement peut être un peu différent selon ses paramètres, comme expliqué dans la section Utilisations avancées.

Arduino Mega - Capteur de mouvement HC-SR501

Quand vous configurez une broche de l'Arduino Mega comme entrée numérique, elle peut détecter si ce qui y est connecté est bas ou haut.

Connectez une broche de l'Arduino Mega à la broche OUTPUT du capteur HC-SR501. Puis utilisez un code Arduino simple pour lire la valeur de cette broche afin de détecter le mouvement.

Schéma de câblage

Arduino Mega Motion Sensor Wiring Diagram

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

Réglage initial

Ajusteur de délaiVissez-le dans le sens anti-horaire complètement.
Ajusteur de portée de détectionVissez-le dans le sens horaire complètement.
Sélecteur de déclenchement répétéPlacez le cavalier comme montré sur l'image.
arduino motion sensor initial setting

Comment programmer pour le capteur de mouvement

  • Configurez une broche de l'Arduino Mega comme entrée numérique en utilisant la fonction pinMode().
pinMode(SENSOR_PIN, INPUT);
  • Utilisez la fonction digitalRead() pour voir si la broche OUTPUT du capteur est haute ou basse.
motion_state = digitalRead(SENSOR_PIN);
  • Détectez quand le mouvement commence (la broche passe de bas à haut).
prev_motion_state = motion_state; // Sauvegarder l'état précédent de la broche motion_state = digitalRead(SENSOR_PIN); // Lire le niveau d'entrée actuel if (prev_motion_state == LOW && motion_state == HIGH) { // Déclencher sur un front montant LOW-to-HIGH Serial.println("Motion detected!"); }
  • Détectez quand il n'y a plus de mouvement (la broche passe de HIGH à LOW).
prev_motion_state = motion_state; // Sauvegarder la lecture précédente du capteur pour la détection de front motion_state = digitalRead(SENSOR_PIN); // Lire l'état actuel du capteur if (prev_motion_state == HIGH && motion_state == LOW) { // Détecter une transition HIGH-to-LOW (front descendant) Serial.println("Motion stopped!"); // Afficher une notification quand le mouvement s'arrête }

Code Arduino Mega

/* * Ce code Arduino Mega a été développé par newbiely.fr * Ce code Arduino Mega 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-mega/arduino-mega-motion-sensor */ #define SENSOR_PIN 2 // Pin number connected to the motion sensor's output int motion_state = LOW; // Current read state of the sensor (LOW on idle) int prev_motion_state = LOW; // Previous read state used for edge detection void setup() { Serial.begin(9600); // Initialize serial communication at 9600 baud pinMode(SENSOR_PIN, INPUT); // Configure SENSOR_PIN as input for the motion sensor } void loop() { prev_motion_state = motion_state; // Store the last sensor state for edge detection motion_state = digitalRead(SENSOR_PIN); // Read the current sensor output // Detect rising edge: motion detected when LOW becomes HIGH if (prev_motion_state == LOW && motion_state == HIGH) { Serial.println("Motion detected!"); // Serial message when motion is detected // Optional: Placeholder for extra actions on detection } // Detect falling edge: motion stops when HIGH transitions to LOW else if (prev_motion_state == HIGH && motion_state == LOW) { Serial.println("Motion stopped!"); // Serial message when motion stops // Optional: Placeholder for extra actions on stop } }

Étapes rapides

Suivez ces étapes une par une :

  • Connectez les composants comme montré dans le schéma.
  • Connectez la carte Arduino Mega à votre ordinateur avec un câble USB.
  • Ouvrez l'Arduino IDE sur votre ordinateur.
  • Choisissez la bonne carte : Arduino Mega, et sélectionnez le port COM.
  • Copiez le code ci-dessus et ouvrez-le dans l'Arduino IDE.
  • Appuyez sur le bouton Upload pour envoyer le code à l'Arduino Mega.
  • Ouvrez le moniteur série.
  • Bougez 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 paramètres du capteur avec un cavalier et deux boutons, comme décrit ci-dessus.

Ajusteur de portée de détection

Ce bouton vous permet de changer la distance à laquelle il peut détecter les choses (environ 3 à 7 mètres).

  • Quand il est tourné complètement vers la droite, il peut détecter jusqu'à environ 3 mètres.
  • Quand il est tourné complètement vers la gauche, il peut détecter jusqu'à environ 7 mètres.
Motion Sensor Detection Range

Nous pouvons ajuster le potentiomètre pour régler la portée entre 3 et 7 mètres.

Ajusteur de délai

Ce bouton règle le temps de délai.

  • Tournez-le complètement vers la droite, et le délai sera d'environ 5 minutes.
  • Tournez-le complètement vers la gauche, et le délai sera d'environ 3 secondes.

Ensuite, nous expliquerons ce qu'est un délai et comment il fonctionne avec le déclenchement répété.

motion sensor adjust time delay

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

Cet interrupteur vous permet de choisir comment fonctionne le déclenchement : déclenchement unique ou déclenchement répété.

motion sensor trigger selection

Nous appelons le réglage du délai time_delay (vous le modifiez avec l'ajusteur de délai). Imaginez que vous continuez à bouger à l'intérieur de la zone de détection du capteur pendant longtemps. C'est motion_time, qui est beaucoup plus long que time_delay.

  • En mode coup unique, la broche OUTPUT s'allume et s'éteint plusieurs fois. Elle reste allumée pendant un temps égal à time_delay et reste éteinte pendant 3 secondes fixes.
motion sensor single trigger mode
  • La broche OUTPUT reste HIGH pendant le temps de mouvement plus le délai.
motion sensor repeatable trigger mode

Test

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

  • Mode déclenchement unique :
  • Réglez le cavalier en mode déclenchement unique.
  • Bougez votre main devant le capteur pendant 10 secondes.
  • Retirez votre main du capteur.
  • Attendez 3 secondes, puis vérifiez le moniteur série pour voir la sortie.
COM6
Send
Motion detected! Motion stopped! Motion detected! Motion stopped! Motion detected! Motion stopped!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Mode déclenchement répétable :
  • Placez le cavalier pour démarrer le mode déclenchement répétable.
  • Tenez votre main devant le capteur pendant environ 10 secondes.
  • Retirez votre main du capteur.
  • Après environ 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 coup unique, le capteur se déclenche deux ou trois fois. En mode déclenchement répétable, il se déclenche seulement une fois.

※ Note:

Pendant la période LOW (3 secondes), le capteur ne peut détecter aucun mouvement. Cela signifie que le capteur n'est pas actif pendant ce temps, mais cela ne cause généralement pas de problèmes.

Nous recommandons d'utiliser le mode déclenchement répétable.

En utilisation réelle :

  • Les appareils ou machines s'allument souvent quand quelqu'un est à proximité.
  • Ils ne s'éteignent pas immédiatement quand la personne part ; ils s'éteignent après un court délai.

Références des fonctions

Tutoriels connexes

※ 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 !