Comment programmer un capteur de mouvement Arduino?

Comment programmer un capteur de mouvement Arduino?

Capteur Pir tinkercad

Lorsque vous vous approchez de certains endroits où les portes s’ouvrent/se ferment automatiquement, où les ampoules s’allument/se ferment automatiquement ou où l’escalator s’active automatiquement, vous êtes-vous déjà posé la question suivante : “Comment ça peut faire ça ?” ? Si oui, ce tutoriel répond non seulement à cette question, mais vous explique également comment le faire. C’est parti !

Le capteur IRP HC-SR501 est un capteur qui peut détecter le mouvement des humains (ou des animaux). Il est largement utilisé pour détecter la présence humaine dans de nombreuses applications (allumer/éteindre automatiquement une ampoule, ouvrir/fermer une porte, activer/désactiver un escalator, détecter un intrus…).

La vidéo ci-dessus illustre le fonctionnement de principe du capteur de mouvement. En pratique, le capteur de mouvement fonctionne un peu différemment, en fonction du réglage du capteur (décrit dans la section Utilisations avancées)

Le capteur lui-même ne détecte PAS la présence d’humains, le capteur détecte simplement le mouvement. Nous utilisons Arduino (ou MCU) pour déduire la présence d’humains en se basant sur la détection de mouvement du capteur, selon la règle suivante :

Capteur Pir toujours élevé

Les capteurs PIR permettent de détecter les mouvements. Ils sont utilisés pour détecter si une personne s’est déplacée à l’intérieur ou à l’extérieur de la portée du capteur. On les trouve couramment dans les appareils et gadgets utilisés à la maison ou dans les entreprises. Ils sont souvent appelés capteurs PIR, “infrarouge passif”, “pyroélectriques” ou “IR motion”.

Les IRP sont constitués de capteurs pyroélectriques, une boîte métallique ronde avec un cristal rectangulaire au centre, qui peut détecter les niveaux de rayonnement infrarouge. Tout émet un rayonnement de faible intensité, et plus un objet est chaud, plus il émet de rayonnement. Le capteur d’un détecteur de mouvement est divisé en deux moitiés. Cela permet de détecter le mouvement (changement) et non les niveaux moyens d’IR. Les deux moitiés sont connectées de manière à s’annuler mutuellement. Si une moitié voit plus ou moins de rayonnement infrarouge que l’autre, la sortie bascule vers le haut ou vers le bas.

  Robot detecteur d obstacle arduino

Les capteurs IRP sont parfaits pour de nombreux projets ou produits de base qui doivent détecter si une personne est entrée ou sortie de la zone. Notez que les IRP ne vous indiquent pas le nombre de personnes présentes ni leur proximité avec le capteur. L’objectif est souvent fixé sur un certain balayage à distance et ils sont parfois déclenchés par les animaux domestiques de la maison.

Détecteur de mouvement Pir

J’ai un Arduino configuré avec de multiples capteurs imprimant sur le port série. Initialement, j’avais implémenté le capteur PIR avec plusieurs retards intégrés afin qu’il ne spamme pas le message de détection de mouvement. Cependant, la fonction delay(), bien sûr, met en pause tout le code et interfère avec les autres capteurs.

L’idée générale étant d’utiliser le logiciel pour minimiser également les faux positifs. J’ai essayé d’utiliser la fonction millis() pour le contrôler, mais je n’ai pas eu beaucoup de succès. Il existe probablement une solution très simple, mais je ne la vois pas.

Je sais que c’est tout à fait faux, car je pense que de la façon dont il est configuré maintenant, la boucle ne sera jamais entrée. J’ai essayé plusieurs autres structures, mais je ne vois pas ce que je dois faire. S’agit-il d’une situation où je dois construire une machine d’état essentiellement ? Toute aide pour y réfléchir serait appréciée !

Vous y êtes presque. Vous avez juste besoin de définir previousMillis quelque part. Quel est le point de départ de votre timing ? C’est quand le capteur PIR détecte le mouvement. C’est ça ? Ou autrement dit, vous voulez chronométrer à partir du dernier moment où il n’a pas détecté de mouvement. Il suffit donc d’ajouter une ligne pour que si le PIR ne détecte aucun mouvement, il fixe previousMillis à millis(). De cette façon, lorsqu’il détecte un mouvement, previousMillis correspondra au dernier moment où il ne l’a pas détecté.

  Comment fonctionne un détecteur de mouvement?

Capteur ultrasonique Arduino

Avant le setup(), nous créons une variable pour stocker l’état actuel du capteur. On l’appelle int parce que c’est un entier, ou n’importe quel nombre entier (bien que nous n’utiliserons que les valeurs 0 et 1, LOW et HIGH).void setup()

Dans le setup, les broches sont configurées à l’aide de la fonction pinMode(). La broche 2 est configurée comme une entrée, afin que nous puissions “écouter” l’état électrique du capteur. La broche 13 est configurée comme une sortie pour contrôler la LED. Pour pouvoir envoyer des messages, l’Arduino ouvre un nouveau canal de communication série avec Serial.begin(), qui prend un argument de vitesse de transmission (quelle vitesse pour communiquer), dans ce cas 9600 bits par seconde.void loop()

Tout ce qui suit un ensemble de barres obliques // est un commentaire, juste pour que nous puissions le lire, et n’est pas inclus dans le programme lorsque l’Arduino l’exécute. Dans la boucle principale, une fonction appelée digitalRead() ; vérifie l’état de la broche 2 (qui sera soit 5V aka HIGH soit la masse aka LOW), et stocke cet état dans la variable sensorState que nous avons créée au début. // vérifier si la broche du capteur est HIGH. Si c’est le cas, définir la variable