Trong hướng dẫn này, chúng ta sẽ học cách sử dụng cảm biến tránh vật cản hồng ngoại với mô-đun ESP32 để phát hiện vật cản. Dự án này sẽ minh họa cách cảm biến có thể kích hoạt còi khi phát hiện vật cản. Thiết lập cũng sẽ hiển thị trạng thái phát hiện trên màn hình nối tiếp, cung cấp một cách rõ ràng và tương tác để quan sát chức năng của cảm biến.
Chúng ta sẽ làm việc với Bộ học IoT ESP32 của SunFounder, bao gồm vi điều khiển ESP32 được trang bị khả năng Wi-Fi và Bluetooth. Cảm biến hồng ngoại hoạt động bằng cách phát ra ánh sáng hồng ngoại, ánh sáng này sẽ phản xạ lại từ các vật cản gần đó. Khi ánh sáng được phản xạ trở lại, cảm biến sẽ kích hoạt tín hiệu đầu ra mà chúng ta sẽ đọc trong mã. Chúng ta cũng sẽ bao gồm một còi kích hoạt khi phát hiện vật cản, cung cấp cảnh báo âm thanh.
Giải thích phần cứng
Các thành phần chính của dự án này bao gồm mô-đun ESP32, cảm biến tránh vật cản hồng ngoại và còi. Mô-đun ESP32 đóng vai trò là bộ xử lý trung tâm, xử lý đầu vào cảm biến và điều khiển đầu ra. Nó có thể được cấp nguồn bằng pin lithium, giúp nó di động và linh hoạt cho nhiều ứng dụng khác nhau.
Cảm biến tránh vật cản hồng ngoại bao gồm một bộ phát và một bộ thu. Bộ phát phát ra ánh sáng hồng ngoại, trong khi bộ thu phát hiện ánh sáng phản xạ từ các vật thể gần đó. Khi có vật cản, chân đầu ra của cảm biến chuyển xuống mức thấp, báo hiệu ESP32 thực hiện hành động, chẳng hạn như bật còi.
Chi tiết bảng dữ liệu
Nhà sản xuất
SunFounder
Số bộ phận
Cảm biến tránh vật cản hồng ngoại
Điện áp hoạt động
3,3 V - 5 V
Loại đầu ra
Kỹ thuật số (Mức thấp khi phát hiện vật cản)
Phạm vi phát hiện
Lên đến 20 cm
Thời gian phản hồi
Dưới 10 ms
Đóng gói
Mô-đun
Nguồn điện: 3,3 V đến 5 V để hoạt động.
Tín hiệu đầu ra chuyển xuống mức thấp khi phát hiện vật cản.
Độ nhạy có thể điều chỉnh qua chiết áp.
Phạm vi phát hiện điển hình lên đến 20 cm.
Thời gian phản hồi nhanh dưới 10 ms.
Hướng dẫn đấu dây
ESP32-19-obstacle_voide-wiring
Để đấu dây cảm biến tránh vật cản hồng ngoại với ESP32, bắt đầu bằng cách kết nối chân VCC của cảm biến với chân 5V trên ESP32. Tiếp theo, kết nối chân GND của cảm biến với một trong các chân GND trên ESP32. Cuối cùng, kết nối chân OUT của cảm biến với chân GPIO 14 trên ESP32.
Đối với còi, kết nối cực âm với GND và cực dương với chân GPIO 27. Đảm bảo tất cả các kết nối an toàn và cảm biến được cấp nguồn chính xác. Việc đấu dây phải đơn giản, vì cảm biến và còi chỉ yêu cầu kết nối nguồn và tín hiệu đơn giản.
Ví dụ mã & hướng dẫn chi tiết
Trong mã, trước tiên chúng ta định nghĩa chân kết nối với cảm biến tránh vật cản. Điều này được thực hiện bằng cách sử dụng định danh avoidPin được đặt thành 14. Chúng ta cũng khai báo một biến avoidState để giữ trạng thái đầu ra của cảm biến.
const int avoidPin = 14; // số của chân mô-đun tránh vật cản
int avoidState = 0;
Trong hàm setup, chúng ta khởi tạo giao tiếp nối tiếp và đặt avoidPin làm đầu vào. Điều này cho phép ESP32 đọc trạng thái đầu ra của cảm biến.
Trong hàm loop, chúng ta liên tục đọc đầu ra của cảm biến bằng digitalRead(avoidPin) và lưu kết quả vào avoidState. Giá trị này sau đó được in ra màn hình nối tiếp, cho phép chúng ta thấy khi phát hiện vật cản (đầu ra sẽ là 0) hoặc không (đầu ra sẽ là 1).
Đối với mã đầy đủ, vui lòng tham khảo phần tải xuống bên dưới bài viết.
Trình diễn / Điều gì sẽ xảy ra
Khi thiết lập hoàn tất và mã được tải lên, bạn sẽ thấy màn hình nối tiếp hiển thị 0 hoặc 1 tùy thuộc vào việc có vật cản được phát hiện hay không. Khi có vật cản trong phạm vi phát hiện, đầu ra sẽ đọc là 0 và còi sẽ kêu. Nếu vật cản được loại bỏ, đầu ra sẽ đọc là 1 và còi sẽ dừng. Chức năng này được trình diễn trong video (trong video tại 12:30).
Các vấn đề phổ biến có thể bao gồm đấu dây sai, có thể dẫn đến cảm biến không hoạt động đúng, hoặc tốc độ baud không khớp trong màn hình nối tiếp, ngăn dữ liệu hiển thị chính xác. Hãy đảm bảo kiểm tra các khía cạnh này nếu bạn gặp sự cố.
818-ESP32 Tutorial 19/55- Arduino code for obstacle avoidance module
Ngôn ngữ: C++
// set pin
const int avoidPin = 14; // the number of the avoid avoid module pin
// variable for storing the avoid status
int avoidState = 0;
void setup() {
Serial.begin(115200);
// initialize the avoid pin as an input
pinMode(avoidPin, INPUT);
}
void loop() {
// read the state of the avoid value
avoidState = digitalRead(avoidPin);
Serial.println(avoidState);
}