Arduino-code en video voor een HC-SR505 bewegingssensormodule met relais
In deze tutorial bouwen we een bewegingsdetectiesysteem met behulp van de HC-SR505 bewegingssensor en een relaismodule. Deze opstelling stelt je in staat om apparaten zoals lampen of zoemers in te schakelen wanneer beweging wordt gedetecteerd. Het relais fungeert als een schakelaar om hoogspanningsapparaten veilig te bedienen. Aan het einde van deze handleiding heb je een functionele bewegingssensoropstelling die verschillende apparaten kan activeren op basis van bewegingsdetectie. Voor een duidelijker begrip, zorg ervoor dat je de bijbehorende video bekijkt (in video op 0:00).

Hardware Uitgelegd
De belangrijkste componenten van dit project zijn de HC-SR505 bewegingssensor, een relaismodule en een Arduino-bord. De HC-SR505 is een passieve infrarood (PIR) sensor die beweging detecteert door veranderingen in infraroodstraling te meten. Het werkt door de warmte te meten die wordt uitgezonden door objecten in zijn gezichtsveld. Wanneer een bewegend object wordt gedetecteerd, stuurt de sensor een signaal naar de Arduino.
De relaismodule wordt gebruikt om een hoogspanningsapparaat, zoals een gloeilamp, te bedienen. Het fungeert als een elektrisch bediende schakelaar, waardoor de Arduino het apparaat veilig aan of uit kan zetten. Het relais heeft twee hoofdconfiguraties: normaal open (NO) en normaal gesloten (NC), die de standaardstatus bepalen wanneer het relais niet is geactiveerd.
Datasheet Details
| Fabrikant | HC-SR505 |
|---|---|
| Onderdeelnummer | HC-SR505 |
| Logica/IO-spanning | 3.3V - 20V |
| Voedingsspanning | 5V |
| Uitgangsstroom (per kanaal) | 20 mA |
| Piekstroom (per kanaal) | 100 mA |
| PWM-frequentierichtlijn | N/A |
| Ingangslogische drempels | 0.3V (laag) / 2.5V (hoog) |
| Spanningsval / RDS(on) / verzadiging | 0.2V |
| Thermische limieten | +70 °C |
| Behuizing | Module |
| Opmerkingen / varianten | Kleine vormfactor; laag stroomverbruik |
- Zorg voor goede warmteafvoer bij hoogstroombelastingen.
- Gebruik ontkoppelcondensatoren voor een stabiele voedingsspanning.
- Wees voorzichtig met hoogspanningsaansluitingen; zorg voor veiligheid.
- Test de sensor met eenvoudige uitgangen voordat je deze op relais aansluit.
- Controleer de oriëntatie van de PIR-sensor voor optimale detectie.
Bedradingsinstructies

Om de HC-SR505 bewegingssensor te bedraden, sluit je eerst de voedingspin (gemarkeerd met +) aan op de 5V-uitgang van je Arduino. Sluit vervolgens de aardingspin (gemarkeerd met -) aan op een van de aardingspinnen van de Arduino. De signaalpin (middelste pin) moet worden aangesloten op digitale pin 2 van de Arduino.
Voor de relaismodule sluit je de VCC-pin aan op de 5V-uitgang van de Arduino en de aardingspin op de aarde van de Arduino. De ingangspin van het relais moet worden aangesloten op digitale pin 9 van de Arduino. Sluit ten slotte de positieve terminal van de zoemer aan op digitale pin 8 en de negatieve terminal op aarde. Zorg ervoor dat je de gemeenschappelijke en normaal open pinnen van het relais correct aansluit om je apparaat te bedienen.
Codevoorbeelden & Uitleg
De code voor dit project initialiseert de pinnen voor de sensor, zoemer en relais. Het gebruikt de digitalRead()-functie om te controleren op beweging en reageert dienovereenkomstig. Hieronder staat een fragment uit de setup-functie:
void setup() {
Serial.begin(9600); // setup Serial Monitor
pinMode(PIR, INPUT_PULLUP); // definieer pin als invoer voor sensor
pinMode(BUZZER, OUTPUT); // definieer pin als UITVOER voor zoemer
pinMode(RELAY, OUTPUT); // definieer pin als UITVOER voor relais
}
In dit fragment worden de pinnen ingesteld op invoer- of uitvoermodus. De Serial.begin(9600) initialiseert de seriële communicatie voor debugging.
De hoofdloop controleert op beweging en activeert de zoemer en het relais wanneer beweging wordt gedetecteerd. Hier is een gericht fragment uit de loop-functie:

