Arduino Nano - Bewegingssensor
Heeft u zich ooit afgevraagd: “Hoe kan dat nou?” wanneer u automatische deuren, verlichting of roltrappen tegenkomt? Dan zal deze handleiding uw vraag niet alleen beantwoorden, maar u ook laten zien hoe u dit zelf kunt maken met een Arduino Nano en een bewegingssensor. Laten we aan de slag gaan!
Deze handleiding leert u hoe u de Arduino Nano gebruikt met een bewegingssensor. In detail behandelen we:
- Hoe de HC-SR501 bewegingssensor werkt
- Hoe u de HC-SR501 bewegingssensor aansluit op de Arduino Nano
- Hoe u de Arduino Nano programmeert om de status van de HC-SR501 te lezen
- Hoe u Arduino Nano en de HC-SR501 gebruikt om menselijke aanwezigheid te detecteren en acties te ondernemen
Hardware Benodigd
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Over HC-SR501 Bewegingssensor

De HC-SR501 PIR sensor is in staat beweging van mensen (of dieren) te detecteren. Het wordt veel gebruikt in diverse toepassingen, zoals het automatisch aan- of uitzetten van verlichting, het openen en sluiten van deuren, het activeren of deactiveren van roltrappen, en het detecteren van indringers.
De Pinout van de Bewegingssensor
De HC-SR501 bewegingssensor heeft 3 pinnen:
- GND pin: dient verbonden te worden met GND (0V)
- VCC pin: dient verbonden te worden met VCC (5V)
- OUTPUT pin: dit is een uitgangspin die LOW is wanneer er geen beweging wordt gedetecteerd en HIGH wanneer beweging wordt gedetecteerd. Deze pin moet verbonden worden met een input pin van de Arduino.
De HC-SR501 heeft een jumper en twee potentiometers die worden gebruikt om de instellingen van de sensor aan te passen.

Hoe Werkt Het
De HC-SR501 sensor detecteert beweging op basis van veranderingen in infrarode straling van een bewegend object. Om de sensor een object te laten detecteren, moeten twee voorwaarden worden voldaan:
- Het object moet in beweging zijn of trillen
- Het object moet infrarode straling uitstralen
Als gevolg daarvan:
- Als een object beweegt maar geen infraroodstraling uitzendt (bijvoorbeeld een robot of speelgoedauto), wordt het niet door de sensor gedetecteerd.
- Als een object infrarode straling uitzendt maar niet beweegt (bijvoorbeeld een stilstaande persoon), wordt het niet door de sensor gedetecteerd.
Mensen en dieren zijn bronnen van infrarode straling. Daardoor kan de sensor hun beweging detecteren.
Staat van de OUTPUT pin:
- Als er geen mens (of dier) aanwezig is binnen het detectiebereik van de sensor, is de OUTPUT pin LOW.
- Als een mens (of dier) het detectiebereik binnenloopt, verandert de OUTPUT pin van LOW naar HIGH, wat Bewegung detectie aangeeft.
- Wanneer de mens (of dier) het detectiebereik verlaat, schakelt de OUTPUT pin terug van HIGH naar LOW, wat het stoppen van beweging aangeeft.
De bovenstaande video toont de basiswerking van de bewegingssensor. In de praktijk kan de sensor anders werken afhankelijk van de configuratie (beschreven in de sectie Geavanceerde toepassingen).
Detecteer de Aanwezigheid van Mensen
De sensor zelf herkent geen mensen, hij detecteert alleen beweging. Wij gebruiken een Arduino Nano om aanwezigheid van mensen te concluderen op basis van de door de sensor gedetecteerde beweging, volgens de volgende regel:
- Als beweging wordt gedetecteerd, dan zijn er mensen aanwezig.
- Als er geen beweging wordt gedetecteerd, dan zijn er geen mensen aanwezig.
Deze regel werkt in de praktijk niet perfect: als mensen binnen het bereik van de sensor zijn maar niet bewegen, wordt er geen beweging gedetecteerd. De Arduino Nano concludeert dan onterecht dat er geen mensen aanwezig zijn.
Bijvoorbeeld, de bewegingssensor in uw vergaderruimte is zo ingesteld dat de lichten aangaan wanneer er mensen zijn. Tijdens een vergadering waarbij niemand beweegt, wordt er geen beweging gedetecteerd en wordt de aanwezigheid van mensen niet herkend, waardoor de lichten uitgaan. Om ze weer aan te krijgen, moet iemand bewegen.
Deze beperking is echter NIET ernstig en de sensor is goedkoop. Daarom wordt hij breed ingezet in veel toepassingen om mensen te detecteren.
Arduino Nano - HC-SR501 Bewegingssensor
Verbind een digitale input pin van de Arduino met de OUTPUT pin van de HC-SR501 sensor. Met de Arduino Nano code kunnen we de waarde van de OUTPUT pin controleren om beweging te detecteren.
Bedradingsschema

This image is created using Fritzing. Click to enlarge image
Initiële Instelling
| Tijdvertraging Insteller | Draai deze helemaal tegen de klok in. |
| Detectiebereik Insteller | Draai deze helemaal met de klok mee. |
| Herhaalde Trigger Selector | Plaats de jumper zoals in de afbeelding is aangegeven. |

Hoe Programmeert U Voor de Bewegingssensor
- Stel een pin van de Arduino in als digitale input met behulp van de pinMode() functie.
- Controleer de staat van de OUTPUT pin van de sensor met de digitalRead() functie.
- Herken wanneer beweging begint (de pin verandert van LOW naar HIGH).
- Herken wanneer de pin verandert van HIGH naar LOW, wat aangeeft dat beweging gestopt is.
Arduino Nano Code
Snelle Stappen
- Kopieer bovenstaande code en open deze in de Arduino IDE.
- Klik op de Upload knop in de Arduino IDE om de code te compileren en te uploaden naar de Arduino Nano.
- Open de Seriële Monitor.
- Beweeg uw hand binnen het bereik van de sensor.
- Controleer de uitvoer in de Seriële Monitor.
Video Tutorial
We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.
Geavanceerde Toepassingen
Zoals eerder vermeld, kunnen we de sensorconfiguratie aanpassen met een jumper en twee potentiometers.
Insteller voor Detectiebereik
Deze potentiometer verandert hoe ver een object gedetecteerd kan worden (ongeveer 3 tot 7 meter).
- Wanneer deze helemaal naar rechts draait, detecteert de sensor tot circa 3 meter afstand.
- Wanneer deze helemaal naar links draait, detecteert de sensor tot circa 7 meter afstand.

Met de potentiometer kunt u een bereik tussen 3m en 7m instellen.
Insteller voor Tijdvertraging
Deze potentiometer wordt gebruikt om de tijdvertraging aan te passen:
- Wanneer deze helemaal met de klok mee is gedraaid, is de tijdvertraging ongeveer 5 minuten.
- Wanneer deze helemaal tegen de klok in is gedraaid, is de tijdvertraging ongeveer 3 seconden.
De volgende sectie legt het concept van tijdvertraging in combinatie met Repeat Trigger uit.

Herhaalde Trigger Selector
Er is een jumper die wordt gebruikt om trigger-modi te kiezen: enkelvoudige trigger of herhaalbare trigger.

Laten we de tijdvertraging ingesteld via de Tijdvertraging Insteller time_delay noemen. Als u langere tijd binnen het bereik van de sensor beweegt (de zogenaamde motion_time), die meerdere keren langer is dan time_delay:
- In Enkelvoudige Trigger Modus: de OUTPUT pin wisselt meerdere keren tussen LOW en HIGH. De HIGH duur is gelijk aan time_delay, terwijl de LOW duur vaststaat op 3 seconden.

- In Herhaalbare Trigger Modus: de OUTPUT pin blijft HIGH gedurende (motion_time + time_delay).

Testen
- Enkelvoudige trigger modus:
- Plaats de jumper in de positie voor enkelvoudige trigger modus
- Wrijf ongeveer 10 seconden met uw hand voor de sensor
- Verplaats uw hand uit het gebied van de sensor
- Wacht 3 seconden, u zult de volgende uitvoer zien in de seriële monitor:
- Herhaalbare trigger modus:
- Plaats de jumper in de positie voor herhaalbare trigger modus
- Wrijf ongeveer 10 seconden met uw hand voor de sensor
- Verplaats uw hand uit het bereik van de sensor
- Wacht 3 seconden, de output in de seriële monitor zal als volgt zijn:
- Schakelen of activeren we devices/machines zodra een mens aanwezig is
- Schakelen of deactiveren we devices/machines NIET meteen na afwezigheid van een mens, maar pas na enige tijd
We zien dat in enkelvoudige trigger modus de sensor twee of drie keer activeert, terwijl in herhaalbare trigger modus de sensor slechts één keer activeert.
※ Notiz:
Tijdens de LOW tijd (3 seconden, een vaste en niet aanpasbare waarde) kan de sensor geen beweging detecteren. Dit veroorzaakt in de praktijk geen problemen.
Het is aan te raden om de herhaalbare trigger modus te gebruiken.
In veel praktische situaties:
Hoe Gebruik Je Tijdvertraging
Als er geen mens wordt gedetecteerd, wacht het automatiseringssysteem een bepaalde tijd voordat een actie volgt.
De bewegingssensor heeft een Tijdvertraging Insteller waarmee u de tijdvertraging kunt instellen van minimaal 3 seconden tot maximaal 5 minuten. Daarnaast kan ook in de Arduino Nano code elke gewenste tijdvertraging worden ingesteld.
Als in de Arduino Nano code geen timeout gespecificeerd wordt, is de timeout gelijk aan de tijdvertraging van de sensorinstelling.
Als er wel een timeout in de Arduino Nano code is ingesteld, is dit de som van de tijdvertraging in de sensorconfiguratie en de tijdvertraging in de Arduino Nano code.
Tijdvertraging Instellen in de Arduino Nano Code
Indien herhaalbare trigger modus is ingeschakeld, is de vertraging in de code 30 seconden plus time_delay, ingesteld via de Tijdvertraging Insteller aan de sensorzijde.
Daag Uzelf Uit
Gebruik de bewegingssensor voor een van deze projecten:
- Zet de verlichting aan als u een kamer binnenkomt en zet deze uit na 30 seconden nadat u bent vertrokken. Tip: Bekijk Arduino Nano - Relay.
- Activeer een alarm wanneer iemand uw kostbare spullen nadert. Tip: Bekijk Arduino Nano - Piezo Buzzer.