Bài 25/31: Xe thông minh Car-3 tránh chướng ngại vật bằng cảm biến hồng ngoại | SunFounder Robojax
Dự án này biến chiếc xe thông minh SunFounder 3-trong-1 Arduino của bạn thành một chiếc xe tự hành tránh chướng ngại vật. Bằng cách gắn hai cảm biến hồng ngoại (IR)—một ở bên trái và một ở bên phải—xe có thể phát hiện vật cản trên đường đi và đưa ra quyết định trong tích tắc để đánh lái tránh chúng. Đây là một bước cơ bản trong lĩnh vực robot, dạy bạn cách kết hợp đầu vào từ cảm biến với logic điều khiển động cơ để tạo ra một cỗ máy tự lái có khả năng phản ứng. Các nguyên tắc bạn học ở đây áp dụng cho nhiều ứng dụng thực tế, bao gồm:
- Chế tạo robot hút bụi có thể di chuyển trong phòng mà không va vào đồ đạc.
- Tạo robot dò đường hoặc giải mê cung cho các cuộc thi hoặc dự án giáo dục.
- Phát triển robot tuần tra an ninh tự động có thể di chuyển quanh một khu vực và tránh tường.
- Thiết kế xe đồ chơi thông minh có thể chơi độc lập mà không bị kẹt.
Hướng dẫn này được xây dựng trực tiếp dựa trên các bài học trước, nơi bạn đã học cách điều khiển động cơ của xe và hiểu cách hoạt động của cảm biến IR. Ở đây, chúng ta sẽ kết hợp các kỹ năng đó để triển khai một thuật toán tránh chướng ngại vật đơn giản nhưng hiệu quả.
Cách Hoạt Động của Logic Tránh Chướng Ngại Vật
Ý tưởng cốt lõi rất đơn giản: xe sử dụng hai cảm biến IR để kiểm tra chướng ngại vật ở bên trái và bên phải. Mỗi cảm biến xuất ra tín hiệu số: LOW (0) khi phát hiện vật thể trong phạm vi (khoảng 20 cm) và HIGH (1) khi đường đi thông thoáng. Logic sau đó xác định hành động của xe dựa trên trạng thái của cảm biến (trong video ở phút 02:35):
- Chướng ngại vật bên trái, bên phải thông thoáng: Xe rẽ phải để tránh.
- Chướng ngại vật bên phải, bên trái thông thoáng: Xe rẽ trái.
- Chướng ngại vật ở cả hai bên: Xe lùi lại để thoát khỏi ngõ cụt tiềm ẩn.
- Không có chướng ngại vật: Xe tiến về phía trước.
Cách tiếp cận phản ứng này là một ví dụ kinh điển về máy trạng thái hữu hạn, trong đó hành vi của xe là phản ứng trực tiếp với các đầu vào hiện tại từ cảm biến.
Linh Kiện Phần Cứng
Để hoàn thành dự án này, bạn sẽ cần các linh kiện sau, tất cả đều có trong bộ kit SunFounder 3-trong-1 Arduino:
- 1x Bộ kit xe thông minh SunFounder 3-trong-1 Arduino (hoặc các bộ phận tương đương)
- 2x Cảm biến tránh chướng ngại vật hồng ngoại
- 1x Arduino Uno (hoặc bo mạch tương thích)
- 1x Shield/Bo mạch điều khiển động cơ
- Dây nối
Hướng Dẫn Đấu Dây
Việc căn chỉnh cảm biến đúng cách là rất quan trọng để dự án này hoạt động. Các cảm biến IR phải được căn chỉnh hướng về phía trước và hơi chếch ra ngoài, vì chúng sẽ phát hiện chướng ngại vật ở hai bên xe (trong video ở phút 02:07). Sơ đồ đấu dây sau đây cho thấy cách kết nối các cảm biến với Arduino. Xin lưu ý rằng giảng viên đã sử dụng một điểm phân phối điện cụ thể trên breadboard của xe, nhưng các kết nối đến Arduino mới là điều quan trọng.
Các kết nối đấu dây như sau (trong video ở phút 03:47):
- Nguồn (VCC): Kết nối chân VCC của cả hai cảm biến IR với đầu ra 5V trên Arduino hoặc thanh nguồn của xe.
- Mass (GND): Kết nối chân GND của cả hai cảm biến IR với một điểm mass chung trên Arduino hoặc thanh mass của xe.
- Đầu ra cảm biến bên phải (OUT): Kết nối chân đầu ra kỹ thuật số của cảm biến IR bên phải với chân kỹ thuật số 7 trên Arduino.
- Đầu ra cảm biến bên trái (OUT): Kết nối chân đầu ra kỹ thuật số của cảm biến IR bên trái với chân kỹ thuật số 8 trên Arduino.
Các kết nối của bộ điều khiển động cơ cho động cơ bên trái và bên phải giống như các kết nối đã thiết lập trong bài học trước về điều khiển động cơ.
Giải Thích Mã
Mã cho dự án này khá đơn giản. Chương trình chính có thể tải xuống bên dưới bài viết. Ở đây, chúng ta sẽ tập trung vào các phần có thể cấu hình mà bạn có thể điều chỉnh cho chiếc xe của riêng mình.
const int A_1B = 5;
const int A_1A = 6;
const int B_1B = 9;
const int B_1A = 10;
const int rightIR = 7;
const int leftIR = 8;
Các dòng này định nghĩa các chân được sử dụng cho bộ điều khiển động cơ và các cảm biến IR. Các chân động cơ (A_1B, A_1A, B_1B, B_1A) điều khiển tốc độ và hướng của hai động cơ. Các chân rightIR và leftIR là nơi bạn kết nối dây tín hiệu từ cảm biến của mình. Nếu bạn sử dụng các chân khác, bạn sẽ thay đổi các giá trị này ở đây.
int speed = 150;
Biến này đặt tốc độ cơ bản cho xe. Giá trị có thể nằm trong khoảng từ 0 đến 255, trong đó 255 là tốc độ tối đa. Giá trị 150 là điểm khởi đầu tốt cho việc học, vì nó đủ nhanh để thú vị nhưng đủ chậm để có thời gian phản ứng (trong video ở phút 07:10). Bạn có thể điều chỉnh giá trị này để làm cho xe nhanh hơn hoặc chậm hơn.
Phần còn lại của mã xác định logic trong hàm loop(). Nó đọc trạng thái của cảm biến trái và phải, sau đó gọi hàm chuyển động thích hợp (moveForward(), moveBackward(), backLeft(), backRight()). Các hàm này được định nghĩa trước và điều khiển driver động cơ để đạt được chuyển động mong muốn. Giảng viên cũng đã thêm hàm stop() trong một lần sửa đổi sau đó để tạm dừng xe trong một khoảng thời gian ngắn sau khi thực hiện thao tác tránh vật cản, giúp chuyển động của xe có chủ đích hơn (trong video tại 10:29).
Trình Diễn Dự Án Trực Tiếp
Trong video, giảng viên đầu tiên trình diễn logic bằng Serial Monitor. Bằng cách đặt một chiếc hộp gần các cảm biến, bạn có thể thấy các thông báo tương ứng như "Go Left", "Go Right" hoặc "Go Backward" xuất hiện trên màn hình, xác nhận rằng các chỉ số cảm biến và logic là chính xác (trong video tại 09:11).
Sau khi xác minh logic, giảng viên thêm một cải tiến quan trọng: hàm stop(). Hàm này đưa xe đến trạng thái dừng hoàn toàn trong một khoảng thời gian xác định (ví dụ: 1 giây) sau khi xe thực hiện quay đầu hoặc lùi, ngăn chặn các chuyển động giật cục và cho phép xe đánh giá lại môi trường xung quanh (trong video tại 10:29).
Cuối cùng, xe được thử nghiệm trên sàn với một loạt chướng ngại vật. Video cho thấy xe di chuyển thành công quanh các hộp, rẽ trái, rẽ phải và lùi khi cần thiết để tìm đường đi rõ ràng, chứng minh ứng dụng thực tế của thuật toán tránh vật cản này (trong video tại 12:13).
Các Chương
- [00:00] Giới thiệu về Tránh Vật Cản với Cảm Biến Hồng Ngoại
- [01:24] Điều Kiện Tiên Quyết và Tổng Quan Dự Án
- [02:35] Cách Hoạt Động của Logic Tránh Vật Cản
- [03:47] Đấu Dây Cảm Biến Hồng Ngoại và Động Cơ
- [05:40] Mở và Giải Thích Mã
- [09:11] Kiểm Tra Logic với Serial Monitor
- [10:29] Thêm Hàm Dừng để Điều Hướng Mượt Mà Hơn
- [11:42] Kiểm Tra Hàm Dừng
- [12:13] Bài Kiểm Tra Thực Tế Cuối Cùng trên Sàn
This code has not been parsed yet. Please return to the admin panel to parse it.
Common Course Links
Common Course Files
Tài nguyên & tài liệu tham khảo
-
Tài liệuDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kit¶docs.sunfounder.com
-
Bên ngoàiPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Tập tin📁
Thư viện Arduino (tệp nén)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB