Arduino Nano ESP32 - Capteur de mouvement

Ce tutoriel fournit des instructions sur comment utiliser l'Arduino Nano ESP32 avec le capteur de mouvement HC-SR501. En détail, nous apprendrons :

Préparation du matériel

1×Arduino Nano ESP32
1×USB Cable Type-C
1×HC-SR501 Motion Sensor
1×Breadboard
1×Jumper Wires
1×(Optional) DC Power Jack
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)
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

Capteur de mouvement HC-SR501

Le capteur HC-SR501 PIR est un capteur qui peut détecter les mouvements des humains (ou des animaux). Il est largement utilisé pour détecter la présence humaine dans de nombreuses applications (allumage/extinction automatique d'une ampoule, activation/désactivation d'un escalier mécanique, détection d'un intrus, ouverture/fermeture de porte...).

Brochage du capteur de mouvement HC-SR501

Le capteur de mouvement HC-SR501 possède 3 broches :

  • Broche VCC : connectez cette broche à VCC (5V)
  • Broche GND : connectez cette broche à GND (0V)
  • Broche de SORTIE : connectez cette broche à la broche d'entrée de l'ESP32. Cette broche émet le signal correspondant à la détection de mouvement :
    • BAS si aucun mouvement n'est détecté
    • HAUT si un mouvement est détecté.

    Il y a également deux potentiomètres et un cavalier sur le capteur de mouvement HC-SR501. Ces potentiomètres et ce cavalier sont utilisés pour ajuster les paramètres du capteur. Les instructions détaillées sont décrites dans les Utilisations Avancées.

    Détails des broches du capteur de mouvement HC-SR501

    Fonctionnement du capteur de mouvement HC-SR501

    Le principe de fonctionnement du capteur HC-SR501 repose sur le changement du rayonnement infrarouge sur l'objet en mouvement. Pour être détecté par le capteur HC-SR501, l'objet doit répondre à deux exigences :

    • L'objet émet de l'infrarouge.
    • L'objet est en mouvement ou en train de trembler.

    Alors :

    • Si un objet émet un rayon infrarouge mais ne bouge pas (par exemple, une personne reste immobile sans bouger), il n'est pas détecté par le capteur.
    • Si un objet est en mouvement mais n'émet pas de rayon infrarouge (par exemple, un robot ou un véhicule), il n'est pas détecté par le capteur.

    Les animaux et les humains émettent naturellement des rayons infrarouges. Par conséquent, les animaux et les humains peuvent être détectés par le capteur HC-SR501 s'ils sont en mouvement.

    La vidéo ci-dessus montre le principe de fonctionnement du capteur de mouvement. En pratique, le capteur de mouvement peut fonctionner différemment selon le réglage du capteur (décrit dans la section Utilisations Avancées).

    Détection de la présence humaine

    Le capteur lui-même ne détecte PAS directement la présence humaine, il détecte simplement le mouvement. Ensuite, la présence humaine est déduite à partir de la détection de mouvement :

    • Si un mouvement est détecté, des personnes sont présentes.
    • Si aucun mouvement n'est détecté, aucune personne n'est présente.

    Il y a un problème avec cette règle en pratique, les humains sont présents dans la portée du capteur mais ils ne bougent PAS. Ainsi, le mouvement n'est PAS détecté. L'Arduino Nano ESP32 (ou MCU) déduit que l'humain n'est PAS présent.

    Cependant, le capteur est largement utilisé pour détecter les humains dans de nombreuses applications car ce problème n'est PAS grave et le prix du capteur est bon marché.

    Arduino Nano ESP32 et capteur de mouvement HC-SR501

    Lorsqu'une broche d'un ESP32 est configurée comme entrée numérique, elle peut lire l'état (BAS ou HAUT) de tout ce à quoi elle est connectée.

    En connectant la broche de l'ESP32 à la broche de SORTIE du capteur HC-SR501, nous pouvons utiliser le code Arduino Nano ESP32 pour lire la valeur de la broche de SORTIE, puis en déduire le mouvement.

Schéma de câblage entre le capteur de mouvement HC-SR501 et l'Arduino Nano ESP32

  • Le schéma de câblage pour alimenter la carte Arduino Nano ESP32 via le port USB.
Schéma de câblage du capteur de mouvement Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

  • Le schéma de câblage lors de l'alimentation de la carte Arduino Nano ESP32 via la broche Vin.
Schéma de câblage du capteur de mouvement Arduino Nano ESP32 avec adaptateur d'alimentation externe

This image is created using Fritzing. Click to enlarge image

Configuration initiale

Detection Range Adjuster Fully screw it in the clockwise direction.
Time Delay Adjuster Fully screw it in the anti-clockwise direction.
Repeat Trigger Selector Put jumper like the below image.
Configuration initiale du capteur de mouvement Arduino Nano ESP32

Comment programmer un détecteur de mouvement

  • Configurez une broche d'ESP32 en mode entrée numérique en utilisant la fonction pinMode().
pinMode(PIN_TO_SENSOR, INPUT);
  • Lisez l'état de la broche de SORTIE du capteur en utilisant la fonction digitalRead().
motion_state = digitalRead(PIN_TO_SENSOR);
  • Détecter le début de mouvement (changement d'état de la broche de BAS à HAUT)
prev_motion_state = motion_state; // stocker l'ancien état motion_state = digitalRead(PIN_TO_SENSOR); // lire le nouvel état if (prev_motion_state == LOW && motion_state == HIGH) { // changement d'état du pin : LOW -> HIGH Serial.println("Motion detected!"); }
  • Détecter l'arrêt de mouvement (changement d'état de la broche de HAUT à BAS)
prev_motion_state = motion_state; // enregistrer l'ancien état motion_state = digitalRead(PIN_TO_SENSOR); // lire le nouvel état if (prev_motion_state == HIGH && motion_state == LOW) { // changement d'état du pin : HIGH -> LOW Serial.println("Motion stopped!"); }

Code Arduino Nano ESP32

/* * Ce code Arduino Nano ESP32 a été développé par newbiely.fr * Ce code Arduino Nano ESP32 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-nano-esp32/arduino-nano-esp32-motion-sensor */ #define PIN_TO_SENSOR D2 // La broche Arduino Nano ESP32 connectée à la broche OUTPUT du capteur int motion_state = LOW; // état actuel de la broche int prev_motion_state = LOW; // état précédent de la broche void setup() { Serial.begin(9600); // Initialiser le Serial pour communiquer avec le moniteur série. pinMode(PIN_TO_SENSOR, INPUT); // configurer la broche Arduino Nano ESP32 en mode entrée pour lire la valeur de la broche OUTPUT du capteur } void loop() { prev_motion_state = motion_state; // stocker l'ancien état motion_state = digitalRead(PIN_TO_SENSOR); // lire le nouvel état if (prev_motion_state == LOW && motion_state == HIGH) { // changement d'état de la broche : LOW -> HIGH Serial.println("Motion detected!"); // TODO: activer une alarme, une lumière ou activer un dispositif ... ici } else if (prev_motion_state == HIGH && motion_state == LOW) { // changement d'état de la broche : HIGH -> LOW Serial.println("Motion stopped!"); // TODO: désactiver l'alarme, la lumière ou désactiver un dispositif ... ici } }

Étapes rapides

Comment ouvrir le moniteur série sur Arduino IDE
  • Déplacez votre main devant la portée du capteur
  • Consultez le résultat sur le moniteur série
COM6
Send
Motion detected! Motion stopped!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Vidéo

Références linguistiques

Tutoriels connexes

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!