Search Code

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

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 RE 200B

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).

Sơ đồ ESP32-21_motion_sensor

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

ESP32-21_motion_sensor-wiring

Để đấ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

Hình ảnh

ESP32-21_motion_sensor-wiring
ESP32-21_motion_sensor-wiring
PIR SENSOR RE 200B
PIR SENSOR RE 200B
ESP32-21_motion_sensor-schematic
ESP32-21_motion_sensor-schematic
820-ESP32 Tutorial 21/55- Arduino code for motion sensor
Ngôn ngữ: C++
// 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);
  }
}

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)

Các tập tin khác