Hướng dẫn ESP32 21/55 - Phát hiện người bằng cảm biến chuyển động PIR | Bộ học IoT ESP32 của SunFounder
Trong hướng dẫn này, chúng ta sẽ học cách sử dụng cảm biến chuyển động PIR với ESP32 để phát hiện sự hiện diện của con người. ESP32 là một vi điều khiển mạnh mẽ cung cấp cả khả năng Wi-Fi và Bluetooth, khiến nó trở nên lý tưởng cho các dự án IoT. Bằng cách tích hợp cảm biến PIR, chúng ta có thể xây dựng một hệ thống kích hoạt đèn LED hoặc còi báo mỗi khi phát hiện chuyển động, cung cấp một cách đơn giản nhưng hiệu quả để theo dõi hoạt động của con người.
Cảm biến PIR (Hồng ngoại thụ động) phát hiện chuyển động bằng cách cảm nhận bức xạ hồng ngoại phát ra từ các vật thể, đặc biệt là những vật có thân nhiệt ấm như con người. Khi phát hiện chuyển động, cảm biến sẽ gửi tín hiệu đến ESP32, sau đó có thể kích hoạt đầu ra, chẳng hạn như bật đèn LED hoặc phát còi báo. Hướng dẫn này sẽ hướng dẫn bạn qua việc thiết lập phần cứng, đấu dây và mã cần thiết để làm cho hệ thống hoạt động chính xác (trong video ở phút 00:45).
Giải thích phần cứng
Dự án này liên quan đến một số thành phần chính. Vi điều khiển ESP32 đóng vai trò là bộ não của hoạt động, xử lý dữ liệu cảm biến và điều khiển đầu ra. Cảm biến chuyển động PIR phát hiện chuyển động bằng cách đo những thay đổi trong bức xạ hồng ngoại. Đèn LED hoặc còi báo cung cấp cảnh báo trực quan hoặc âm thanh khi phát hiện chuyển động.
ESP32 được trang bị Wi-Fi và Bluetooth, cho phép mở rộng các chức năng như kết nối đám mây. Cảm biến PIR chứa một thấu kính tập trung ánh sáng hồng ngoại vào một cảm biến điện nhiệt, tạo ra tín hiệu điện áp khi phát hiện những thay đổi về mức hồng ngoại, cho biết có chuyển động.
Chi tiết bảng dữ liệu
| Nhà sản xuất | SunFounder |
|---|---|
| Số bộ phận | Mô-đun cảm biến PIR |
| Điện áp Logic/IO | 3,3 V |
| Điện áp cung cấp | 3,3 V |
| Dòng điện đầu ra (mỗi kênh) | Tối đa 20 mA |
| Dòng điện đỉnh (mỗi kênh) | Tối đa 50 mA |
| Hướng dẫn tần số PWM | Không áp dụng |
| Ngưỡng logic đầu vào | 0,3 V (thấp), 2,0 V (cao) |
| Sụt áp / RDS(on) / bão hòa | Không áp dụng |
| Giới hạn nhiệt độ | 0 đến 70 °C |
| Kiểu đóng gói | Mô-đun |
| Ghi chú / biến thể | Độ nhạy và độ trễ có thể điều chỉnh |
- Đảm bảo nguồn điện phù hợp (3,3 V) để tránh hư hỏng.
- Sử dụng điện trở cho đèn LED để giới hạn dòng điện.
- Duy trì đấu dây đúng cách để tránh đoản mạch.
- Điều chỉnh các núm trên cảm biến PIR để cài đặt độ nhạy và độ trễ khi cần.
- Kiểm tra cảm biến trong các môi trường khác nhau để có hiệu suất tối ưu.
Hướng dẫn đấu dây

