Cảm Biến PIR HC-SR501
HC-SR501 phát hiện chuyển động của vật phát nhiệt (người, động vật) bằng tia hồng ngoại thụ động. Khi có chuyển động, chân OUT lên mức cao — dùng trực tiếp như tín hiệu digital, không cần ADC.
Thông số kỹ thuật
| Điện áp cấp | 4.5 ~ 20 V |
| Mức logic ngõ ra | 3.3 (HIGH) / 0 (LOW) V |
| Dòng tĩnh | < 50 µA |
| Góc phát hiện | ~110 ° |
| Tầm xa | 3 ~ 7 (chỉnh được) m |
| Thời gian giữ (Tx) | ~3 giây ~ 5 phút |
| Thời gian khóa | ~2.5 s |
| Nhiệt độ hoạt động | -15 ~ +70 °C |
Kết nối với Arduino/ESP32
| HC-SR501 | Arduino UNO | ESP32 |
|---|---|---|
| VCC | 5V | 5V (VIN) |
| OUT | D2 | GPIO13 |
| GND | GND | GND |
Ngõ ra chỉ 3.3V nên đọc trực tiếp được bằng cả chân digital 5V (Arduino) lẫn GPIO 3.3V (ESP32). Nên chờ ~1 phút sau khi cấp nguồn để cảm biến ổn định.
Hiệu chỉnh
- Biến trở Sx (Sensitivity): chỉnh tầm xa phát hiện (3–7m).
- Biến trở Tx (Time delay): chỉnh thời gian giữ mức HIGH sau khi phát hiện.
- Jumper chế độ:
H(repeatable): giữ HIGH liên tục khi còn chuyển động.L(non-repeatable): xuất một xung HIGH rồi tự reset.
Code mẫu
#define PIR_PIN 13
#define LED_PIN 2
void setup() {
Serial.begin(115200);
pinMode(PIR_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
}
void loop() {
if (digitalRead(PIR_PIN) == HIGH) {
digitalWrite(LED_PIN, HIGH);
Serial.println("Phát hiện chuyển động!");
} else {
digitalWrite(LED_PIN, LOW);
}
delay(200);
}