ESP8266 Cảm biến chuyển động
Bạn đã bao giờ tự hỏi chính mình, “Làm sao nó có thể làm được điều đó?” khi bạn gặp những nơi có cửa tự động mở đóng, đèn bật và tắt, hoặc thang cuốn hoạt động mà không có sự can thiệp của con người? Nếu có, bài hướng dẫn này sẽ không chỉ trả lời câu hỏi của bạn mà còn cho bạn thấy làm thế nào để thực hiện điều đó bằng cách sử dụng ESP8266 và cảm biến chuyển động. Hãy bắt đầu nào!
Hướng dẫn này chỉ cho bạn cách sử dụng ESP8266 với cảm biến chuyển động. Cụ thể, chúng ta sẽ tìm hiểu:
- Cảm biến HC-SR501 hoạt động như thế nào
- Cách kết nối cảm biến HC-SR501 với ESP8266
- Cách lập trình ESP8266 để đọc trạng thái từ cảm biến HC-SR501
- Cách sử dụng ESP8266 và cảm biến HC-SR501 để phát hiện sự có mặt của con người và thực hiện hành động tương ứng
Phần cứng cần chuẩn bị
| 1 | × | ESP8266 NodeMCU ESP-12E | ||
| 1 | × | Recommended: ESP8266 NodeMCU ESP-12E (Uno-form) | ||
| 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 Expansion Board for ESP8266 | ||
| 1 | × | (Khuyến nghị) Power Splitter for ESP8266 Type-C |
Or you can buy the following kits:
| 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 mô-đun có thể nhận biết sự di chuyển của con người (hoặc động vật). Nó thường được sử dụng trong nhiều ứng dụng để phát hiện sự có mặt của con người, như tự động bật/tắt bóng đèn, mở/đóng cửa, kích hoạt/vô hiệu hóa thang cuốn, hoặc phát hiện kẻ xâm nhập.
Sơ đồ chân của cảm biến chuyển động
Cảm biến chuyển động HC-SR501 có ba chân:
- Chân GND: Điều này phải được nối tới GND (0V)
- Chân VCC: Điều này phải được nối tới VCC (5V)
- Chân OUTPUT: Đây là một chân đầu ra. Nó sẽ ở mức thấp khi không có chuyển động được phát hiện và ở mức cao khi có chuyển động được phát hiện. Chân này cần được kết nối với một chân đầu vào của ESP8266.
HC-SR501 có một jumper và hai biến trở được sử dụng để điều chỉnh các thiết lập của cảm biến.

Cách hoạt động
Cảm biến HC-SR501 có thể phát hiện chuyển động dựa trên sự thay đổi của bức xạ hồng ngoại phát ra từ một vật thể đang di chuyển. Để cảm biến HC-SR501 có thể nhận diện đối tượng, hai tiêu chí phải được đáp ứng:
- Đối tượng phải đang ở trạng thái chuyển động hoặc rung động
- Đối tượng phải phát ra bức xạ hồng ngoại
Do đó:
- Nếu một vật đang di chuyển nhưng không phát ra tia hồng ngoại (ví dụ: một robot hoặc xe đồ chơi), nó sẽ không được cảm biến phát hiện.
- Nếu một vật đang phát tia hồng ngoại nhưng không di chuyển (ví dụ: một người đứng yên), nó sẽ không được cảm biến phát hiện.
Con người và động vật là nguồn bức xạ hồng ngoại. Do đó, cảm biến có thể phát hiện các chuyển động của chúng.
Trạng thái của chân đầu ra của cảm biến:
- Khi không có con người (hoặc động vật) nào ở trong phạm vi được phát hiện, nó ở mức THẤP.
- Khi một con người (hoặc động vật) đi vào phạm vi được phát hiện, đầu ra sẽ chuyển từ THẤP sang CAO, cho thấy sự chuyển động được phát hiện.
- Khi con người (hoặc động vật) rời khỏi phạm vi được phát hiện, đầu ra sẽ chuyển từ CAO sang THẤP, cho thấy chuyển động đã dừng.
Video ở trên cho thấy cách cảm biến chuyển động hoạt động về lý thuyết. Trên thực tế, cảm biến chuyển động hoạt động hơi khác một chút tùy thuộc vào các cài đặt của cảm biến (điều này được nêu trong phần Các ứng dụng nâng cao).
Phát hiện sự hiện diện của con người
Cảm biến không phát hiện trực tiếp sự có mặt của con người. Nó chỉ phát hiện sự chuyển động. Chúng tôi sử dụng ESP8266 để suy ra liệu có mặt con người hay không dựa trên sự chuyển động được cảm biến phát hiện, theo quy tắc sau:
- Nếu phát hiện chuyển động, điều đó cho thấy có người hiện diện
- Nếu không phát hiện chuyển động, điều đó cho thấy không có người ở đó
Quy tắc này không hoàn hảo và sẽ không hoạt động trong trường hợp con người ở trong phạm vi cảm biến nhưng không di chuyển; sự chuyển động sẽ không được phát hiện và ESP8266 kết luận rằng con người không có mặt. Tuy nhiên, điều đó vẫn chấp nhận được vì con người thường có những động tác nhỏ.
Ví dụ, trong phòng họp của bạn, cảm biến chuyển động được dùng để bật và tắt đèn. Khi mọi người vào phòng, đèn sẽ tự động sáng lên. Tuy nhiên, nếu mọi người đều đứng yên trong cuộc họp, cảm biến sẽ không phát hiện bất kỳ chuyển động nào, cho thấy không có ai có mặt, và đèn sẽ bị tắt. Để bật đèn trở lại, ai đó cần di chuyển.
Tuy nhiên, vấn đề này không nghiêm trọng và cảm biến có giá rẻ. Do đó, nó được sử dụng rộng rãi để phát hiện con người trong nhiều ứng dụng.
ESP8266 - Cảm biến chuyển động HC-SR501
Nối chân đầu vào kỹ thuật số của Arduino với chân OUTPUT của cảm biến HC-SR501. Sử dụng mã ESP8266 để kiểm tra giá trị của chân OUTPUT nhằm phát hiện chuyển động.
Sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image
Xem thêm Sơ đồ chân ESP8266 và Cách cấp nguồn cho ESP8266.
Thiết lập ban đầu
| Time Delay Adjuster | Screw it in anti-clockwise direction fully. |
| Detection Range Adjuster | Screw it in clockwise direction fully. |
| Repeat Trigger Selector | Put jumper as shown on the image. |

Cách Lập Trình Cho Cảm Biến Chuyển Động
- Thiết lập đầu vào kỹ thuật số trên một chân của Arduino 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 hàm digitalRead().
- Xác định khi pin thay đổi từ LOW sang HIGH, cho thấy sự bắt đầu của chuyển động.
- Xác định khi chân chuyển từ trạng thái HIGH sang trạng thái LOW, cho thấy chuyển động đã dừng.
Mã ESP8266
Hướng dẫn từng bước
Để bắt đầu với ESP8266 trên Arduino IDE, hãy làm theo các bước sau:
- Xem ESP8266 - Cài đặt phần mềm nếu đây là lần đầu tiên bạn sử dụng ESP8266.
- Nối các linh kiện như được hiển thị trong sơ đồ.
- Kết nối bo mạch ESP8266 với máy tính của bạn bằng cáp USB.
- Mở Arduino IDE trên máy tính của bạn.
- Chọn bo mạch ESP8266 đúng, ví dụ như NodeMCU 1.0 (ESP-12E Module), và cổng COM tương ứng.
- Sao chép mã và mở nó bằng Arduino IDE.
- Nhấp nút Upload trong Arduino IDE để tải mã lên ESP8266.
- Mở Serial Monitor.
- Di chuyển tay trước phạm vi của cảm biến.
- Kiểm tra đầu ra 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.
Các cách sử dụng nâng cao
Như đã nêu trước đây, chúng ta có thể thay đổi cấu hình của cảm biến bằng cách sử dụng một jumper và hai biến trở.
Bộ điều chỉnh phạm vi phát hiện
Biến trở này được dùng để điều chỉnh khoảng cách mà vật thể có thể được phát hiện (khoảng 3 đến 7 mét):
- Nếu bạn xoay nó sang phải tối đa, nó chỉ có thể phát hiện những vật ở phạm vi 3 mét.
- Nếu bạn xoay nó sang trái tối đa, nó có thể phát hiện những vật ở khoảng cách lên tới 7 mét.

Điều chỉnh độ trễ thời gian
Biến trở này được sử dụng để điều chỉnh thời gian trễ:
- Khi xoay hoàn toàn theo chiều kim đồng hồ, độ trễ thời gian khoảng 5 phút.
- Khi xoay hoàn toàn ngược chiều kim đồng hồ, độ trễ thời gian khoảng 3 giây.
Phần tiếp theo giải thích khái niệm độ trễ thời gian kết hợp với Repeat Trigger.

