Tutorial ESP32 21/55 - Detectarea oamenilor cu senzorul de mișcare PIR | Kitul de învățare IoT ESP32 de la SunFounder
În acest tutorial, vom învăța cum să folosim un senzor de mișcare PIR cu ESP32 pentru a detecta prezența umană. ESP32 este un microcontroler puternic care oferă atât capabilități Wi-Fi, cât și Bluetooth, fiind ideal pentru proiecte IoT. Prin integrarea unui senzor PIR, putem construi un sistem care activează un LED sau un buzzer ori de câte ori este detectată mișcare, oferind o modalitate simplă, dar eficientă de a monitoriza activitatea umană.
Senzorul PIR (Infrarosu Pasiv) detectează mișcarea prin măsurarea radiației infraroșii emise de obiecte, în special de cele cu corp cald, precum oamenii. Când este detectată mișcarea, senzorul trimite un semnal către ESP32, care poate declanșa apoi o ieșire, cum ar fi aprinderea unui LED sau sunetul unui buzzer. Acest tutorial vă va ghida prin configurarea hardware, cablarea și codul necesare pentru ca sistemul să funcționeze corect (în video la 00:45).
Hardware Explicat
Acest proiect implică mai multe componente cheie. Microcontrolerul ESP32 servește ca creier al operațiunii, gestionând datele senzorului și controlând ieșirile. Senzorul de mișcare PIR detectează mișcarea prin măsurarea modificărilor în radiația infraroșie. LED-ul sau buzzer-ul oferă o alertă vizuală sau sonoră atunci când este detectată mișcarea.
ESP32 este echipat cu Wi-Fi și Bluetooth, permițând funcționalități extinse, cum ar fi conectivitatea în cloud. Senzorul PIR conține o lentilă care focalizează lumina infraroșie pe un senzor piroelectric, care generează un semnal de tensiune atunci când detectează modificări ale nivelurilor infraroșii, indicând mișcare.
Detalii din Fișa Tehnică
| Producător | SunFounder |
|---|---|
| Număr de piesă | Modul Senzor PIR |
| Tensiune logică/IO | 3,3 V |
| Tensiune de alimentare | 3,3 V |
| Curent de ieșire (pe canal) | 20 mA max |
| Curent de vârf (pe canal) | 50 mA max |
| Ghid frecvență PWM | N/A |
| Praguri logice de intrare | 0,3 V (jos), 2,0 V (sus) |
| Cădere de tensiune / RDS(on) / saturație | N/A |
| Limite termice | 0 până la 70 °C |
| Pachet | Modul |
| Note / variante | Sensibilitate și întârziere reglabile |
- Asigurați o alimentare corectă (3,3 V) pentru a evita deteriorarea.
- Folosiți un rezistor pentru LED pentru a limita curentul.
- Mențineți o cablare corectă pentru a preveni scurtcircuitele.
- Reglați butoanele senzorului PIR pentru sensibilitate și întârziere, după cum este necesar.
- Testați senzorul în diferite medii pentru performanță optimă.
Instrucțiuni de Cablare

Pentru a cabla senzorul de mișcare PIR și LED-ul la ESP32, începeți prin conectarea pinului VCC al senzorului PIR la ieșirea de 3,3 V de pe ESP32. Apoi, conectați pinul de masă al senzorului PIR la un pin de masă de pe ESP32. Pinul de semnal (adesea etichetat ca S) de la senzorul PIR ar trebui conectat la pinul GPIO 14 de pe ESP32.
Pentru LED, conectați piciorul mai lung (anodul) la pinul GPIO 26 printr-un rezistor de 220 Ohmi și conectați piciorul mai scurt (catodul) la masă. Asigurați-vă că toate conexiunile sunt sigure pentru a garanta funcționarea corectă. Dacă folosiți un buzzer în loc de LED, conectați un pin al buzzer-ului la pinul GPIO 26 și celălalt la masă, înlocuind configurația cu LED.
Exemple de Cod & Explicații
În cod, definim numerele pinilor pentru senzorul PIR și LED. Folosim const int pirPin = 14; pentru a seta pinul PIR și const int ledPin = 26; pentru pinul LED. Aceste constante asigură că numerele pinilor rămân neschimbate pe parcursul execuției programului.
const int pirPin = 14; // numărul pinului PIR
const int ledPin = 26; // pinul LED
Acest fragment inițializează pinii pe care îi vom folosi. În funcția setup(), configurăm pinul PIR ca intrare și pinul LED ca ieșire. Această configurare este crucială pentru citirea stării senzorului și controlul LED-ului.
void setup() {
Serial.begin(115200);
pinMode(pirPin, INPUT); // inițializează pinul PIR ca intrare
pinMode(ledPin, OUTPUT); // inițializează pinul LED ca ieșire
}
În funcția loop(), citim continuu starea senzorului PIR folosind digitalRead(pirPin);. Dacă senzorul detectează mișcare (indicată printr-o stare HIGH), aprindem LED-ul folosind digitalWrite(ledPin, HIGH);. În caz contrar, stingem LED-ul.
if (pirState == HIGH) {
digitalWrite(ledPin, HIGH); // aprinde LED-ul
} else {
digitalWrite(ledPin, LOW); // stinge LED-ul
}
Această logică permite LED-ului să răspundă la mișcarea detectată de senzorul PIR. Asigurați-vă că încărcați codul complet furnizat mai jos în articol pentru funcționalitate completă.
Demonstrație / Ce să Vă Așteptați
Odată ce totul este configurat și codul este încărcat, LED-ul se va aprinde atunci când mișcarea este detectată de senzorul PIR. Puteți testa senzorul mișcându-vă în fața lui; LED-ul ar trebui să se aprindă imediat. Dacă senzorul este setat cu o întârziere, acesta va rămâne aprins pentru timpul specificat înainte de a se stinge din nou (în video la 12:15).
Capcanele frecvente includ cablarea incorectă, care poate împiedica funcționarea senzorului. Asigurați-vă că senzorul PIR este alimentat corect și că pinul de semnal este conectat la pinul GPIO corect de pe ESP32. Reglarea butoanelor de sensibilitate și întârziere de pe senzorul PIR poate ajuta, de asemenea, la optimizarea performanței în funcție de mediul dumneavoastră.
Marcaje temporale video
- 00:00 Început
- 1:54 Introducere în senzorul PIR
- 6:38 Explicația cablării
- 10:21 Explicația codului Arduino
- 12:45 Selectarea plăcii ESP32 și a portului COM în Arduino IDE
- 14:27 Demonstrație și calibrare a senzorului PIR
// 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
Resurse și referințe
Încă nu sunt resurse.
Fișiere📁
Fișă tehnică (pdf)
-
RE200B_PRI motion sensor datasheet
RE200B_PRI_datasheet.pdf0.02 MB -
BISS0001 motion sensor chip datasheet
BISS0001_datasheet.pdf0.16 MB
Alte fișiere
-
Manual de utilizare a senzorului de mișcare HC-SR501
robojax-HC-SR501-motion-manual.pdf0.83 MB