Arduino UNO R4 Cảm Biến Chuyển Động
Hướng dẫn này sẽ chỉ bạn cách sử dụng cảm biến chuyển động HC-SR501 và Arduino UNO R4 để phát hiện con người. Cụ thể, chúng ta sẽ học:
- Cách 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 Arduino UNO R4
- Cách lập trình Arduino UNO R4 để đọc thông tin từ cảm biến chuyển động HC-SR501
- Cách sử dụng Arduino UNO R4 và cảm biến chuyển động để phát hiện sự xuất hiện của con người

Linh Kiện Cần Thiết
| 1 | × | Arduino UNO R4 WiFi hoặc Arduino UNO R4 Minima | ||
| 1 | × | (Tùy chọn) DIYables STEM V4 IoT, tương thích với Arduino Uno R4 WiFi | ||
| 1 | × | Arduino UNO R4 Minima (Thay thế) | ||
| 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 | × | dây jumper | ||
| 1 | × | (Khuyến nghị) Screw Terminal Block Shield for Arduino UNO R4 | ||
| 1 | × | (Khuyến nghị) Breadboard Shield for Arduino UNO R4 | ||
| 1 | × | (Khuyến nghị) Enclosure for Arduino UNO R4 | ||
| 1 | × | (Khuyến nghị) Power Splitter for Arduino UNO R4 | ||
| 1 | × | (Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO |
Or you can buy the following kits:
| 1 | × | DIYables STEM V4 IoT Starter Kit (Arduino 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 phát hiện chuyển động của con người hoặc động vật. Nó thường được sử dụng trong nhiều ứng dụng khác nhau như bật tắt đèn, mở đóng cửa, vận hành thang cuốn, và phát hiện kẻ xâm nhập.
Khi bạn đến những nơi có cửa tự động mở đóng, đèn bật tắt tự động, hoặc thang cuốn tự khởi động, bạn có bao giờ thắc mắc "Điều này hoạt động như thế nào?" không? Nếu có, hướng dẫn này không chỉ giải thích cách thức hoạt động mà còn chỉ bạn cách tự tạo ra nó. Hãy bắt đầu!
Sơ Đồ Chân
Cảm biến chuyển động HC-SR501 có ba chân:
- Chân GND: kết nối với GND (0V)
- Chân VCC: kết nối với VCC (5V)
- Chân OUTPUT: gửi tín hiệu LOW khi không có chuyển động, HIGH khi có chuyển động. Kết nối chân này với chân input của Arduino UNO R4.
HC-SR501 bao gồm một jumper và hai biến trở, giúp điều chỉnh cài đặt của cảm biến. Bắt đầu với cài đặt mặc định. Bạn có thể tìm thông tin chi tiết hơn trong phần "Sử Dụng Nâng Cao". Sử Dụng Nâng Cao

Cách Hoạt Động
Cảm biến HC-SR501 cảm nhận chuyển động bằng cách ghi nhận những thay đổi trong ánh sáng hồng ngoại từ vật thể di chuyển. Để cảm biến HC-SR501 có thể phát hiện một vật thể, nó phải thỏa mãn hai điều kiện:
- đang rung chuyển hoặc di chuyển
- đang phát ra năng lượng hồng ngoại.
Do đó:
- Nếu một vật thể di chuyển mà không phát ra tia hồng ngoại (như robot hoặc xe đồ chơi), cảm biến sẽ không phát hiện được.
- Nếu một vật thể phát ra tia hồng ngoại nhưng không di chuyển (như một người đứng yên), cảm biến sẽ không phát hiện được.
Con người và động vật tự nhiên phát ra hồng ngoại. Vì điều này, cảm biến có thể cảm nhận khi con người và động vật di chuyển.
Trạng thái của chân OUTPUT:
- Nếu không có người hoặc động vật nào di chuyển trong phạm vi của cảm biến, chân OUTPUT của cảm biến ở mức LOW.
- Nếu một người hoặc động vật bước vào phạm vi của cảm biến, chân OUTPUT thay đổi từ LOW sang HIGH, báo hiệu phát hiện chuyển động.
- Nếu một người hoặc động vật rời khỏi phạm vi của cảm biến, chân OUTPUT thay đổi từ HIGH sang LOW, báo hiệu kết thúc chuyển động.
Video cho thấy ý tưởng cơ bản về cách hoạt động của cảm biến chuyển động. Trong các tình huống thực tế, cách thức hoạt động có thể thay đổi một chút dựa trên cài đặt của nó, như được giải thích trong phần Sử Dụng Nâng Cao.
Arduino UNO R4 - Cảm Biến Chuyển Động HC-SR501
Khi bạn cài đặt một chân trên Arduino UNO R4 làm digital input, nó có thể phát hiện xem linh kiện được kết nối đang ở trạng thái LOW hay HIGH.
Kết nối chân của Arduino UNO R4 với chân OUTPUT của cảm biến HC-SR501. Sau đó, sử dụng code Arduino UNO R4 để đọc giá trị của chân OUTPUT để phát hiện chuyển động.
Sơ Đồ Đấu Nối

This image is created using Fritzing. Click to enlarge image
Cài Đặt Ban Đầu
| Biến Trở Điều Chỉnh Thời Gian | Vặn hoàn toàn theo chiều ngược kim đồng hồ. |
| Biến Trở Điều Chỉnh Phạm Vi | Vặn hoàn toàn theo chiều kim đồng hồ. |
| Jumper Chọn Chế Độ Trigger | Đặt jumper như hình. |

Cách Lập Trình Cho Cảm Biến Chuyển Động
- Cài đặt chân Arduino UNO R4 thành chế độ digital input bằng hàm pinMode().
- Sử dụng hàm digitalRead() để kiểm tra trạng thái của chân OUTPUT của cảm biến.
- Phát hiện khi chuyển động bắt đầu (chân thay đổi trạng thái từ LOW sang HIGH).
- Phát hiện khi chuyển động dừng (trạng thái của chân thay đổi từ HIGH sang LOW).
Code Arduino UNO R4
Các Bước Thực Hiện
Làm theo các hướng dẫn từng bước sau:
- Nếu đây là lần đầu tiên bạn sử dụng Arduino Uno R4 WiFi/Minima, hãy tham khảo hướng dẫn về Arduino UNO R4 - Cài Đặt Phần Mềm.
- Đấu nối các linh kiện theo sơ đồ được cung cấp.
- Kết nối board Arduino Uno R4 với máy tính của bạn bằng cáp USB.
- Khởi động Arduino IDE trên máy tính.
- Chọn board Arduino Uno R4 thích hợp (ví dụ: Arduino Uno R4 WiFi) và cổng COM.
- Sao chép code ở trên và mở bằng Arduino IDE
- Nhấn nút Upload trong Arduino IDE để upload code lên Arduino UNO R4
- Mở Serial Monitor
- Di chuyển tay của bạn trước mặt cảm biến
- Kiểm tra kết quả trên 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.
Sử Dụng Nâng Cao
Chúng ta có thể điều chỉnh cài đặt của cảm biến bằng một jumper và hai biến trở, như đã mô tả ở trên.
Biến Trở Điều Chỉnh Phạm Vi Phát Hiện
Biến trở này điều chỉnh khoảng cách phát hiện (khoảng 3 mét đến 7 mét).
- Khi vặn hoàn toàn theo chiều kim đồng hồ, phạm vi phát hiện khoảng 3 mét.
- Khi vặn hoàn toàn ngược chiều kim đồng hồ, phạm vi phát hiện khoảng 7 mét.

Chúng ta có thể thay đổi cài đặt biến trở để có được phạm vi mong muốn, từ 3 mét đến 7 mét.
Biến Trở Điều Chỉnh Thời Gian Trễ
Biến trở này điều chỉnh thời gian trễ.
- Nếu bạn vặn hoàn toàn theo chiều kim đồng hồ, thời gian trễ sẽ khoảng 5 phút.
- Nếu bạn vặn hoàn toàn ngược chiều kim đồng hồ, thời gian trễ sẽ khoảng 3 giây.
Tiếp theo, chúng ta sẽ giải thích ý nghĩa của thời gian trễ và mối quan hệ của nó với Repeat Trigger.

Jumper Chọn Chế Độ Trigger
Jumper này cho phép bạn chọn chế độ trigger: single trigger hoặc repeatable trigger.

Chúng ta sẽ gọi cài đặt thời gian trễ (được điều chỉnh bởi Time Delay Adjuster) là time_delay. Hãy tưởng tượng bạn tiếp tục di chuyển trong vùng phát hiện của cảm biến trong một khoảng thời gian đáng kể, chúng ta sẽ gọi là motion_time (dài hơn nhiều so với time_delay).
- Trong chế độ single trigger, chân OUTPUT chuyển đổi giữa LOW và HIGH nhiều lần. Nó giữ ở mức HIGH trong khoảng thời gian bằng "time_delay" và LOW trong thời gian cố định là 3 giây.

- Chân OUTPUT giữ ở mức HIGH trong suốt thời gian chuyển động cộng với thời gian trễ.

Kiểm Tra
Hãy kiểm tra các chế độ trigger. Vặn Time Delay Adjuster hoàn toàn sang trái để đặt thời gian trễ là 3 giây.
- Chế Độ Single Trigger:
- Đặt jumper để chọn chế độ single trigger.
- Vẫy tay trước mặt cảm biến liên tục trong 10 giây.
- Rút tay khỏi phạm vi của cảm biến.
- Đợi 3 giây; sau đó kiểm tra serial monitor để xem kết quả như hình.
- Chế Độ Repeatable Trigger:
- Đặt jumper để kích hoạt chế độ Repeatable Trigger.
- Di chuyển tay liên tục trước mặt cảm biến khoảng 10 giây.
- Rút tay khỏi phạm vi của cảm biến.
- Sau khi đợi 3 giây, kiểm tra serial monitor để xem kết quả.
- Các thiết bị hoặc máy móc thường được bật khi phát hiện có người ở gần.
- Các thiết bị hoặc máy móc không được tắt ngay khi người rời đi. Chúng được tắt sau một khoảng thời gian trễ nhất định.
Trong chế độ single trigger, cảm biến kích hoạt hai hoặc ba lần. Trong chế độ repeatable trigger, nó chỉ kích hoạt một lần.
※ Lưu ý:
Trong khoảng thời gian LOW kéi dài 3 giây, cảm biến không thể phát hiện bất kỳ chuyển động nào. Điều này có nghĩa là cảm biến không hoạt động trong thời gian này, nhưng điều này thường không gây ra vấn đề gì.
Khuyến nghị sử dụng chế độ repeatable trigger.
Trong các ứng dụng thực tế: