Code zoeken

Arduino-code en video voor een HC-SR505 bewegingssensormodule met relais

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).

HC-SR505 motion sensor

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

FabrikantHC-SR505
OnderdeelnummerHC-SR505
Logica/IO-spanning3.3V - 20V
Voedingsspanning5V
Uitgangsstroom (per kanaal)20 mA
Piekstroom (per kanaal)100 mA
PWM-frequentierichtlijnN/A
Ingangslogische drempels0.3V (laag) / 2.5V (hoog)
Spanningsval / RDS(on) / verzadiging0.2V
Thermische limieten+70 °C
BehuizingModule
Opmerkingen / variantenKleine 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

Arduino wiring for  HC-SR505 motion sensor
Arduino wiring for HC-SR505 motion sensor

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:

Wirig relay module to AC load

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

Afbeeldingen

Wirig relay module to AC load
Wirig relay module to AC load
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
HC-SR505 motion sensor
Arduino wiring for  HC-SR505 motion sensor
Arduino wiring for HC-SR505 motion sensor
74-This is the Arduino code for the HC-SR505 motion sensor (small) with relay.
Taal: C++
/*
 * 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

Hulpmiddelen en referenties

Nog geen middelen.

Bestanden📁

Datasheet (pdf)

Fritzing-bestand