Bộ chọn kích hoạt lặp lại
Có một jumper được dùng để chọn các chế độ kích hoạt: hoặc kích hoạt đơn, hoặc kích hoạt lặp lại.

Chúng ta hãy gọi thiết lập độ trễ thời gian (được thiết lập thông qua Time Delay Adjuster) là time_delay. Nếu bạn tiếp tục di chuyển trong phạm vi của cảm biến trong một thời gian dài (gọi là motion_time) (nhiều lần dài hơn time_delay):
- Chế độ kích hoạt một lần: Trạng thái của chân OUTPUT sẽ bị dao động giữa LOW và HIGH nhiều lần. Thời gian HIGH sẽ bằng với time_delay, trong khi thời gian LOW sẽ cố định ở 3 giây.

- Chế độ kích hoạt lặp lại: Trạng thái của chân OUTPUT sẽ duy trì ở mức HIGH trong suốt thời gian (motion_time cộng với time_delay).

Kiểm thử
- Chế độ kích hoạt đơn:
- Đặt jumper để chọn chế độ kích hoạt đơn
- Di chuyển tay bạn trước cảm biến trong khoảng 10 giây
- Đưa tay ra khỏi phạm vi cảm biến
- Chờ 3 giây và bạn sẽ thấy đầu ra trên Serial Monitor như sau:
- Đặt jumper để chọn chế độ kích hoạt có thể lặp lại
- Vẫy tay trước cảm biến trong vòng khoảng 10 giây
- Đưa tay ra khỏi phạm vi cảm biến
- Chờ 3 giây, bạn sẽ thấy đầu ra trên Serial Monitor như sau:
- Trên cảm biến chuyển động: thời gian tối thiểu là 3 giây và tối đa là 5 phút, được thực hiện thông qua Bộ điều chỉnh độ trễ thời gian.
- Trong mã ESP8266: có thể đặt bất kỳ giá trị nào, điều này được thực hiện bằng cách lập trình.
Chế độ kích hoạt lặp lại:
Chúng ta có thể nhận thấy rằng ở chế độ kích hoạt đơn, cảm biến kích hoạt hai hoặc ba lần. Trong khi ở chế độ kích hoạt lặp lại, nó chỉ kích hoạt một lần.
※ Lưu ý:
Trong thời gian LOW (3 giây), cố định và không thể điều chỉnh, cảm biến sẽ không thể phát hiện bất kỳ chuyển động nào. Điều này không gây ra bất kỳ vấn đề gì trong thực tế. Nên sử dụng chế độ kích hoạt lặp lại. Trong nhiều ứng dụng thực tế, chúng ta bật hoặc kích hoạt máy móc hoặc thiết bị khi có người hiện diện, và chúng ta không tắt hoặc vô hiệu hóa chúng ngay khi người đó không còn hiện diện nữa. Thay vào đó, chúng ta chờ một khoảng thời gian trước khi tắt chúng hoặc vô hiệu hóa chúng.
Cách Sử Dụng Độ Trễ Thời Gian
Nếu không phát hiện người nào, hệ thống tự động sẽ chờ một khoảng thời gian trước khi bắt đầu thực hiện hành động.
Độ trễ thời gian có thể được điều chỉnh trên cảm biến chuyển động và mã ESP8266:
Nếu chúng ta không chỉ định thời gian chờ trong mã ESP8266, thì giá trị thời gian chờ sẽ giống với độ trễ được cấu hình cho cảm biến.
Nếu chúng ta chỉ định một thời gian chờ trong mã ESP8266, tổng thời gian trễ sẽ là sự kết hợp giữa độ trễ được thiết lập cho cảm biến và độ trễ được chỉ định trong mã ESP8266.
Thiết lập độ trễ thời gian trong mã ESP8266
Nếu chế độ kích hoạt lặp lại được bật, độ trễ sẽ được đặt là 30 giây cộng với time_delay, có thể được điều chỉnh trong cài đặt của cảm biến bằng Bộ điều chỉnh thời gian trễ.
Thách thức bản thân
Sử dụng cảm biến chuyển động để hoàn thành một trong các dự án sau:
- Kích hoạt đèn khi bạn vào phòng và tắt chúng sau 30 giây kể từ khi bạn rời đi. Gợi ý: Xem ESP8266 - rơ-le.
- Kích hoạt chuông báo động khi có người tiếp cận những đồ vật có giá trị của bạn. Gợi ý: Tham khảo ESP8266 - Chuông Piezo.