Đã được đăng vào 11/12/2019 @ 11:26
Chế tạo Robot tránh vật cản – Hướng dẫn chi tiết
Các linh kiện cần thiết để làm Robot tránh vật cản
Xem thêm:
- Hệ thống khóa cửa thông minh sử dụng RFID RC-522 và Arduino
- Cảm biến độ ẩm | Hệ thống tưới tự động sử dụng Arduino
Tên linh kiện | Link đặt mua |
Khung Robot | https://arduinokit.vn/khung-xe-robot |
Mạch Arduino UNO | https://arduinokit.vn/arduino-uno-r3-ch340-cap-nap |
Motor Shield | https://arduinokit.vn/arduino-motor-shield-l293d |
SG90 Servo | https://arduinokit.vn/dong-co-rc-servo-sg90 |
Cảm biến tránh vật cản | https://arduinokit.vn/cam-bien-sieu-am-hc-sr04 |
Công tắc | (Được tặng kèm khi mua trọn gói ) |
Tụ 100nF | https://educ8s.tv/part/CeramicCapacitors (Được tặng kèm khi mua trọn gói ) |
Tụ 300uF | https://educ8s.tv/part/ElectrolyticCapacitors (Được tặng kèm khi mua trọn gói ) |
Dây nối | https://educ8s.tv/part/Wires (Được tặng kèm khi mua trọn gói ) |
Lắp ráp
Hàn thêm tụ 100nF vào đầu của động cơ.

Hoàn thiện quá trình lắp linh kiện vào khung Robot.

Sơ đồ đấu nối

Đấu nối
Đấu nối cảm biến tránh vật cản vào Shield Motor
VCC | 5V |
GND | GND |
TRIG | A4 |
ECHO | A5 |
Đấu nối Servo vào Shield Motor
Dây tín hiệu (màu vàng) | S |
VCC (Màu đỏ) | + |
GND (Màu đen) | – |
Giải thích Code
Để chương trình hoạt động và không báo lỗi khi nạp chương trình. Bước đầu tiên chúng ta cần tải thư viện và Add thư viện vào Arduino IDE.
Thư viện Motor Shield: https://github.com/adafruit/Adafruit-Motor-Shield-library
Thư viện NewPing: https://bitbucket.org/teckel12/arduino-new-ping/wiki/Home#!download-install
////////////////////////////////////////////// // Arduino ROBOT v0.1 // // // // http://www.educ8s.tv // ///////////////////////////////////////////// #include <AFMotor.h> #include <NewPing.h> #include <Servo.h>
Tiếp theo, chúng ta khai báo chân kết nối cho cảm biến tránh vật cản và hiệu chỉnh tốc độ của động cơ, các bạn có thể thay đổi thông số tốc độ động cơ đến 255.
#define TRIG_PIN A4
#define ECHO_PIN A5
#define MAX_DISTANCE 200
#define MAX_SPEED 190 // sets speed of DC motors
#define MAX_SPEED_OFFSET 20
Khai báo biến cho hàm Servo và khởi tạo kết nối động cơ trên thư viện AFMotor.
AF_DCMotor motor1(1, MOTOR12_1KHZ);
AF_DCMotor motor2(3, MOTOR12_1KHZ);
Servo myservo;
Tiếp theo trong hàm setup(), chúng ta khai báo kết nối cho chân servo, ở đây chúng ta kết nối servo vào chân 9 của board mạch, góc xoay servo đặt là 115 độ.
Các bạn có thể tự thử nghiệm ra góc quay phù hợp cho robot của mình.
void setup() {
myservo.attach(9);
myservo.write(115);
delay(2000);
distance = readPing();
delay(100);
distance = readPing();
delay(100);
distance = readPing();
delay(100);
distance = readPing();
delay(100);
}
Trong hàm loop() đưa các giá trị đo về 0 và thực hiện chương trình sau 40ms.
Nếu khoảng cách cảm biến đo được nhỏ hơn hoặc bằng 15cm thì Robot sẽ dừng lại trong khoảng thời gian 100ms và lùi lại phía sau 300ms, dừng lại trong 200ms.
Robot quay đầu nhìn sang trái, sang phải và đo khoảng cách.
Nếu khoảng cách đo bên nào lớn hơn hoặc bằng thì robot sẽ quay về hướng lớn nhất và di chuyển về phía trước.
void loop() {
int distanceR = 0;
int distanceL = 0;
delay(40);
if(distance<=15)
{
moveStop();
delay(100);
moveBackward();
delay(300);
moveStop();
delay(200);
distanceR = lookRight();
delay(200);
distanceL = lookLeft();
delay(200);
if(distanceR>=distanceL)
{
turnRight();
moveStop();
}else
{
turnLeft();
moveStop();
}
}else
{
moveForward();
}
distance = readPing();
}
Nguồn: arduinokit.vn
Để lại một bình luận