In acest tutorial vei invata cum functioneaza senzorul PIR HC-SR501 pentru detectia miscarii si cum il poti utiliza cu Arduino. Acest senzor este folosit intr-o gama variata de aplicatii, inclusiv in cele mai moderne sisteme de securitate, iluminare automata, deschiderea usilor si altele asemenea, unde trebuie sa reactioneze la miscare.
Consuma putin, este ieftin si usor de conectat. Are o tensiune de operare de 4.5-20V DC, un consum de curent de 65mA si functioneaza la temperaturi cuprinse intre -15°C si +70°C.
Cum functioneaza senzorul PIR HC-SR501 pentru detectia miscarii?
Senzorul PIR HC-SR501 este format din doua componente principale: un element sensibil piroelectric (care poate detecta radiatia infrarosie) si lentile Fresnel. Toate obiectele, inclusiv corpul uman, emit energie termica sub forma de radiatie infrarosie la temperaturi mai mari de 0 absolut (0 Kelvin / -273.15 °C) . Cu cat un obiect este mai cald, cu atat emite mai multa radiatie infrarosie. Aceasta radiatie nu este vizibila pentru ochiul uman, pentru ca are lungimi de unda in spectrul infrarosu.
Senzorul PIR HC-SR501 este special conceput pentru a detecta astfel de radiatii.
Dar, cum functioneaza mai exact ? E simplu, acest senzor scaneaza variatia de radiatie. Atunci cand detecteaza o astfel de variatie, inseamna ca exista miscare si senzorul trimite un semnal logic cu valoarea 1 catre Arduino. In caz contrar, cand nu exista miscare, senzorul trimite un semnal logic cu valoarea 0 catre Arduino.
Daca doresti sa afli mai multe informatii despre senzorul PIC HC-SR501, ii poti accesa datasheetul aici.
Componente necesare
In continuare, pentru a putea construi acest proiect vei avea nevoie de:
- 1 x senzor PIR HC-SR501
- 1 x modul buzzer activ
- 1 x LED
- 1 x placa de dezvoltare compatibila Arduino Uno R3
- 1 x rezistor 220 ohmi
- 3 x fire tata-mama
- 6 x fire tata-tata
Acum ca ai aflat care sunt componentele necesare, te vei ghida dupa schema de conectare de mai jos.
Schema conectare senzor PIR HC-SR501 pentru detectia miscarii

Se conecteaza GND si 5V de pe Arduino pe breadboard.
Senzorul PIR HC-SR501: pinul GND se conecteaza la GND de pe breadboard
pinul OUT se conecteaza la portul 9 digital Arduino
pinul VCC se conecteaza la 5V de pe breadboard
LED: pinul + se conecteaza la portul digital 7 Arduino
pinul - se conecteaza la rezistorul de 220 ohmi, la capatul caruia se conecteaza la GND de pe breadboard
Modul buzzer activ: pinul - se conecteaza la GND de pe breadboard
pinul + se conecteaza la 5V de pe breadboard
pinul S se conecteaza la portul digital 8 Arduino
Exemplu cod
Dupa ce ai realizat circuitul, deschide mediul de dezvoltare Arduino IDE si introdu codul furnizat mai jos. Apoi conecteaza placa Arduino la computer prin intermediul portului USB, selecteaza tipul de placa si portul serial (din meniul Tools/ Instrumente selecteaza pentru optiunea Board/ Placa si Port ceea ce utilizezi). Pentru a incarca codul pe placa, apasa butonul Upload/Incarcare (simbolul de sageata catre dreapta). In partea de jos a ferestrei vei putea urmari mesajele de stare : Compiling Sketch/Compilez schita, Uploading/Incarcare si Done/Incarcare finalizata . Dupa finalizarea cu succes a incarcarii, placa Arduino va rula codul pe care l-ai incarcat.
#define ledPin 7
#define buzzerPin 8
#define pirPin 9
int val = 0;
bool motionState = false;
void setup() {
pinMode(buzzerPin, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(pirPin, INPUT);
Serial.begin(9600);
}
void loop() {
val = digitalRead(pirPin);
if (val == HIGH) {
digitalWrite(ledPin, HIGH);
alarm(500, 1000);
delay(150);
if (motionState == false) {
Serial.println("Miscare detectata!");
motionState = true;
}
}
else {
digitalWrite(ledPin, LOW);
noTone(buzzerPin);
delay(150);
if (motionState == true) {
Serial.println("Miscarea s-a incheiat.");
motionState = false;
}
}
}
void alarm(long duration, int freq) {
tone(buzzerPin, freq);
delay(duration);
noTone(buzzerPin);
}