Để đấu dây cảm biến chuyển động PIR và đèn LED với ESP32, hãy bắt đầu bằng cách kết nối chân VCC của cảm biến PIR với đầu ra 3,3 V trên ESP32. Tiếp theo, kết nối chân nối đất của cảm biến PIR với một chân nối đất trên ESP32. Chân tín hiệu (thường được gắn nhãn là S) từ cảm biến PIR nên được kết nối với chân GPIO 14 trên ESP32.
Đối với đèn LED, hãy kết nối chân dài hơn (cực dương) với chân GPIO 26 thông qua một điện trở 220 Ohm, và kết nối chân ngắn hơn (cực âm) với nối đất. Đảm bảo tất cả các kết nối được chắc chắn để đảm bảo hoạt động đúng. Nếu bạn sử dụng còi báo thay vì đèn LED, hãy kết nối một chân của còi với chân GPIO 26 và chân còn lại với nối đất, thay thế thiết lập đèn LED.
Ví dụ mã & hướng dẫn chi tiết
Trong mã, chúng ta định nghĩa số chân cho cảm biến PIR và đèn LED. Chúng ta sử dụng const int pirPin = 14; để đặt chân PIR và const int ledPin = 26; cho chân LED. Các hằng số này đảm bảo rằng số chân không thay đổi trong suốt quá trình thực thi chương trình.
const int pirPin = 14; // số chân của cảm biến PIR
const int ledPin = 26; // chân LED
Đoạn mã này khởi tạo các chân chúng ta sẽ sử dụng. Trong hàm setup(), chúng ta cấu hình chân PIR làm đầu vào và chân LED làm đầu ra. Việc thiết lập này rất quan trọng để đọc trạng thái của cảm biến và điều khiển đèn LED.
void setup() {
Serial.begin(115200);
pinMode(pirPin, INPUT); // khởi tạo chân PIR làm đầu vào
pinMode(ledPin, OUTPUT); // khởi tạo chân LED làm đầu ra
}
Trong hàm loop(), chúng ta liên tục đọc trạng thái của cảm biến PIR bằng cách sử dụng digitalRead(pirPin);. Nếu cảm biến phát hiện chuyển động (được biểu thị bằng trạng thái CAO), chúng ta bật đèn LED bằng cách sử dụng digitalWrite(ledPin, HIGH);. Ngược lại, chúng ta tắt đèn LED.
if (pirState == HIGH) {
digitalWrite(ledPin, HIGH); // bật đèn LED
} else {
digitalWrite(ledPin, LOW); // tắt đèn LED
}
Logic này cho phép đèn LED phản hồi với chuyển động được phát hiện bởi cảm biến PIR. Đảm bảo tải lên mã đầy đủ được cung cấp bên dưới bài viết để có chức năng hoàn chỉnh.
Trình diễn / Điều gì sẽ xảy ra
Sau khi mọi thứ được thiết lập và mã được tải lên, đèn LED sẽ sáng khi cảm biến PIR phát hiện chuyển động. Bạn có thể kiểm tra cảm biến bằng cách di chuyển trước nó; đèn LED sẽ bật ngay lập tức. Nếu cảm biến được cài đặt độ trễ, nó sẽ duy trì sáng trong khoảng thời gian đã chỉ định trước khi tắt lại (trong video ở phút 12:15).
Các lỗi thường gặp bao gồm đấu dây sai, có thể khiến cảm biến không hoạt động. Đảm bảo cảm biến PIR được cấp nguồn đúng cách và chân tín hiệu được kết nối với chân GPIO chính xác trên ESP32. Việc điều chỉnh các núm độ nhạy và độ trễ trên cảm biến PIR cũng có thể giúp tối ưu hóa hiệu suất dựa trên môi trường của bạn.
Mốc thời gian video
- 00:00 Bắt đầu
- 1:54 Giới thiệu về cảm biến PIR
- 6:38 Giải thích cách đấu dây
- 10:21 Giải thích mã Arduino
- 12:45 Chọn bo mạch ESP32 và cổng COM trong Arduino IDE
- 14:27 Trình diễn và hiệu chỉnh cảm biến 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
Tài nguyên & tài liệu tham khảo
Chưa có tài nguyên nào.
Tập tin📁
Bảng dữ liệu (pdf)
-
RE200B_PRI motion sensor datasheet
RE200B_PRI_datasheet.pdf0.02 MB -
BISS0001 motion sensor chip datasheet
BISS0001_datasheet.pdf0.16 MB
Các tập tin khác
-
Hướng dẫn sử dụng cảm biến chuyển động HC-SR501
robojax-HC-SR501-motion-manual.pdf0.83 MB