Mục lục:

Xe rô bốt tránh chướng ngại vật: 9 bước
Xe rô bốt tránh chướng ngại vật: 9 bước

Video: Xe rô bốt tránh chướng ngại vật: 9 bước

Video: Xe rô bốt tránh chướng ngại vật: 9 bước
Video: Chế Xe Robot Tránh Chướng Ngại Vật Với Arduino Uno R3 2024, Tháng bảy
Anonim
Xe rô bốt tránh chướng ngại vật
Xe rô bốt tránh chướng ngại vật
Xe rô bốt tránh chướng ngại vật
Xe rô bốt tránh chướng ngại vật

Cách xây dựng một robot tránh chướng ngại vật

Bước 1: Hộp đen

Hộp đen
Hộp đen

bước đầu tiên tôi sử dụng hộp đen làm cơ sở cho rô bốt của mình.

Bước 2: Arduino

Arduino
Arduino

Arduino là bộ não của toàn bộ hệ thống và điều phối động cơ của chúng ta

Bước 3: Gắn Arduino vào hộp đen

Gắn Arduino vào hộp đen
Gắn Arduino vào hộp đen

Tôi đã gắn arduino vào hộp đen bằng keo nóng

Bước 4: Cảm biến siêu âm

Thiết bị cảm biến sóng siêu âm
Thiết bị cảm biến sóng siêu âm

Để tạo ra một robot có thể tự di chuyển, chúng ta cần một số loại đầu vào, một cảm biến phù hợp với mục tiêu của chúng ta. Cảm biến siêu âm là một công cụ đo khoảng cách đến một vật thể bằng sóng âm siêu âm. Cảm biến siêu âm sử dụng một bộ chuyển đổi để gửi và nhận các xung siêu âm để chuyển tiếp thông tin về khoảng cách gần của một đối tượng

Bước 5: Kết nối Breadboard của Cảm biến với Arduino

Kết nối Breadboard của Cảm biến với Arduino
Kết nối Breadboard của Cảm biến với Arduino
Kết nối Breadboard của Cảm biến với Arduino
Kết nối Breadboard của Cảm biến với Arduino

Tôi đã sử dụng dây để nối kết nối giữa breadboard và arduino.

Hãy chú ý rằng cảm biến ping của bạn có thể có cách bố trí chân khác nhưng nó phải có chân điện áp, chân nối đất, chân trig và chân echo.

Bước 6: Tấm chắn động cơ

Tấm chắn động cơ
Tấm chắn động cơ

Bo mạch Arduino không thể tự điều khiển động cơ một chiều do dòng điện chúng tạo ra quá thấp. Để giải quyết vấn đề này, chúng tôi sử dụng lá chắn động cơ. động cơ bước. … Bằng cách định địa chỉ các chân này, bạn có thể chọn một kênh động cơ để bắt đầu, chỉ định hướng động cơ (cực tính), đặt tốc độ động cơ (PWM), dừng và khởi động động cơ và theo dõi sự hấp thụ hiện tại của mỗi kênh

Bước 7: Kết nối Motor Shield với Arduino

Kết nối Motor Shield với Arduino
Kết nối Motor Shield với Arduino

Đơn giản chỉ cần gắn tấm chắn động cơ vào arduino bằng các dây cảm biến được quấn vào

Bước 8: Kết nối 4 động cơ và pin với lá chắn

Kết nối 4 động cơ và pin với lá chắn
Kết nối 4 động cơ và pin với lá chắn

Mỗi Tấm chắn động cơ có (ít nhất) hai kênh, một cho động cơ và một cho nguồn điện, Hãy kết nối chúng với nhau

Bước 9: Lập trình Robot

chạy mã này

#include #include

Sonar NewPing (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DCMotor động cơ1 (1, MOTOR12_1KHZ); AF_DCMotor động cơ2 (2, MOTOR12_1KHZ); AF_DCMotor động cơ3 (3, MOTOR34_1KHZ); AF_DCMotor động cơ4 (4, MOTOR34_1KHZ); Servo myservo;

# xác định TRIG_PIN A2 # xác định ECHO_PIN A3 # xác định MAX_DISTANCE 150 # xác định MAX_SPEED 100 # xác định MAX_SPEED_OFFSET 10

boolean goForward = false; int khoảng cách = 80; int speedSet = 0;

void setup () {

myservo.attach (10); myservo.write (115); chậm trễ (2000); khoảng cách = readPing (); chậm trễ (100); khoảng cách = readPing (); chậm trễ (100); khoảng cách = readPing (); chậm trễ (100); khoảng cách = readPing (); chậm trễ (100); }

void loop () {int distanceR = 0; int khoảng cáchL = 0; chậm trễ (40); if (khoảng cách <= 15) {moveStop (); chậm trễ (50); moveBackward (); chậm trễ (150); moveStop (); chậm trễ (100); khoảng cáchR = lookRight (); chậm trễ (100); khoảng cáchL = lookLeft (); chậm trễ (100);

if (distanceR> = distanceL) {turnRight (); moveStop (); } else {turnLeft (); moveStop (); }} else {moveForward (); } khoảng cách = readPing (); }

int lookRight () {myservo.write (50); chậm trễ (250); int khoảng cách = readPing (); chậm trễ (50); myservo.write (100); khoảng cách trở lại; }

int lookLeft () {myservo.write (120); chậm trễ (300); int khoảng cách = readPing (); chậm trễ (100); myservo.write (115); khoảng cách trở lại; chậm trễ (100); }

int readPing () {delay (70); int cm = sonar.ping_cm (); if (cm == 0) {cm = 200; } trả về cm; }

void moveStop () {motor1.run (RELEASE); motor2.run (RELEASE); motor3.run (RELEASE); motor4.run (RELEASE); } void moveForward () {

if (! goForward) {goForward = true; motor1.run (FORWARD); motor2.run (FORWARD); motor3.run (FORWARD); motor4.run (FORWARD); for (speedSet = 0; speedSet <MAX_SPEED; speedSet + = 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); chậm trễ (5); }}}

void moveBackward () {goForward = false; motor1.run (PHẦN THƯỞNG); motor2.run (PHẦN THƯỞNG); motor3.run (PHẦN THƯỞNG); motor4.run (PHẦN THƯỞNG); for (speedSet = 0; speedSet <MAX_SPEED; speedSet + = 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); chậm trễ (5); } void turnLeft () {motor1.run (BACKWARD); motor2.run (PHẦN THƯỞNG); motor3.run (FORWARD); motor4.run (FORWARD); chậm trễ (500); motor1.run (FORWARD); motor2.run (FORWARD); motor3.run (FORWARD); motor4.run (FORWARD); }

void turnLeft () {motor1.run (BACKWARD); motor2.run (PHẦN THƯỞNG); motor3.run (FORWARD); motor4.run (FORWARD); chậm trễ (500); motor1.run (FORWARD); motor2.run (FORWARD); motor3.run (FORWARD); motor4.run (FORWARD); }

Đề xuất: