Stap 3: Ultrasone sensor - beweging detecteren
Inleiding tot de afstand van de ultrasone sensoren
De HC-SR04 ultrasone sensor, en anderen als het, stuur gewoon uit een 'ping' (met een frequentie boven het menselijk gehoor) wanneer geactiveerd en opslaan van de tijd die het duurt om te ontvangen van de echo.
De tijd die nodig is om het gereflecteerd signaal wordt weergegeven als een puls aan de "ECHO" pin.
De gebruikelijke gebruik geval voor één van deze sensoren om afstand te meten, maar door het vergelijken van meerdere lezingen, kunnen we een bruikbare bewegingsmelder.
Uitdagingen en beperkingen
- De sensor heeft een maximaal bereik (ongeveer 3m naar verluidt)
- Er is een limiet aan hoe vaak we kunt proeven (we kunnen proeven totdat de pols is teruggekeerd op zijn minst).
- De sensor zal zo nu en dan vreemde lezingen output, moeten we deze correct verwerkt.
Detecteren van beweging
Heb ik besloten dat de eenvoudigste manier om te detecteren verkeer zou gewoon nemen een afstand lezen en vergelijken met de vorige taak, als deze had gewijzigd door meer dan 30%, dan zou ik weten was er beweging. Met een perfecte sensor in een perfecte omgeving zou dit workfine, maar in werkelijkheid zijn er vreemd lezingen zo nu en dan wat leiden valse triggers tot zou.
De zin hieromheen was tweeledig:
- Voor de "vorige" metingen hield ik rolling gemiddelde van de laatste tien waarden.
- Voor de vergelijking ik zorgde ervoor dat zowel van de laatste twee lezingen waar meer dan 30% afwijken van het gemiddelde. Op deze manier, als één lezing ongeldig was, anderzijds zou nog binnen 30% van het gemiddelde en er zou geen valse trigger worden.
Uitvoering van gemiddeld/vloeiend maken
Dit artikel heeft een mooi voorbeeld van de elegante en begrijpelijk voor de uitvoering van gemiddeld op een Arduino, ik aangepast hun code.
Voorkomen van terugkerende Triggers
We willen niet dat het alarm voor het verzenden van meerdere SMS wanneer iets bewegen voor de sensor, of terwijl de gemiddeld is afwikkeling na een storing, zodoende mij tweedehands naar de rode LED's "blink counter" (Lees de LED-sectie) om te bepalen of er genoeg tijd is verstreken voor de volgende trigger. Ik zorgde ervoor dat het aantal knippert vermenigvuldigd met de op +-tijd van de rode die LED groter dan de tijd die het duurt was om een nieuwe stabiele gemiddelde lezing uitschakelen.