
In deze tutorial gebruiken we een PIR-bewegingssensor om aanwezigheid te detecteren. Met een Python-script controleren we of er beweging gedetecteerd wordt. Wanneer je deze tutorial hebt voltooid, kan je de HC-SR501-sensor via de GPIO-pinnen op je Pi aansluiten. Je hebt ook de basiscode om het outputsignaal van de sensor om te zetten naar bruikbare informatie.
Je Raspberry Pi voorbereiden
Allereerst dien je een Raspberry Pi te hebben die op de nieuwste versie van Raspberry Pi OS draait. Deze versie bevat “Thonny”. We zullen deze gebruiksvriendelijke IDE gebruiken om onze Python-code te schrijven. Als je niet bekend bent met Python of met Thonny en de GPIO-pinnen, raad ik je aan onze volgende tutorials te bekijken “Hoe je eerste Python programma op de Raspberry Pi schrijven” en “Hoe de GPIO pinnen van de Raspberry Pi gebruiken” voor een snelle introductie.
De extra hardware voorbereiden
Vervolgens heb je wat extra hardware nodig:
- een breadboard (we gebruiken een breadboard van 400 punten)
- een HC-SR501 PIR bewegingssensor
- Dupont jumper kabels
- een T-cobbler (optioneel)
- een 40 pins GPIO-kabel (optioneel)
Indien je dingen zou missen, aarzel dan niet om onze shop te bezoeken. We hebben een goed bedachte kit die alle nodige componenten bevat .
Maak kennis met de HC-SR501 PIR bewegingssensorsensor
PIR staat voor passieve infrarooddetectie. De sensor meet variaties van infraroodlicht. Omdat we allen infrarood licht afgeven, zal de sensor infraroodvariaties detecteren wanneer we voor de sensor bewegen. Wanneer dit gebeurt, zal de sensor de output HOOG zetten. Aangezien het hoge outputsignaal 3,3 V is, kan het outputsignaal rechtstreeks worden aangesloten op een GPIO-invoerpin van de Raspberry Pi.
De module kan als volgt worden geconfigureerd:

- Time Delay Adjust : Als er beweging wordt gedetecteerd, schakelt het uitgangssignaal van LAAG naar HOOG. Deze HOGE positie blijft nog enige tijd staan. Hier kan je deze tijd aanpassen. Draai de potentiometer tegen de klok in om de tijd te verkorten. Voor ons eenvoudig Python-script (zie hieronder), beperken we best de vertragingstijd tot een minimum.
- Jumper set : de jumper wordt gebruikt om de triggermodus te regelen. Wanneer de jumperkap in de “L” -positie staat, wordt de modus ingesteld als “niet-herhaalde trigger-modus”, wat betekent dat wanneer de module een HOOG geeft vanwege beweging, deze niet opnieuw zal worden geactiveerd, zelfs als een andere beweging wordt uitgevoerd en gedetecteerd. Wanneer de jumperkap zich in de “H” -positie bevindt, wordt de module ingesteld als “herhaalde trigger-modus”, wat betekent dat de vertragingstijd opnieuw wordt berekend wanneer een tweede beweging wordt gedetecteerd tijdens de vertragingstijd. Voor elke nieuwe beweging tijdens de vertragingstijd begint dus de vertragingsteller weer vanaf nul te tellen. Als de tijdvertraging op het minimum is ingesteld, maakt de positie van de jumper eigenlijk geen verschil.
- Sensitivity adjust: om het bereik aan te passen
Stel de hardware op
Let op! Voordat je begint met het aansluiten van draden op de GPIO-pinnen van je Raspberry Pi, dien je ervoor te zorgen dat je de Pi goed afsluit en de voedingskabel van het bordje hebt verwijderd!

- sluit de 40-pins kabel op de GPIO-pinnen van je Pi aan (verwijder indien nodig eerst het deksel van je Pi)
- sluit de T-cobbler op het breadboard aan zoals wordt weergegeven in de afbeelding hierboven of hieronder
- sluit het andere uiteinde van de 40-pins kabel aan op de T-cobbler
- verbind de VCC pin van de sensor met de 5V pin (rode kabel)
- verbind de OUTPUT pin van de sensor met pin 23 (gele kabel)
- verbind de GND van de sensor met een GPIO GND pin (zwarte kabel)

Schrijf de code
Het doel is om hier een heel eenvoudig Python-programma te schrijven dat ons in staat stelt om bewegingen te detecteren en deze info op het scherm weer te geven. Om de code te schrijven, gebruiken we de Thonny IDE. Je kan Thonny vinden in het applicatiemenu van je Raspberry Pi.
Schrijf of plak de volgende code in de IDE:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
PIR_PIN = 23
GPIO.setup(PIR_PIN, GPIO.IN)
print('Starting up the PIR Module (click on STOP to exit)')
time.sleep(1)
print ('Ready')
while True:
if GPIO.input(PIR_PIN):
print('Motion Detected')
time.sleep(1)
Wat verklaringen over de code:
GPIO.setmode (GPIO.BCM)
: De GPIO.BCM-optie betekent dat we naar de pinnen verwijzen via het “Broadcom SOC-kanaal” -nummer, dit zijn de cijfers na “GPIO”GPIO.setwarnings (False)
: we gebruiken deze coderegel om waarschuwingsberichten te vermijden.GPIO.setup(PIR_PIN,GPIO.IN)
: We definiëren de PR-pin (= 23) als een invoerpintime.sleep(1)
We wachten 1 seconde zodat de sensor tot rust kan komenwhile True:
is een oneindige loop (tot het programma gestopt wordt)- Wees voorzichtig, Python is witruimte gevoelig. Verwijder de “tab” niet voor de regel die na de “while” opdracht volgt
if GPIO.input(PIR_PIN):
als de PIR-pin hoog staat (= sensor heeft beweging gedetecteerd)time.sleep(1)
We wachten 1 seconde vooraleer we verder gaan met de loop
Voer het script uit
Vooraleer je het programma laat uitvoeren, dien je het een naam te geven en op te slaan.

Eens opgeslagen, klik je op de Start knop. Je ziet op het scherm een boodschap verschijnen wanneer de sensor beweging detecteert.
Om het programma te stoppen, klik je gewoon op de STOP knop.
Gefeliciteerd! Met deze opstelling kan je nu bewegingsdetectie in je projecten integreren. Je kan het script verder gebruiken om het resultaat te verwerken in een toepassing waarin je menselijke aanwezigheid wil controleren. Veel plezier ermee!
Troubleshooting
Als het bericht “Motion Detected” zich continu herhaalt, zelfs als er geen beweging te detecteren valt:
- Controleer je bedrading.
- Controleer of je de “Time Delay” potentiometer op een minimale tijd hebt ingesteld (tegen de klok in draaien tot aan de aanslag). Als dit niet het geval is, zal de sensor een hele tijd HOOG blijven. En gedurende al die tijd, zal het script elke seconde “Beweging gedetecteerd” melden. Meer informatie: zie stap “Maak kennis met de HC-SR501 PIR-bewegingssensor” hierboven.