Arduino UNO R4 - Bewegingssensor

Deze tutorial laat u zien hoe u de HC-SR501 bewegingssensor en Arduino UNO R4 gebruikt om mensen te detecteren. In detail leren we:

Arduino UNO R4 motion sensor

Over de HC-SR501 Bewegingssensor

HC-SR501 Motion Sensor

De HC-SR501 PIR sensor detecteert beweging van mensen of dieren. Het wordt vaak gebruikt in verschillende toepassingen zoals het aan- en uitzetten van lichten, het openen en sluiten van deuren, het bedienen van roltrappen en het detecteren van indringers.

Wanneer u naar plaatsen gaat waar deuren vanzelf open- en dichtgaan, waar lichten automatisch aan- en uitgaan, of waar roltrappen vanzelf starten, heeft u zich dan ooit afgevraagd: "Hoe gebeurt dit?" Als dat zo is, zal deze gids niet alleen uitleggen hoe het werkt, maar ook tonen hoe u het zelf kunt maken. Laten we beginnen!

Pinout

De HC-SR501 bewegingssensor heeft drie pinnen:

  • GND pin: aansluiten op GND (0V)
  • VCC pin: aansluiten op VCC (5V)
  • OUTPUT pin: stuurt LOW wanneer er geen beweging is, HIGH bij beweging. Sluit deze pin aan op de Arduino UNO R4's input pin.

De HC-SR501 bevat één jumper en twee potentiometers, die helpen bij het aanpassen van de sensor instellingen. Begin met de standaard instelling. U kunt meer informatie vinden in de sectie "Geavanceerd Gebruik". Geavanceerd Gebruik

HC-SR501 Motion Sensor Pinout

Hoe Het Werkt

De HC-SR501 sensor detecteert beweging door veranderingen in infraroodlicht van het bewegende object waar te nemen. Voor de HC-SR501 sensor om een object te detecteren, moet het aan twee voorwaarden voldoen:

  • Het moet bewegen of trillen
  • Het moet infraroodenergie uitstralen.

Daarom:

  • Als een object beweegt zonder infraroodstralen uit te zenden (zoals een robot of speelgoedauto), zal de sensor het niet detecteren.
  • Als een object infraroodstralen uitzendt maar niet beweegt (zoals een persoon die stilstaat), zal de sensor het niet detecteren.

Menschen en dieren stralen van nature infrarood uit. Hierdoor kan de sensor detecteren wanneer mensen en dieren bewegen.

De staat van de OUTPUT pin:

  • Als er geen persoon of dier beweegt binnen het bereik van de sensor, is de OUTPUT pin van de sensor LOW.
  • Als een persoon of dier het bereik van de sensor binnenkomt, verandert de OUTPUT pin van LOW naar HIGH, wat bewegingsdetectie aangeeft.
  • Als een persoon of dier het bereik van de sensor verlaat, verandert de OUTPUT pin van HIGH naar LOW, wat het einde van beweging aangeeft.

De video toont het basisprincipe van hoe de bewegingssensor werkt. In echte situaties kan de manier waarop het functioneert enigszins variëren op basis van de instellingen, zoals uitgelegd in de sectie Geavanceerd Gebruik.

Arduino UNO R4 - HC-SR501 Bewegingssensor

Wanneer u een pin op de Arduino UNO R4 instelt als digitale input, kan deze detecteren of het aangesloten item in een LOW of HIGH staat is.

Verbind de Arduino UNO R4's pin met de OUTPUT pin van de HC-SR501 sensor. Gebruik vervolgens de Arduino UNO R4 code om de OUTPUT pin waarde te lezen om beweging te detecteren.

Bedradingsschema

Arduino UNO R4 Motion Sensor Wiring Diagram

This image is created using Fritzing. Click to enlarge image

Zie De beste manier om Arduino Uno R4 en andere componenten van stroom te voorzien.

Initiële Instelling

Time Delay AdjusterDraai volledig tegen de klok in.
Detection Range AdjusterDraai volledig met de klok mee.
Repeat Trigger SelectorPlaats jumper zoals getoond in de afbeelding.
arduino motion sensor initial setting

Hoe Te Programmeren Voor Bewegingssensor

  • Stel een Arduino UNO R4 pin in als digitale input modus met de pinMode() functie.
pinMode(SENSOR_PIN, INPUT);
  • Gebruik de digitalRead() functie om de status van de OUTPUT pin van de sensor te controleren.
motion_state = digitalRead(SENSOR_PIN);
  • Detecteer wanneer beweging begint (de pin verandert van LOW naar HIGH).
prev_motion_state = motion_state; // Sla de vorige staat van de pin op motion_state = digitalRead(SENSOR_PIN); // Lees de huidige staat van de pin if (prev_motion_state == LOW && motion_state == HIGH) { // Controleer overgang van LOW naar HIGH Serial.println("Motion detected!"); }
  • Detecteer wanneer beweging stopt (pin status verandert van HIGH naar LOW).
prev_motion_state = motion_state; // Bewaar de vorige staat van de pin motion_state = digitalRead(SENSOR_PIN); // Update de huidige staat van sensor input if (prev_motion_state == HIGH && motion_state == LOW) { // Detecteer overgang van HIGH naar LOW Serial.println("Motion stopped!"); // Output bericht wanneer beweging stopt }

Arduino UNO R4 Code

/* * Deze Arduino UNO R4 code is ontwikkeld door newbiely.nl * Deze Arduino UNO R4 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-uno-r4/arduino-uno-r4-motion-sensor */ #define SENSOR_PIN 2 // The Arduino UNO R4 connected to the output pin of the motion sensor int motion_state = LOW; // Initialize current pin state to LOW int prev_motion_state = LOW; // Initialize previous pin state to LOW void setup() { Serial.begin(9600); // Start serial communication at 9600 baud rate pinMode(SENSOR_PIN, INPUT); // Configure pin 2 as an input for the sensor } void loop() { prev_motion_state = motion_state; // Assign the current pin state to the previous pin state for comparison motion_state = digitalRead(SENSOR_PIN); // Read the current state from the sensor output // Check for transition from LOW to HIGH which indicates motion detected if (prev_motion_state == LOW && motion_state == HIGH) { Serial.println("Motion detected!"); // Print message when motion is detected // Optional: Additional actions when motion is detected } // Check for transition from HIGH to LOW which indicates motion has stopped else if (prev_motion_state == HIGH && motion_state == LOW) { Serial.println("Motion stopped!"); // Print message when motion has stopped // Optional: Additional actions when motion stops } }

Snelle Stappen

Volg deze instructies stap voor stap:

  • Als dit de eerste keer is dat u de Arduino Uno R4 WiFi/Minima gebruikt, raadpleeg dan de tutorial over het instellen van de omgeving voor Arduino Uno R4 WiFi/Minima in de Arduino IDE.
  • Bedraad de componenten volgens het meegeleverde schema.
  • Verbind het Arduino Uno R4 board met uw computer via een USB kabel.
  • Start de Arduino IDE op uw computer.
  • Selecteer het juiste Arduino Uno R4 board (bijv. Arduino Uno R4 WiFi) en COM poort.
  • Kopieer de bovenstaande code en open deze in Arduino IDE
  • Druk op de Upload knop in Arduino IDE om de code naar Arduino UNO R4 te uploaden
  • Open de Serial Monitor
  • Beweeg uw hand voor de sensor
  • Controleer de output op de Serial Monitor
COM6
Send
Motion detected! Motion stopped!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

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

Deze sectie is gewijd aan diepgaande kennis. Maak u GEEN zorgen als u het niet begrijpt. Sla deze sectie over als deze u overweldigt en kom op een andere dag terug. Lees verder met de volgende secties.

