ESP32 - Bewegingssensor

Deze handleiding legt uit hoe u de ESP32 samen met de HC-SR501 bewegingssensor kunt gebruiken. We leren in detail:

Hardware Benodigdheden

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB-kabel Type-C
1×HC-SR501 Bewegingssensor
1×Breadboard (experimenteerprint)
1×Jumperdraden
1×(Optioneel) DC Power Jack
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor ESP32
1×(Aanbevolen) Breakout Expansion Board for ESP32
1×(Aanbevolen) Stromsplitter voor ESP32

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over HC-SR501 Bewegingssensor

HC-SR501 Bewegingssensor

De HC-SR501 PIR sensor is een sensor die beweging van mensen (of dieren) kan detecteren. Hij wordt veel gebruikt om de aanwezigheid van mensen te detecteren in diverse toepassingen, zoals het automatisch aan- en uitschakelen van een lamp, het activeren of deactiveren van een roltrap, het detecteren van indringers, het openen of sluiten van een deur, enzovoorts.

Pinout HC-SR501 Bewegingssensor

De HC-SR501 bewegingssensor heeft 3 pinnen:

  • VCC pin: verbind deze met VCC (5V)
  • GND pin: verbind deze met GND (0V)
  • OUTPUT pin: verbind deze met een input pin van de ESP32. Deze pin geeft een signaal af dat overeenkomt met de detectie van beweging:
    • LOW als er geen beweging wordt gedetecteerd
    • HIGH als er beweging wordt gedetecteerd

    Op de HC-SR501 bewegingssensor bevinden zich ook twee potentiometers en een jumper. Deze potentiometers en jumper worden gebruikt om de instellingen van de sensor aan te passen. De uitgebreide uitleg hiervan vindt u in de Advanced Uses.

    HC-SR501 Bewegingssensor Pinout

    Werking van de HC-SR501 Bewegingssensor

    Het werkingsprincipe van de HC-SR501 sensor is gebaseerd op de verandering van infrarode straling bij een bewegend object. Om door de HC-SR501 sensor te worden gedetecteerd, moet het object aan twee voorwaarden voldoen:

    • Het object moet infrarode straling uitstralen
    • Het object moet bewegen of trillen

    Dus:

    • Als een object infrarode straling uitzendt maar NIET beweegt (bijvoorbeeld een persoon die stil staat), wordt het NIET door de sensor gedetecteerd.
    • Als een object beweegt maar GEEN infrarode straling uitzendt (bijvoorbeeld een robot of voertuig), wordt het NIET door de sensor gedetecteerd.

    Dieren en mensen zenden van nature infrarode straling uit. Dus dieren en mensen worden door de HC-SR501 sensor gedetecteerd als ze bewegen.

    De bovenstaande video toont het werkingsprincipe van de bewegingssensor. In de praktijk kan de bewegingssensor verschillend werken, afhankelijk van de instellingen van de sensor (beschreven in de sectie Advanced Uses).

    Detectie van menselijke aanwezigheid

    De sensor detecteert niet rechtstreeks de aanwezigheid van mensen, maar alleen beweging. Aan de hand van gedetecteerde beweging wordt de aanwezigheid van mensen afgeleid:

    • Als beweging wordt gedetecteerd, zijn er mensen aanwezig
    • Als geen beweging wordt gedetecteerd, zijn er geen mensen aanwezig

    Er is een praktische beperking: er kunnen mensen binnen het bereik van de sensor zijn die niet bewegen, waardoor er geen beweging wordt gedetecteerd. In dat geval concludeert de ESP32 (of MCU) dat er geen mensen aanwezig zijn.

    Toch wordt de sensor veel gebruikt om mensen te detecteren in diverse toepassingen, omdat dit probleem niet ernstig is en de sensor goedkoop is.

    ESP32 en HC-SR501 Bewegingssensor

    Wanneer een pin van de ESP32 is ingesteld als digitale input, kan hij de status (LOW of HIGH) lezen van alles waar hij mee verbonden is. Door de OUTPUT pin van de HC-SR501 sensor te verbinden met een pin van de ESP32, kunnen we met code op de ESP32 de waarde van deze OUTPUT pin uitlezen en daarmee beweging detecteren.

