ESP32-zelfstudie 21/55 - Mens detecteren met PIR-bewegingssensor | SunFounder's ESP32 IoT-leerkit
In deze tutorial leren we hoe we een PIR-bewegingssensor met de ESP32 kunnen gebruiken om de aanwezigheid van mensen te detecteren. De ESP32 is een krachtige microcontroller die zowel Wi-Fi als Bluetooth-mogelijkheden biedt, waardoor hij ideaal is voor IoT-projecten. Door een PIR-sensor te integreren, kunnen we een systeem bouwen dat een LED of zoemer activeert wanneer er beweging wordt gedetecteerd, wat een eenvoudige maar effectieve manier biedt om menselijke activiteit te monitoren.
De PIR-sensor (Passief Infrarood) detecteert beweging door de infraroodstraling te meten die door objecten wordt uitgezonden, vooral door warmbloedige objecten zoals mensen. Wanneer er beweging wordt gedetecteerd, stuurt de sensor een signaal naar de ESP32, die vervolgens een uitgang kan activeren, zoals het laten branden van een LED of het laten klinken van een zoemer. Deze tutorial begeleidt je door de hardware-opstelling, bedrading en code die nodig zijn om het systeem correct te laten functioneren (in video op 00:45).
Hardware Uitgelegd
Dit project omvat verschillende belangrijke componenten. De ESP32-microcontroller fungeert als het brein van de operatie, verwerkt sensorgegevens en bestuurt uitgangen. De PIR-bewegingssensor detecteert beweging door veranderingen in infraroodstraling te meten. De LED of zoemer biedt een visuele of hoorbare waarschuwing wanneer er beweging wordt gedetecteerd.
De ESP32 is uitgerust met Wi-Fi en Bluetooth, waardoor uitgebreide functionaliteiten zoals cloudconnectiviteit mogelijk zijn. De PIR-sensor bevat een lens die infrarood licht focust op een pyro-elektrische sensor, die een spanningssignaal genereert wanneer hij veranderingen in infraroodniveaus detecteert, wat wijst op beweging.
Datasheet Details
| Fabrikant | SunFounder |
|---|---|
| Onderdeelnummer | PIR-sensormodule |
| Logica/IO-spanning | 3,3 V |
| Voedingsspanning | 3,3 V |
| Uitgangsstroom (per kanaal) | 20 mA max |
| Piekstroom (per kanaal) | 50 mA max |
| PWM-frequentierichtlijn | N/B |
| Ingangslogische drempels | 0,3 V (laag), 2,0 V (hoog) |
| Spanningsval / RDS(on) / verzadiging | N/B |
| Thermische limieten | 0 tot 70 °C |
| Behuizing | Module |
| Opmerkingen / varianten | Instelbare gevoeligheid en vertraging |
- Zorg voor een correcte voedingsspanning (3,3 V) om schade te voorkomen.
- Gebruik een weerstand voor de LED om de stroom te beperken.
- Zorg voor correcte bedrading om kortsluiting te voorkomen.
- Stel de knoppen van de PIR-sensor in op de gewenste gevoeligheid en vertraging.
- Test de sensor in verschillende omgevingen voor optimale prestaties.
Bedradingsinstructies

