Raspberry Pi - Bewegingssensor
Heeft u zich ooit afgevraagd, “Hoe kan dat?” wanneer u automatische deuren, lampen of roltrappen tegenkomt? Zo ja, dan zal deze handleiding niet alleen uw vraag beantwoorden, maar u ook laten zien hoe u dit kunt realiseren met behulp van de Raspberry Pi en een bewegingssensor. Laten we beginnen!
Deze tutorial leert u hoe u een Raspberry Pi gebruikt met een bewegingssensor. In detail behandelen we:
- Hoe de HC-SR501 bewegingssensor werkt
- Hoe u de HC-SR501 bewegingssensor aansluit op de Raspberry Pi
- Hoe u de Raspberry Pi programmeert om de status van de HC-SR501 bewegingssensor te lezen
- Hoe u Raspberry Pi en HC-SR501 gebruikt om veranderingen in bewegingsstatus te detecteren
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 kan beweging detecteren van mensen (of dieren). Hij wordt veel gebruikt in diverse toepassingen, zoals het automatisch aan- en uitzetten van lampen, openen en sluiten van deuren, activeren en deactiveren van roltrappen en het detecteren van inbrekers.
Pinout van de Bewegingssensor
De HC-SR501 bewegingssensor heeft 3 pinnen:
- GND pin: moet verbonden worden met GND (0V)
- VCC pin: moet verbonden worden met VCC (5V)
- OUTPUT pin: is een uitgangspin die LOW is wanneer geen beweging wordt gedetecteerd en HIGH wanneer er beweging wordt gesignaleerd. Deze pin dient aangesloten te worden op een input pin van de Raspberry Pi.
De HC-SR501 heeft één jumper en twee potentiometers. Deze worden gebruikt om de instellingen van de sensor aan te passen.

Hoe Het Werkt
De HC-SR501 sensor herkent beweging op basis van veranderingen in infrarode straling die door een bewegend object wordt uitgezonden. Om door de HC-SR501 sensor te worden gedetecteerd, moet het object aan twee criteria voldoen:
- Het moet bewegen of trillen.
- Het moet infraroodlicht uitstralen.
Daarom:
- Als een object beweegt maar geen infraroodstralen uitzendt (bijvoorbeeld een robot of speelgoedauto), wordt het niet door de sensor gedetecteerd.
- Als een object infraroodstraling uitzendt maar niet beweegt (bijvoorbeeld een stilstaande persoon), wordt het ook niet gedetecteerd.
Mensen en dieren zijn bronnen van infraroodstraling. Daardoor kan de sensor hun bewegingen detecteren.
Status van de OUTPUT-pin:
- Wanneer zich geen mens (of dier) binnen het door de sensor gedetecteerde bereik bevindt, is de OUTPUT pin LOW.
- Wanneer een mens (of dier) het bereik van de sensor betreedt, verandert de OUTPUT pin van LOW naar HIGH, wat aangeeft dat beweging is gedetecteerd.
- Wanneer de mens (of het dier) het sensorbereik verlaat, verandert de OUTPUT pin van HIGH naar LOW, wat aangeeft dat de beweging is gestopt.
De bovenstaande video toont hoe de bewegingssensor in theorie werkt. In de praktijk werkt de sensor iets anders, afhankelijk van de sensorinstellingen (die worden besproken in de sectie Geavanceerd Gebruik).
Detectie van Aanwezigheid van Mensen
De sensor herkent niet direct de aanwezigheid van mensen, maar detecteert alleen beweging. We gebruiken de Raspberry Pi om de aanwezigheid van mensen af te leiden op basis van de door de sensor gedetecteerde beweging, volgens het principe:
- Als er beweging wordt waargenomen, dan zijn er mensen aanwezig.
- Als er geen beweging wordt gedetecteerd, dan zijn er geen mensen aanwezig.
Deze regel is onvolmaakt in de praktijk: wanneer mensen binnen het bereik van de sensor zijn maar niet bewegen, wordt er geen beweging gedetecteerd. De Raspberry Pi concludeert dan dat er niemand aanwezig is.
Bijvoorbeeld: in uw vergaderruimte wordt de bewegingssensor gebruikt om het licht aan en uit te schakelen. Wanneer mensen de ruimte betreden, wordt het licht automatisch ingeschakeld. Als iedereen tijdens de vergadering stil blijft zitten, registreert de sensor geen beweging en wordt verondersteld dat er niemand aanwezig is, waardoor het licht wordt uitgezet. Om het licht weer aan te doen, moet iemand bewegen.
Deze beperking is echter NIET ernstig en aangezien de sensor goedkoop is, wordt hij veel gebruikt om mensen te detecteren in vele toepassingen.
Raspberry Pi - HC-SR501 Bewegingssensor
Verbind een digitale inputpin van de Raspberry Pi met de OUTPUT pin van de HC-SR501 sensor. Met behulp van code op de Raspberry Pi kunnen we de waarde van de OUTPUT pin controleren om beweging te detecteren.
Aansluitschema

This image is created using Fritzing. Click to enlarge image
Begininstellingen
| Tijdvertraging Insteller | Draai deze volledig tegen de klok in. |
| Detectiebereik Insteller | Draai deze volledig met de klok mee. |
| Herhaalde Trigger Selector | Plaats de jumper zoals op de afbeelding. |

Hoe Programma Schrijven Voor Bewegingssensor
- Stel een digitale ingang op een pin van Raspberry Pi in met behulp van de GPIO.setup() functie.
- Lees de OUTPUT pin van de sensor met de GPIO.input() functie.
Raspberry Pi Code - Print de Bewegingsstatus
Snelle Stappen
- Zorg dat u Raspbian of een ander Raspberry Pi-compatibel besturingssysteem hebt geïnstalleerd op uw Pi.
- Zorg dat uw Raspberry Pi verbonden is met hetzelfde lokale netwerk als uw PC.
- Zorg dat uw Raspberry Pi internettoegang heeft indien u bibliotheken moet installeren.
- Als dit uw eerste keer is met Raspberry Pi, zie dan hoe u de Raspberry Pi instelt
- Verbind uw PC met de Raspberry Pi via SSH met de ingebouwde SSH-client van Linux en macOS of PuTTY op Windows. Zie hoe u uw PC verbindt met Raspberry Pi via SSH.
- Controleer of de RPi.GPIO bibliotheek is geïnstalleerd. Zo niet, installeer deze dan met het volgende commando:
- Maak een Python-scriptbestand aan met de naam motion_sensor.py en voeg de volgende code toe:
- Sla het bestand op en voer het Python-script uit met het volgende commando in de terminal:
- Beweeg uw hand voor de sensor binnen het detectiebereik.
- Controleer de uitvoer in de Terminal.
Het script draait in een oneindige lus totdat u Ctrl + C in de terminal indrukt.
De bovenstaande code controleert continu de bewegingsstatus en print deze. Soms wilt u misschien alleen reageren op veranderingen in de bewegingsstatus. In dat geval kunt u de volgende sectie bekijken.
Raspberry Pi Code - Detecteert Veranderingen in Bewegingsstatus
- Maak een Python-scriptbestand aan met de naam motion_sensor_events.py en voeg de volgende code toe:
- Sla het bestand op en voer het Python-script uit met het volgende commando in de terminal:
- Beweeg uw hand voor de sensor binnen het detectiebereik.
- Controleer de uitvoer in de Terminal.
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.
Geavanceerd Gebruik
Zoals eerder vermeld kunnen één jumper en twee potentiometers worden gebruikt om de configuratie van de sensor aan te passen.
Detectiebereik Insteller
Deze potentiometer wordt gebruikt om het detectiebereik aan te passen (tussen ongeveer 3 en 7 meter).
- Volledig rechts draaien: detecteert tot ongeveer 3 meter afstand.
- Volledig links draaien: detecteert tot ongeveer 7 meter afstand.

Tijdvertraging Insteller
Deze potentiometer regelt de tijdvertraging:
- Volledig met de klok mee gedraaid: tijdvertraging ongeveer 5 minuten.
- Volledig tegen de klok in gedraaid: tijdvertraging ongeveer 3 seconden.
Het volgende deel legt het concept tijdvertraging uit in relatie tot de optie Herhaalde Trigger.

Herhaalde Trigger Selector
Er is een jumper die wordt gebruikt om de triggermodus te kiezen: enkele trigger of herhaalbare trigger.

We noemen de tijdvertraging zoals ingesteld via de Tijdvertraging Insteller time_delay. Als u gedurende lange tijd (aangeduid als motion_time, wat meerdere keren langer is dan time_delay) continu in het bereik van de sensor beweegt, dan zal in de Enkele Trigger modus de status van de OUTPUT pin meerdere keren wisselen tussen LOW en HIGH. De HIGH duurtijd is gelijk aan time_delay, terwijl de LOW duurtijd vast staat op 3 seconden.

- Herhaalbare trigger modus: De OUTPUT pin blijft HIGH gedurende (motion_time + time_delay).

Testen
- Enkele trigger modus:
- Plaats de jumper om de enkele trigger modus te selecteren.
- Beweeg uw hand ongeveer 10 seconden voor de sensor.
- Beweeg uw hand weg van de sensor.
- Wacht 3 seconden en u ziet de volgende output in het serial monitor scherm:
- Herhaalbare trigger modus:
- Plaats de jumper om de herhaalbare trigger modus te selecteren.
- Beweeg uw hand ongeveer 10 seconden voor de sensor.
- Verwijder uw hand uit het detectiebereik.
- Wacht 3 seconden en de output in het serial monitor scherm is als volgt:
- Schakelen we machines of apparaten aan wanneer een persoon aanwezig is.
- Schakelen we machines of apparaten niet direct uit als een persoon niet meer aanwezig is, maar na een time-out.
We zien dat in de enkele trigger modus de sensor twee of drie keer activeert, terwijl hij in de herhaalbare trigger modus slechts één keer activeert.
※ Notiz:
Tijdens de LOW periode van 3 seconden, die een vaste en niet-aanpasbare waarde is, kan de sensor geen beweging detecteren. Dit betekent dat hij in deze tijd geblokkeerd is, maar dit veroorzaakt geen problemen.
Het wordt aanbevolen om de herhaalbare trigger modus te gebruiken.
In veel praktische toepassingen:
Hoe Tijdvertraging te Gebruiken
Als er geen mens wordt gedetecteerd, wacht het automatiseringssysteem een bepaalde tijd voordat het actie onderneemt.
De bewegingssensor heeft een Tijdvertraging Insteller die op minimaal 3 seconden en maximaal 5 minuten kan worden gezet. Daarnaast kan ook elke gewenste waarde in de Raspberry Pi code worden ingesteld door middel van programmeren.
Als er geen time-out wordt gespecificeerd in de Raspberry Pi code, is de time-out gelijk aan de ingestelde tijdvertraging van de sensor.