ESP32 Cảm biến chuyển động
Hướng dẫn này sẽ chỉ bạn cách sử dụng ESP32 với cảm biến chuyển động HC-SR501. Cụ thể, chúng ta sẽ học:
- Cách thức hoạt động của cảm biến chuyển động HC-SR501
- Cách kết nối cảm biến chuyển động HC-SR501 với ESP32
- Cách đọc giá trị từ cảm biến chuyển động HC-SR501 để phát hiện con người
Phần cứng cần thiết
| 1 | × | mô-đun phát triển ESP-WROOM-32 | ||
| 1 | × | Alternatively, ESP32 Uno-form board | ||
| 1 | × | Alternatively, ESP32 S3 Uno-form board | ||
| 1 | × | USB Cable Type-A to Type-C (for USB-A PC) | ||
| 1 | × | USB Cable Type-C to Type-C (for USB-C PC) | ||
| 1 | × | HC-SR501 Motion Sensor | ||
| 1 | × | Alternatively, AM312 Mini Motion Sensor | ||
| 1 | × | breadboard (bo mạch thí nghiệm) | ||
| 1 | × | dây jumper (dây jumper) | ||
| 1 | × | (Tùy chọn) DC Power Jack | ||
| 1 | × | (Khuyến nghị) Screw Terminal Expansion Board for ESP32 | ||
| 1 | × | (Khuyến nghị) Breakout Expansion Board for ESP32 | ||
| 1 | × | (Khuyến nghị) Power Splitter for ESP32 |
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | ||
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Về cảm biến chuyển động HC-SR501

Cảm biến PIR HC-SR501 là một cảm biến có thể phát hiện chuyển động của con người (hoặc động vật). Nó được sử dụng rộng rãi để phát hiện sự hiện diện của con người trong nhiều ứng dụng (tự động bật/tắt bóng đèn, kích hoạt/ngừng thang cuốn, phát hiện kẻ xâm nhập, mở/đóng cửa...)
Sơ đồ chân cảm biến chuyển động HC-SR501
Cảm biến chuyển động HC-SR501 có 3 chân:
- Chân VCC: kết nối chân này với VCC (5V)
- Chân GND: kết nối chân này với GND (0V)
- Chân OUTPUT: kết nối chân này với chân input của ESP32. Chân này xuất tín hiệu tương ứng với việc phát hiện chuyển động:
- LOW nếu không phát hiện chuyển động
- HIGH nếu phát hiện chuyển động
- Vật thể đang phát ra tia hồng ngoại
- Vật thể đang chuyển động hoặc rung động
- Nếu một vật thể đang phát ra tia hồng ngoại nhưng KHÔNG chuyển động (ví dụ: một người đứng yên không cử động), nó sẽ KHÔNG được cảm biến phát hiện.
- Nếu một vật thể đang chuyển động nhưng KHÔNG phát ra tia hồng ngoại (ví dụ: robot hoặc xe), nó sẽ KHÔNG được cảm biến phát hiện.
- Nếu phát hiện chuyển động, con người có mặt
- Nếu KHÔNG phát hiện chuyển động, con người KHÔNG có mặt
Ngoài ra còn có hai biến trở và một jumper trên cảm biến chuyển động HC-SR501. Các biến trở và jumper này được sử dụng để điều chỉnh cài đặt của cảm biến. Hướng dẫn chi tiết được mô tả trong phần Sử dụng nâng cao.