void loop() {
int motion = digitalRead(PIR); // lees de sensor
if(motion) {
Serial.println("Beweging gedetecteerd");
digitalWrite(BUZZER, HIGH); // zet de zoemer AAN
digitalWrite(RELAY, LOW); // zet het relais AAN
} else {
Serial.println("===niets beweegt");
digitalWrite(BUZZER, LOW); // houd de zoemer UIT
digitalWrite(RELAY, HIGH); // zet het relais UIT
}
delay(500);
}
Dit fragment leest de status van de PIR-sensor en activeert of deactiveert de zoemer en het relais op basis van de gedetecteerde beweging. De vertraging van 500 milliseconden zorgt ervoor dat de loop de sensor met een redelijk interval controleert.
Demonstratie / Wat te Verwachten
Wanneer beweging wordt gedetecteerd, gaat het licht dat op het relais is aangesloten aan en klinkt de zoemer. Als er geen beweging wordt gedetecteerd, schakelt het relais het licht uit en blijft de zoemer stil. Houd er rekening mee dat de HC-SR505 een ingebouwde vertraging heeft die de uitgang gedurende een korte tijd actief houdt nadat beweging is gedetecteerd (tot 8 seconden), die niet kan worden aangepast (in video op 5:30).
Videotijdstempels
- 00:00 – Introductie van het project
- 01:30 – Uitleg van componenten
- 03:15 – Bedradingsinstructies
- 05:30 – Code-uitleg
- 07:00 – Demonstratie van de opstelling
/*
* This is the Arduino code for HC-SR501 Motion Sensor
* to detect motion of human or objects using Arduino for robotic car and other applications
* Watch HC-SR505 video https://youtu.be/qhThpxiXubI
*
// Written by Ahmad S. for Robojax.com on
// February 10, 2018 at 11:41 in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
*
*/
#define PIR 2 // define pin 2 for sensor
#define BUZZER 8 // define pin 8 as for buzzer
#define RELAY 9 // define pin 9 as for relay
void setup() {
// HC-SR505 Motion Sensor Code by Robojax.com 20180210
Serial.begin(9600);// setup Serial Monitor to display information
pinMode(PIR, INPUT_PULLUP);// define pin as Input sensor
pinMode(BUZZER, OUTPUT);// define pin as OUTPUT for buzzer or LED
pinMode(RELAY, OUTPUT);// define pin as OUTPUT for relay
}
void loop() {
// HC-SR505 Motion Sensor Code by Robojax.com 20180210
int motion =digitalRead(PIR);// read the sensor
if(motion){
Serial.println("Motion detected");
digitalWrite(BUZZER,HIGH);// turn the buzzer ON
digitalWrite(RELAY,LOW);// turn the relay ON
}else{
Serial.println("===nothing moves");
digitalWrite(BUZZER,LOW);// keep the buzzer OFF
digitalWrite(RELAY,HIGH);// turn the relay OFF
}
delay(500);
// HC-SR505 Motion Sensor Code by Robojax.com 20180210
}
Dingen die je misschien nodig hebt
-
AmazonBuy relay shield from Amazonamzn.to
-
Amazon
-
AliExpressBuy 5V/12V 1, 2, 4, 6, or 8-channel relay modules.click.aliexpress.com
Hulpmiddelen en referenties
Nog geen middelen.
Bestanden📁
Datasheet (pdf)
-
robojax-HC-SR505-manual.pdf
robojax-HC-SR505-manual.pdf0.09 MB
Fritzing-bestand
-
HC-SR501 Body Sensor Module
HC-SR501 Body Sensor Module.fzpz0.01 MB