ESP8266 - Capteur de mouvement
Vous êtes-vous déjà demandé, « Comment cela peut-il faire cela ? » lorsque vous tombez sur des lieux avec des portes qui s'ouvrent et se ferment automatiquement, des ampoules qui s'allument et s'éteignent, ou des escaliers mécaniques qui se mettent en marche sans aucune intervention humaine ? Si oui, ce tutoriel répondra non seulement à votre question, mais vous montrera également comment le réaliser en utilisant ESP8266 et un capteur de mouvement. Commençons !
Ce tutoriel vous explique comment utiliser l'ESP8266 avec un capteur de mouvement. En détail, nous allons apprendre :
- Comment fonctionne le capteur de mouvement HC-SR501
- Comment connecter le capteur de mouvement HC-SR501 à l'ESP8266
- Comment programmer l'ESP8266 pour lire l'état du capteur de mouvement HC-SR501
- Comment utiliser l'ESP8266 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 | × | ESP8266 NodeMCU | |
1 | × | Micro USB Cable | |
1 | × | HC-SR501 Motion Sensor | |
1 | × | Jumper Wires | |
1 | × | (Optional) 5V Power Adapter for ESP8266 | |
1 | × | (Optional) ESP8266 Screw Terminal Adapter |
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 un module capable de détecter les mouvements des personnes (ou des animaux). Il est souvent utilisé dans de nombreuses applications pour détecter la présence humaine, comme allumer/éteindre automatiquement une ampoule, ouvrir/fermer une porte, activer/désactiver un escalateur ou détecter un intrus.
Le schéma des broches du capteur de mouvement
Le capteur de mouvement HC-SR501 possède trois broches :
- Broche GND : Celle-ci doit être reliée à GND (0V)
- Broche VCC : Celle-ci doit être reliée à VCC (5V)
- Broche de SORTIE : C'est une broche de sortie. Elle sera à l'état BAS quand aucun mouvement n'est détecté et à l'état HAUT lorsqu'un mouvement est détecté. Cette broche doit être connectée à une broche d'entrée de l'ESP8266.
Le HC-SR501 possède un cavalier et deux potentiomètres qui servent à ajuster les paramètres du capteur.
Comment ça marche
Le capteur HC-SR501 peut détecter un mouvement en se basant sur les changements du rayonnement infrarouge émis par un objet en mouvement. Pour que le capteur HC-SR501 puisse identifier l'objet, deux critères doivent être remplis :
- L'objet doit être en mouvement ou en vibration
- L'objet doit émettre des radiations infrarouges
En conséquence :
- Si un objet est en mouvement mais n'émet pas de rayons infrarouges (par exemple, un robot ou un jouet véhicule), il ne sera pas détecté par le capteur.
- Si un objet émet des rayons infrarouges mais ne bouge 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. Ainsi, le capteur peut détecter leurs mouvements.
L'état de la broche de SORTIE du capteur :
- Lorsqu'aucun humain (ou animal) n'est présent dans la portée détectée, elle est BASSE.
- Lorsqu'un humain (ou un animal) entre dans la portée détectée, la broche passe de BAS à HAUT, indiquant qu'un mouvement a été détecté.
- Lorsque l'humain (ou l'animal) quitte la portée détectée, la broche repasse de HAUT à BAS, montrant que le mouvement s'est arrêté.
La vidéo ci-dessus montre comment fonctionne en théorie le capteur de mouvement. En réalité, le fonctionnement du capteur de mouvement varie légèrement selon les paramètres du capteur (qui sont décrits dans la section Usages Avancés).
Détecter la présence humaine
Le capteur ne détecte pas directement la présence humaine. Il détecte uniquement les mouvements. Nous utilisons l'ESP8266 pour déduire la présence humaine ou non en fonction des mouvements détectés par le capteur, selon cette règle :
- Si un mouvement est détecté, cela implique la présence d'humains
- Si aucun mouvement n'est détecté, cela implique l'absence d'humains
Cette règle n'est pas parfaite et ne fonctionne pas dans un scénario où des personnes sont à portée du capteur, mais immobiles, le mouvement n'est pas détecté et l'ESP8266 conclut que la personne n'est pas présente. Cependant, cela reste acceptable car habituellement les humains effectuent de petits mouvements.
Par exemple, dans votre salle de réunion, le capteur de mouvement est utilisé pour allumer et éteindre la lumière. Lorsque des personnes entrent dans la salle, elle s'illumine automatiquement. Cependant, si tout le monde reste immobile pendant la réunion, le capteur ne détectera aucun mouvement, indiquant que personne n'est présent, et la lumière s'éteindra. Pour rallumer la lumière, quelqu'un doit bouger.
Cependant, ce problème n'est PAS sérieux et le capteur est peu coûteux. Par conséquent, il est largement utilisé pour détecter les humains dans de nombreuses applications.
ESP8266 - Capteur de mouvement HC-SR501
Connectez une broche d'entrée numérique d'un Arduino à la broche OUTPUT du capteur HC-SR501. En utilisant le code ESP8266, vérifiez la valeur de la broche OUTPUT pour détecter un mouvement.
Diagramme de câblage
This image is created using Fritzing. Click to enlarge image
Voir plus dans l'agencement des broches de l'ESP8266 et comment alimenter l'ESP8266 et d'autres composants.
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 entrée numérique sur une broche Arduino en utilisant la fonction pinMode().
- Lisez l'état de la broche de SORTIE du capteur avec la fonction digitalRead().
- Identifiez quand la broche passe de BAS à HAUT, indiquant le début du mouvement.
- Identifiez lorsque la broche passe d'un état HAUT à un état BAS, indiquant que le mouvement s'est arrêté.
Code ESP8266
Étapes rapides
Pour commencer avec l'ESP8266 sur l'Arduino IDE, suivez ces étapes :
- Consultez le tutoriel comment configurer l'environnement pour ESP8266 sur Arduino IDE si c'est la première fois que vous utilisez ESP8266.
- Connectez les composants comme indiqué sur le schéma.
- Connectez la carte ESP8266 à votre ordinateur à l'aide d'un câble USB.
- Ouvrez Arduino IDE sur votre ordinateur.
- Choisissez la carte ESP8266 correcte, telle que (par exemple NodeMCU 1.0 (Module ESP-12E)), et son port COM respectif.
- Copiez le code et ouvrez-le avec Arduino IDE.
- Cliquez sur le bouton Upload dans Arduino IDE pour envoyer le code à l'ESP8266.
- Ouvrez le moniteur série.
- Déplacez votre main devant la portée du capteur.
- Consultez la sortie sur le moniteur série.
Vidéo
Usages avancés
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 est utilisé pour modifier la portée de détection (environ 3 à 7 mètres) :
- Si vous le tournez complètement à droite, il ne peut détecter que les objets à moins de 3 mètres.
- Si vous le tournez complètement à gauche, il peut détecter des objets jusqu'à 7 mètres.
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 éclaire le concept de délai temporel en conjonction avec le déclencheur répétitif.
Sélecteur de déclenchement répétitif
Un cavalier existe qui est utilisé pour choisir les modes de déclenchement : soit un déclenchement unique, soit un déclenchement répétable.
Faisons référence au réglage du délai temporel (qui est ajusté via le Time Delay Adjuster) comme time_delay. Si vous continuez à vous déplacer dans la portée du capteur pendant une longue période (appelée motion_time) (plusieurs fois plus longue que time_delay) :
- Mode de 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 sera fixée à 3 secondes.
- Mode de déclenchement répétable : L'état de la broche OUTPUT restera ÉLEVÉ pendant la durée de (motion_time plus time_delay).
Test
- Mode de déclenchement unique :
- Placez le cavalier pour sélectionner le mode de déclenchement unique
- Déplacez votre main devant le capteur pendant environ 10 secondes
- Retirez votre main de la portée du capteur
- Attendez 3 secondes et vous observerez la sortie dans le moniteur série comme suit :
- Placez le cavalier pour sélectionner 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, vous observerez la sortie sur le moniteur série comme suit :
- Sur le capteur de mouvement : le minimum est de 3 secondes et le maximum de 5 minutes, ce qui est réglé via l'ajusteur de délai.
- Sur le code ESP8266 : n'importe quelle valeur peut être définie, ce qui se fait par programmation.
Mode de déclenchement répétable :
Nous pouvons observer qu'en mode de déclenchement unique, le capteur se déclenche deux ou trois fois. Alors qu'en mode de déclenchement répétitif, il ne se déclenche qu'une seule fois.
※ NOTE THAT:
Durant le temps BAS (3 secondes), qui est fixe et non réglable, le capteur est incapable de détecter tout mouvement. Cela ne pose pas de problème en pratique.
Il est conseillé d'utiliser le mode de déclenchement répétitif.
Dans de nombreuses applications concrètes, nous activons des machines/dispositifs lorsqu'une personne est présente, et nous ne les désactivons pas ou ne les éteignons pas immédiatement lorsque la personne n'est plus présente. Au lieu de cela, nous attendons un délai avant de les désactiver ou de les éteindre.
Comment utiliser le délai
Si aucun humain n'est détecté, le système d'automatisation attendra pendant une période de temps avant d'initier une action.
Le délai de temporisation peut être ajusté sur le capteur de mouvement et le code ESP8266 :
Si nous ne spécifions pas de délai d'expiration dans le code ESP8266, la valeur du délai d'expiration sera la même que le délai configuré dans le capteur.
Si nous spécifions un délai d'attente dans le code ESP8266, le délai total sera la combinaison du délai défini dans le capteur et du délai spécifié dans le code ESP8266.
Définir un délai d'attente dans le code ESP8266
Si le mode de déclenchement répétable est activé, le délai sera fixé à 30 secondes plus time_delay, qui peut être ajusté dans les paramètres du capteur à l'aide du réglage du délai.
Mettez-vous au défi
Utilisez le capteur de mouvement pour réaliser l'un des projets suivants :
- Activez les lumières lorsque vous entrez dans votre chambre et désactivez-les 30 secondes après votre départ. Conseil : Jetez un œil à ESP8266 - Relais.
- Déclenchez une alarme lorsque quelqu'un s'approche de vos objets de valeur. Conseil : Consultez ESP8266 - Buzzer Piézo.