We kunnen de instellingen van de sensor aanpassen met behulp van één jumper en twee potentiometers, zoals hierboven beschreven.

Detection Range Adjuster

Deze potentiometer past de detectieafstand aan (ongeveer 3 meter tot 7 meter).

  • Wanneer volledig met de klok mee gedraaid, is het detectiebereik ongeveer 3 meter.
  • Wanneer volledig tegen de klok in gedraaid, is het detectiebereik ongeveer 7 meter.
Motion Sensor Detection Range

We kunnen de potentiometer instellingen wijzigen om het gewenste bereik te krijgen, tussen 3 meter en 7 meter.

Time Delay Adjuster

Deze potentiometer past de tijdsvertraging aan.

  • Als u het helemaal met de klok mee draait, wordt de tijdsvertraging ongeveer 5 minuten.
  • Als u het helemaal tegen de klok in draait, wordt de tijdsvertraging ongeveer 3 seconden.

Vervolgens leggen we uit wat tijdsvertraging betekent en hoe het gerelateerd is aan Repeat Trigger.

motion sensor adjust time delay

Repeat Trigger Selector

Deze jumper laat u een trigger modus kiezen: enkele trigger of herhaalbare trigger.

motion sensor trigger selection

We verwijzen naar de tijdsvertraging instelling (aangepast door de Time Delay Adjuster) als time_delay. Stel u voor dat u blijft bewegen binnen het detectiegebied van de sensor voor een aanzienlijke periode, die we motion_time noemen (veel langer dan time_delay).

  • In enkele trigger modus schakelt de OUTPUT pin meerdere keren tussen LOW en HIGH. Het blijft HIGH voor een periode gelijk aan "time_delay" en LOW voor een vaste tijd van 3 seconden.
motion sensor single trigger mode
  • De OUTPUT pin blijft HIGH gedurende de duur van de bewegingstijd plus de tijdsvertraging.
motion sensor repeatable trigger mode

Testen

Laten we de trigger modi testen. Draai de Time Delay Adjuster volledig naar links om de vertragingstijd op 3 seconden in te stellen.

  • Enkele Trigger Modus:
    • Plaats de jumper om de enkele trigger modus te selecteren.
    • Zwaai continu 10 seconden met uw hand voor de sensor.
    • Haal uw hand uit het bereik van de sensor.
    • Wacht 3 seconden; controleer vervolgens de serial monitor voor de output zoals getoond.
    COM6
    Send
    Motion detected! Motion stopped! Motion detected! Motion stopped! Motion detected! Motion stopped!
    Autoscroll Show timestamp
    Clear output
    9600 baud  
    Newline  
    • Herhaalbare Trigger Modus:
      • Plaats de jumper om de Herhaalbare Trigger modus te activeren.
      • Beweeg uw hand continu voor de sensor gedurende ongeveer 10 seconden.
      • Haal uw hand uit het bereik van de sensor.
      • Na het wachten van 3 seconden, controleer de serial monitor om de output te zien.
      COM6
      Send
      Motion detected! Motion stopped!
      Autoscroll Show timestamp
      Clear output
      9600 baud  
      Newline  

      In enkele trigger modus activeert de sensor twee of drie keer. In herhaalbare trigger modus activeert het slechts één keer.

      ※ Notiz:

      Tijdens de LOW periode, die 3 seconden duurt, kan de sensor geen beweging detecteren. Dit betekent dat de sensor inactief is tijdens deze tijd, maar dit veroorzaakt meestal geen problemen.

      Het wordt aanbevolen om de herhaalbare trigger modus te gebruiken.

      In praktische toepassingen:

      • Apparaten of machines worden vaak ingeschakeld wanneer een persoon in de buurt wordt gedetecteerd.
      • Apparaten of machines worden niet uitgeschakeld zodra de persoon vertrekt. Ze worden uitgeschakeld na een bepaalde vertraging.

Functie Referenties

Reacties

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!