Om de PIR-bewegingssensor en LED op de ESP32 aan te sluiten, begin je met het verbinden van de VCC-pin van de PIR-sensor met de 3,3 V-uitgang op de ESP32. Verbind vervolgens de aardingspin van de PIR-sensor met een aardingspin op de ESP32. De signaalpin (vaak gemarkeerd als S) van de PIR-sensor moet worden verbonden met GPIO-pin 14 op de ESP32.
Voor de LED verbind je het langere been (anode) met GPIO-pin 26 via een weerstand van 220 Ohm, en verbind je het kortere been (kathode) met de grond. Zorg ervoor dat alle verbindingen stevig zijn om een correcte werking te garanderen. Als je een zoemer gebruikt in plaats van een LED, verbind dan één pin van de zoemer met GPIO-pin 26 en de andere met de grond, ter vervanging van de LED-opstelling.
Codevoorbeelden & Uitleg
In de code definiëren we de pinnummers voor de PIR-sensor en de LED. We gebruiken const int pirPin = 14; om de PIR-pin in te stellen en const int ledPin = 26; voor de LED-pin. Deze constanten zorgen ervoor dat de pinnummers gedurende de uitvoering van het programma ongewijzigd blijven.
const int pirPin = 14; // het nummer van de pir-pin
const int ledPin = 26; // LED-pin
Dit fragment initialiseert de pinnen die we zullen gebruiken. In de setup()-functie configureren we de PIR-pin als invoer en de LED-pin als uitvoer. Deze opstelling is cruciaal voor het lezen van de status van de sensor en het besturen van de LED.
void setup() {
Serial.begin(115200);
pinMode(pirPin, INPUT); // initialiseer de pir-pin als invoer
pinMode(ledPin, OUTPUT); // initialiseer de LED-pin als uitvoer
}
In de loop()-functie lezen we continu de status van de PIR-sensor met digitalRead(pirPin);. Als de sensor beweging detecteert (aangegeven door een HOGE status), zetten we de LED aan met digitalWrite(ledPin, HIGH);. Anders zetten we de LED uit.
if (pirState == HIGH) {
digitalWrite(ledPin, HIGH); // zet LED aan
} else {
digitalWrite(ledPin, LOW); // zet LED uit
}
Deze logica zorgt ervoor dat de LED reageert op beweging die door de PIR-sensor wordt gedetecteerd. Zorg ervoor dat je de volledige code uploadt die onder het artikel wordt verstrekt voor volledige functionaliteit.
Demonstratie / Wat te Verwachten
Zodra alles is ingesteld en de code is geüpload, zal de LED oplichten wanneer er beweging wordt gedetecteerd door de PIR-sensor. Je kunt de sensor testen door ervoor te bewegen; de LED zou onmiddellijk moeten aangaan. Als de sensor is ingesteld op een vertraging, blijft hij gedurende de opgegeven tijd aan voordat hij weer uitgaat (in video op 12:15).
Veelvoorkomende valkuilen zijn onder andere onjuiste bedrading, waardoor de sensor mogelijk niet functioneert. Zorg ervoor dat de PIR-sensor correct van stroom wordt voorzien en dat de signaalpin is aangesloten op de juiste GPIO-pin van de ESP32. Het aanpassen van de gevoeligheids- en vertragingsknoppen op de PIR-sensor kan ook helpen om de prestaties te optimaliseren op basis van uw omgeving.
Video-tijdstempels
- 00:00 Start
- 1:54 Introductie tot de PIR-sensor
- 6:38 Bedrading uitgelegd
- 10:21 Arduino-code uitgelegd
- 12:45 ESP32-board en COM-poort selecteren in Arduino IDE
- 14:27 Demonstratie en kalibratie van de PIR-sensor
// set pin numbers
const int pirPin = 14; // the number of the pir pin
const int ledPin = 26; // LED pin
// variable for storing the pir status
int pirState = 0;
void setup() {
Serial.begin(115200);
// initialize the pir pin as an input
pinMode(pirPin, INPUT);
// initialize the LED pin as an output
pinMode(ledPin, OUTPUT);
}
void loop() {
// read the state of the pir value
pirState = digitalRead(pirPin);
Serial.println(pirState);
delay(100);
// if the pir is pressed, the pirState is HIGH
if (pirState == HIGH) {
// turn LED on
digitalWrite(ledPin, HIGH);
} else {
// turn LED off
digitalWrite(ledPin, LOW);
}
}
Common Course Links
Common Course Files
Hulpmiddelen en referenties
Nog geen middelen.
Bestanden📁
Datasheet (pdf)
-
RE200B_PRI motion sensor datasheet
RE200B_PRI_datasheet.pdf0.02 MB -
BISS0001 motion sensor chip datasheet
BISS0001_datasheet.pdf0.16 MB
Andere bestanden
-
HC-SR501 bewegingssensor gebruikershandleiding
robojax-HC-SR501-motion-manual.pdf0.83 MB