Bedradingsschema tussen HC-SR501 Bewegingssensor en ESP32

  • Hoe u de ESP32 en de bewegingssensor aansluit met behulp van een breadboard (gevoed via USB-kabel)
Bedradingsschema ESP32 Bewegingssensor

This image is created using Fritzing. Click to enlarge image

  • Hoe u de ESP32 en de bewegingssensor aansluit met behulp van een breadboard (gevoed via Vin-pin)
Bedradingsschema ESP32 Bewegingssensor

This image is created using Fritzing. Click to enlarge image

Hoe ESP32 en bewegingssensor aan te sluiten
Bedrading ESP32 en bewegingssensor

Initiële Instellingen

Detection Range Adjuster Draai deze volledig met de klok mee dicht.
Time Delay Adjuster Draai deze volledig tegen de klok in dicht.
Repeat Trigger Selector Plaats de jumper zoals op de onderstaande afbeelding.
ESP32 bewegingssensor initiële instelling

Hoe de Bewegingssensor te Programmeren

  • Stel een ESP32 pin in als digitale input met de pinMode() functie
pinMode(PIN_TO_SENSOR, INPUT);
  • Lees de status van de OUTPUT pin van de sensor met de digitalRead() functie
pinStateCurrent = digitalRead(PIN_TO_SENSOR);
  • Detecteer het begin van beweging (pinstatus verandert van LOW naar HIGH)
pinStatePrevious = pinStateCurrent; // oude status opslaan pinStateCurrent = digitalRead(PIN_TO_SENSOR); // nieuwe status lezen if (pinStatePrevious == LOW && pinStateCurrent == HIGH) { // pinstatus verandert: LOW -> HIGH Serial.println("Motion detected!"); }
  • Detecteer het stoppen van beweging (pinstatus verandert van HIGH naar LOW)
pinStatePrevious = pinStateCurrent; // oude status opslaan pinStateCurrent = digitalRead(PIN_TO_SENSOR); // nieuwe status lezen if (pinStatePrevious == HIGH && pinStateCurrent == LOW) { // pinstatus verandert: HIGH -> LOW Serial.println("Motion stopped!"); }

ESP32 Code

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-motion-sensor */ const int PIN_TO_SENSOR = 19; // GPIO19 pin verbonden met OUTPUT pin van sensor int pinStateCurrent = LOW; // huidige status van pin int pinStatePrevious = LOW; // vorige status van pin void setup() { Serial.begin(9600); // seriële communicatie initialiseren pinMode(PIN_TO_SENSOR, INPUT); // zet ESP32 pin in input mode om waarde van OUTPUT pin van sensor te lezen } void loop() { pinStatePrevious = pinStateCurrent; // oude status opslaan pinStateCurrent = digitalRead(PIN_TO_SENSOR); // nieuwe status lezen if (pinStatePrevious == LOW && pinStateCurrent == HIGH) { // pinstatus verandert: LOW -> HIGH Serial.println("Motion detected!"); // TODO: hier alarm, lamp aanzetten of apparaat activeren } else if (pinStatePrevious == HIGH && pinStateCurrent == LOW) { // pinstatus verandert: HIGH -> LOW Serial.println("Motion stopped!"); // TODO: hier alarm, lamp uitzetten of apparaat deactiveren } }

Snelle Stappen

  • Als dit de eerste keer is dat u ESP32 gebruikt, bekijk dan hoe u de omgeving instelt voor ESP32 in Arduino IDE.
  • Kopieer bovenstaande code en plak deze in Arduino IDE.
  • Compileer en upload de code naar het ESP32-bord door te klikken op de Upload knop in Arduino IDE.
  • Open de Seriële Monitor in Arduino IDE
Hoe u de seriële monitor opent in Arduino IDE
  • Beweeg uw hand voor het sensorbereik
  • Bekijk de uitvoer in de Seriële 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.

Taalreferenties

※ 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!