Étape 3: Capteur à ultrasons - détection de mouvement
Intro aux capteurs de Distance à ultrasons
Le capteur à ultrasons HC-SR04 et autres comme lui, simplement envoient un 'ping' (à une fréquence supérieure à l’oreille humaine) lorsque déclenchée et stocker le temps qu’il faut pour recevoir l’écho.
Le temps qu’il faut pour recevoir le signal réfléchi est représenté comme une impulsion sur la broche « ECHO ».
L’utilisation habituelle de cas pour l’un de ces capteurs pour mesurer la distance, mais, en comparant des lectures multiples, nous pouvons faire un détecteur de mouvement utilisable.
Enjeux et limites
- Le capteur a une portée maximale (environ 3M prétendument)
- Il y a une limite à combien de fois nous pouvons goûter (nous ne pouvons pas l’échantillon jusqu'à ce que le pouls est de retour à tout le moins).
- Le capteur va afficher étranges lectures chaque maintenant et puis, il faut gérer ces correctement.
Détection de mouvement
J’ai décidé que la meilleure façon de détecter les mouvements serait de simplement prendre une distance de lecture et de le comparer avec la précédente, si elle avait changé de plus de 30 %, alors je voudrais savoir il y a eu mouvement. Avec un capteur parfait dans un environnement idéal, ce serait workfine, mais en réalité, il y a des impairs lectures chaque maintenant et puis qui provoquent des déclencheurs fausses.
Le moyen de contourner cela comportait deux volets :
- Pour les mesures « précédents » J’ai gardé un enroulement moyenne des dix dernières valeurs.
- Pour la comparaison j’ai fait en sorte que tant des deux dernières lectures où plus de 30 % différent de la moyenne. De cette façon, si une seule lecture n’était pas valide, l’autre serait encore moins 30 % de la moyenne et il y aurait n’être aucun déclencheur faux.
Mise en œuvre en moyenne/lissage
Cet article est un bel exemple élégant et compréhensible sur la mise en œuvre en moyenne un Arduino, je me suis adapté leur code.
Éviter de répéter les déclencheurs
Nous ne voulons pas l’alarme pour envoyer des SMS multiples alors que quelque chose bouge autour devant le capteur, ou alors que la moyenne s’installe après une perturbation, alors j’ai utilisé "clignotement compteur" de la LED rouge (lire la section LED) afin de déterminer si suffisamment de temps a passé pour le déclencheur suivant. J’ai fait en sorte que le nombre de clignotements multiplié par l’on + off temps du rouge que LED était plus grande que le temps que nécessaire pour obtenir une nouvelle lecture moyenne stable.