Cách thức hoạt động của cảm biến chuyển động HC-SR501
Nguyên lý hoạt động của cảm biến HC-SR501 dựa trên sự thay đổi của bức xạ hồng ngoại trên vật thể chuyển động. Để được phát hiện bởi cảm biến HC-SR501, vật thể phải đáp ứng hai yêu cầu:
Vì vậy:
Động vật và con người tự nhiên phát ra tia hồng ngoại. Do đó, động vật và con người có thể được cảm biến HC-SR501 phát hiện nếu họ đang chuyển động.
Video trên cho thấy nguyên lý hoạt động của cảm biến chuyển động. Trong thực tế, cảm biến chuyển động có thể hoạt động khác nhau tùy theo cài đặt của cảm biến (được mô tả trong phần Sử dụng nâng cao)
Phát hiện sự hiện diện của con người
Bản thân cảm biến KHÔNG trực tiếp phát hiện sự hiện diện của con người, cảm biến chỉ phát hiện chuyển động. Và sau đó sự hiện diện của con người được suy luận dựa trên việc phát hiện chuyển động:
Có một vấn đề với quy tắc này trong thực tế, con người có mặt trong phạm vi cảm biến nhưng KHÔNG chuyển động. Khi đó chuyển động KHÔNG được phát hiện. ESP32 (hoặc MCU) suy luận rằng con người KHÔNG có mặt.
Tuy nhiên, cảm biến được sử dụng rộng rãi để phát hiện con người trong nhiều ứng dụng vì vấn đề này KHÔNG nghiêm trọng và giá cảm biến rẻ.
ESP32 và cảm biến chuyển động HC-SR501
Khi một chân của ESP32 được cấu hình như một digital input, nó có thể đọc trạng thái (LOW hoặc HIGH) của bất cứ thứ gì được kết nối với nó.
Bằng cách kết nối chân ESP32 với chân OUTPUT của cảm biến HC-SR501, chúng ta có thể sử dụng code ESP32 để đọc giá trị của chân OUTPUT, và sau đó suy luận chuyển động.
Sơ đồ đấu nối giữa cảm biến chuyển động HC-SR501 và ESP32
- Cách kết nối ESP32 và cảm biến chuyển động sử dụng breadboard (cấp nguồn qua cáp USB)

This image is created using Fritzing. Click to enlarge image
Nếu bạn chưa rõ cách cấp nguồn cho ESP32 và các linh kiện khác, xem: Cách Cung Cấp Nguồn Điện Cho ESP32.
- Cách kết nối ESP32 và cảm biến chuyển động sử dụng breadboard (cấp nguồn qua chân Vin)

This image is created using Fritzing. Click to enlarge image
- Cách kết nối ESP32 và cảm biến chuyển động sử dụng screw terminal block breakout board (cấp nguồn qua cáp USB)

- Cách kết nối ESP32 và cảm biến chuyển động sử dụng screw terminal block breakout board (cấp nguồn qua chân Vin)

Cài đặt ban đầu
| Điều chỉnh phạm vi phát hiện | Vặn hoàn toàn theo chiều kim đồng hồ. |
| Điều chỉnh độ trễ thời gian | Vặn hoàn toàn ngược chiều kim đồng hồ. |
| Bộ chọn kích hoạt lặp lại | Đặt jumper như hình bên dưới. |

Cách lập trình cảm biến chuyển động
- Cấu hình một chân của ESP32 thành chế độ digital input bằng cách sử dụng hàm pinMode()
- Đọc trạng thái của chân OUTPUT của cảm biến bằng cách sử dụng hàm digitalRead().
- Phát hiện bắt đầu chuyển động (trạng thái chân thay đổi từ LOW sang HIGH)
- Phát hiện dừng chuyển động (trạng thái chân thay đổi từ HIGH sang LOW)
Code ESP32
Các bước nhanh
- Nếu đây là lần đầu bạn sử dụng ESP32, hãy xem ESP32 - Cài Đặt Phần Mềm.
- Sao chép code trên và dán vào Arduino IDE.
- Biên dịch và upload code lên board ESP32 bằng cách nhấn nút Upload trên Arduino IDE
- Mở Serial Monitor trên Arduino IDE

- Di chuyển tay bạn phía trước phạm vi cảm biến
- Xem kết quả trong Serial Monitor
Video Tutorial
Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.