- Cách chế tạo robot tránh chướng ngại vật bằng Cảm biến siêu âm
- Thành phần bắt buộc
- Sơ đồ mạch
- Robot tránh chướng ngại vật bằng Arduino - Mã
Robot tránh chướng ngại vật là một thiết bị thông minh có thể tự động cảm nhận chướng ngại vật phía trước và tránh chúng bằng cách tự quay sang hướng khác. Thiết kế này cho phép robot điều hướng trong một môi trường không xác định bằng cách tránh va chạm, đây là yêu cầu chính đối với bất kỳ robot di động tự động nào. Ứng dụng của robot tránh chướng ngại vật là không giới hạn và nó được sử dụng trong hầu hết các tổ chức quân sự hiện nay, giúp thực hiện nhiều công việc rủi ro mà không phải quân nhân nào cũng có thể làm được.
Trước đây, chúng tôi đã chế tạo Robot tránh chướng ngại vật bằng Raspberry Pi và sử dụng Vi điều khiển PIC. Lần này, chúng ta sẽ chế tạo một robot tránh chướng ngại vật bằng cách sử dụng cảm biến siêu âm và Arduino. Ở đây, một cảm biến siêu âm được sử dụng để cảm nhận các chướng ngại vật trên đường đi bằng cách tính toán khoảng cách giữa robot và chướng ngại vật. Nếu robot tìm thấy bất kỳ chướng ngại vật nào, nó sẽ thay đổi hướng và tiếp tục di chuyển.
Cách chế tạo robot tránh chướng ngại vật bằng Cảm biến siêu âm
Trước khi tiến hành chế tạo robot, cần hiểu rõ cách thức hoạt động của cảm biến siêu âm vì cảm biến này sẽ có vai trò quan trọng trong việc phát hiện chướng ngại vật. Nguyên tắc cơ bản đằng sau hoạt động của cảm biến siêu âm là ghi lại thời gian để cảm biến truyền chùm tia siêu âm và nhận chùm tia siêu âm sau khi đập vào bề mặt. Sau đó, khoảng cách xa hơn được tính bằng công thức. Trong dự án này, cảm biến siêu âm HC-SR04 được sử dụng rộng rãi. Để sử dụng cảm biến này, cách tiếp cận tương tự sẽ được giải thích ở trên.
Vì vậy, chân Trig của HC-SR04 được làm cao cho ít nhất 10 chúng tôi. Một chùm âm truyền 8 xung có tần số 40KHz.
Tín hiệu sau đó chạm vào bề mặt và quay trở lại và được ghi lại bởi chân Echo của máy thu HC-SR04. Pin Echo đã tăng cao tại thời điểm gửi cao.
Thời gian cần thiết để quay trở lại được lưu trong biến và được chuyển đổi thành khoảng cách bằng cách sử dụng các tính toán thích hợp như dưới đây
Khoảng cách = (Thời gian x Tốc độ âm thanh trong không khí (343 m / s)) / 2
Chúng tôi đã sử dụng cảm biến siêu âm trong nhiều dự án, để tìm hiểu thêm về cảm biến siêu âm, hãy kiểm tra các dự án khác liên quan đến cảm biến siêu âm.
Bạn có thể dễ dàng tìm thấy các thành phần của robot tránh chướng ngại vật này. Để làm khung xe, có thể sử dụng bất kỳ khung xe đồ chơi nào hoặc có thể tùy chỉnh.
Thành phần bắt buộc
- Arduino NANO hoặc Uno (bất kỳ phiên bản nào)
- Cảm biến siêu âm HC-SR04
- Mô-đun điều khiển động cơ LM298N
- Động cơ DC 5V
- Ắc quy
- Bánh xe
- Khung xe
- Dây nhảy
Sơ đồ mạch
Sơ đồ mạch hoàn chỉnh cho dự án này được đưa ra dưới đây, như bạn có thể thấy nó sử dụng Arduino nano. Nhưng chúng ta cũng có thể xây dựng một robot tránh chướng ngại vật bằng cách sử dụng Arduino UNO với cùng một mạch (theo cùng một sơ đồ chân) và mã.
Khi mạch điện đã sẵn sàng, chúng ta phải xây dựng chiếc xe tránh chướng ngại vật của mình bằng cách lắp ráp mạch điện trên đầu một khung robot như hình dưới đây.
Robot tránh chướng ngại vật bằng Arduino - Mã
Chương trình hoàn chỉnh với một video trình diễn được đưa ra ở cuối dự án này. Chương trình sẽ bao gồm thiết lập mô-đun HC-SR04 và xuất tín hiệu đến các Chân động cơ để di chuyển hướng động cơ cho phù hợp. Không có thư viện nào sẽ được sử dụng trong dự án này.
Đầu tiên xác định chân trig và echo của HC-SR04 trong chương trình. Trong dự án này, chân trig được kết nối với GPIO9 và chân echo được kết nối với GPIO10 của Arduino NANO.
int trigPin = 9; // chân trig của HC-SR04 int echoPin = 10; // Chân tiếng vọng của HC-SR04
Xác định các chân cho đầu vào của Mô-đun điều khiển động cơ LM298N. LM298N có 4 chân đầu vào dữ liệu được sử dụng để điều khiển hướng của động cơ kết nối với nó.
int revleft4 = 4; // Xem lại chuyển động của động cơ trái int fwdleft5 = 5; // Chuyển động ForWarD của động cơ Trái int revright6 = 6; // Xem lại chuyển động của động cơ phải int fwdright7 = 7; // Chuyển động ForWarD của động cơ phải
Trong hàm setup () , xác định hướng dữ liệu của các chân GPIO được sử dụng. Bốn chân Motor và chân Trig được đặt làm OUTPUT và Echo Pin được đặt làm Đầu vào.
pinMode (revleft4, OUTPUT); // đặt các chân của Motor là pinMode đầu ra (fwdleft5, OUTPUT); pinMode (revright6, OUTPUT); pinMode (fwdright7, OUTPUT); pinMode (trigPin, OUTPUT); // đặt chân trig làm mã pin đầu ra (echoPin, INPUT); // đặt chân echo làm đầu vào để bắt sóng phản xạ
Trong hàm loop () , lấy khoảng cách từ HC-SR04 và dựa trên khoảng cách di chuyển hướng động cơ. Khoảng cách sẽ hiển thị khoảng cách đối tượng đến trước mặt robot. Khoảng cách được thực hiện bằng cách bùng nổ một chùm sóng siêu âm lên đến 10 us và nhận nó sau 10us. Để tìm hiểu thêm về cách đo khoảng cách bằng cảm biến siêu âm và Arduino, hãy theo liên kết.
digitalWrite (trigPin, LOW); delayMicroseconds (2); digitalWrite (trigPin, HIGH); // gửi wave cho 10 chúng tôi delayMicroseconds (10); thời lượng = xungIn (echoPin, CAO); // nhận sóng phản xạ khoảng cách = thời lượng / 58.2; // chuyển thành độ trễ khoảng cách (10);
Nếu khoảng cách lớn hơn khoảng cách xác định có nghĩa là không có chướng ngại vật trên đường đi của nó và nó sẽ di chuyển theo hướng về phía trước.
if (khoảng cách> 19) { digitalWrite (fwdright7, HIGH); // chuyển tiếp digitalWrite (revright6, LOW); digitalWrite (fwdleft5, HIGH); digitalWrite (revleft4, LOW); }
Nếu khoảng cách nhỏ hơn khoảng cách xác định để tránh chướng ngại vật nghĩa là có chướng ngại vật nào đó phía trước. Vì vậy, trong tình huống này, robot sẽ dừng lại một lúc và quay ngược lại sau đó lại dừng một lúc rồi rẽ sang hướng khác.
if (khoảng cách <18) { digitalWrite (fwdright7, LOW); // Dừng digitalWrite (revright6, LOW); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, LOW); chậm trễ (500); digitalWrite (fwdright7, LOW); // movebackword digitalWrite (revright6, HIGH); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, HIGH); chậm trễ (500); digitalWrite (fwdright7, LOW); // Dừng digitalWrite (revright6, LOW); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, LOW); chậm trễ (100); digitalWrite (fwdright7, HIGH); digitalWrite (revright6, LOW); digitalWrite (revleft4, LOW); digitalWrite (fwdleft5, LOW); chậm trễ (500); }
Vì vậy, đây là cách một robot có thể tránh chướng ngại vật trên đường đi của nó mà không bị mắc kẹt ở đâu. Tìm mã hoàn chỉnh và video bên dưới.