










Preview text:
lOMoAR cPSD| 58511332
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC KIẾN TRÚC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN
------🙢✧🙠------
BÁO CÁO BÀI TẬP LỚN BỘ MÔN ĐỒ
ÁN LẬP TRÌNH HỆ THỐNG
XÂY DỰNG ROBOT DÒ LINE TRÁNH VẬT
CẢN SỬ DỤNG ARDUINO UNO R3, CẢM
BIẾN SIÊU ÂM VÀ CẢM BIẾN HỒNG NGOẠI
Giảng viên hướng dẫn : Trương Văn Hiền
Sinh viên thực hiện : Phan Thị Ánh
Dương Hồ Quốc Huy
Trương Hạnh Nguyên Lê Văn Nhật Lớp : 21CT2 Mục lục:
Chương 1: Cơ sở lý thuyết: ................................................................................... 3
1. Giới thiệu IOT: .............................................................................................. 3
i. Khái niệm về IOT: .......................................................................................... 3
ii. Xu hướng phát triển của thế giới với IoT: ..................................................... 3
2. Tổng quan về Robot dò line tránh vật cản (bằng cảm biến siêu âm, cảm
biến hồng ngoại kết hợp Arduino Uno R3): ...................................................... 3
i. Cảm biến siêu âm: .......................................................................................... 3
ii. Cảm biến hồng ngoại:.................................................................................... 3
iii. Arduino Uno R3: .......................................................................................... 3
Chương 2: Arduino và các Module điều khiển: .................................................... 4
1. Tổng quan về Arduino: .................................................................................. 4
2. Phần mềm Arduino IDE: ............................................................................... 4
3. Các cảm biến được sử dụng trong đề tài: ...................................................... 4
4. Các thiết bị khác được sử dụng: .................................................................... 4
i. Servo SG90: .................................................................................................... 4
Chương 3: Thiết kế và chế tạo mô hình: .............................................................. 4
1. Yêu cầu chức năng: ........................................................................................ 4
2. Sơ đồ kết nối: ................................................................................................. 4
3. Sơ đồ thuật toán: ............................................................................................ 5
4. Thiết kế mô hình: ........................................................................................... 6
5. Code lập trình điều khiển robot: .................................................................... 7
6. Kết quả thử nghiệm: .................................................................................... 10
KẾT LUẬN: ........................................................................................................ 10
TÀI LIỆU THAM KHẢO ................................................................................ 11
Chương 1: Cơ sở lý thuyết: 1. Giới thiệu IOT: i. Khái niệm về IOT:
Internet of Things (IoT) là một hệ thống mạng lưới các thiết bị
điện tử, máy móc, cảm biến, và các vật phẩm khác, được trang bị
công nghệ để thu thập và truyền dữ liệu thông qua kết nối internet
hoặc mạng nội bộ. Các thiết bị trong IoT có khả năng tương tác
với nhau và với môi trường mà không cần sự can thiệp của con người.
ii. Xu hướng phát triển của thế giới với IoT:
IoT đang ngày càng trở nên phổ biến và ảnh hưởng đến nhiều lĩnh
vực trong cuộc sống hàng ngày và công nghiệp. Các ứng dụng
của IoT bao gồm nhà thông minh, y tế điện tử, nông nghiệp thông
minh, hệ thống giám sát và điều khiển trong sản xuất, vận tải
thông minh, và nhiều lĩnh vực khác. IoT giúp tối ưu hóa quản lý,
tiết kiệm năng lượng, cải thiện chất lượng cuộc sống và tạo ra các
cơ hội mới cho việc phát triển kinh doanh và công nghệ.
2. Tổng quan về Robot dò line tránh vật cản (bằng cảm biến siêu âm, cảm
biến hồng ngoại kết hợp Arduino Uno R3):
Robot dò line tránh vật cản là một ứng dụng thú vị của robot hướng
dẫn điều khiển tự động. Thay vì chỉ đơn giản là đi theo đường line,
robot này được trang bị các cảm biến để phát hiện và tránh vật cản
trong quá trình di chuyển. i. Cảm biến siêu âm:
Cảm biến siêu âm được sử dụng để đo khoảng cách từ robot đến
vật cản. Bằng cách gửi ra sóng siêu âm và đo thời gian mà sóng
đó phản xạ lại, robot có thể tính toán được khoảng cách và định
hướng di chuyển tránh vật cản.
ii. Cảm biến hồng ngoại:
Cảm biến hồng ngoại được sử dụng để phát hiện các đường line
trên mặt đất. Ánh sáng hồng ngoại được phát ra và khi gặp phải
đường line, nó sẽ được phản xạ và cảm biến sẽ nhận dạng được vị trí
của đường line so với robot. iii. Arduino Uno R3:
Arduino Uno R3 là bo mạch điều khiển chính của robot, nơi
mà tất cả các dữ liệu từ cảm biến được xử lý và quyết định hành
động của robot. Điều này thực hiện thông qua lập trình trên môi
trường Arduino IDE và tải chương trình vào bo mạch.
Kết hợp giữa các cảm biến và Arduino Uno R3, robot có khả năng tự
động dò line và tránh vật cản trong môi trường, tạo ra một hệ thống điều khiển
tự động linh hoạt và thông minh.
Chương 2: Arduino và các Module điều khiển: 1. Tổng quan về Arduino:
Arduino Uno R3 là một board điều khiển dựa trên vi điều khiển
ATmega328P, được thiết kế để đơn giản hóa việc phát triển các dự án
điện tử và robot. Arduino cung cấp một môi trường phát triển linh hoạt
và dễ sử dụng, với nhiều tính năng và thư viện hỗ trợ. 2. Phần mềm Arduino IDE:
Arduino IDE là một môi trường lập trình tích hợp cho phép người
dùng viết, biên dịch và tải chương trình vào board Arduino. IDE cung
cấp các công cụ cần thiết cho việc lập trình, cũng như thư viện và ví dụ
mẫu giúp người dùng dễ dàng thực hiện các dự án.
3. Các cảm biến được sử dụng trong đề tài:
Cảm biến hồng ngoại IR Sensor: Cảm biến hồng ngoại được sử
dụng để phát hiện và tránh vật cản trong quá trình di chuyển của robot.
4. Các thiết bị khác được sử dụng: i. Servo SG90:
Servo SG90 là một loại servo motor được sử dụng để điều
khiển hướng di chuyển của robot.
Chương 3: Thiết kế và chế tạo mô hình: 1. Yêu cầu chức năng:
Robot dò line tránh vật cản cần có khả năng di chuyển trên đường
line và tránh vật cản trong quá trình di chuyển. 2. Sơ đồ kết nối:
Sơ đồ kết nối các cảm biến, module điều khiển và các thiết bị khác với Arduino Uno R3. 3. Sơ đồ thuật toán: 4. Thiết kế mô hình:
5. Code lập trình điều khiển robot:
#include // Thư viện chức năng cảm biến siếu âm. Bạn câ#n cài đặt thư viện này
// Các chân kết nối động cơ const int
MOTOR_ENA = 11; const int MOTOR_ENB
= 3; const int MOTOR_IN1 = 10; const int
MOTOR_IN2 = 9; const int MOTOR_IN3 = 8; const int MOTOR_IN4 = 7;
// Các chân cảm biến siếu âm #define TRIG_PIN 6 #define ECHO_PIN 5
// Các chân cảm biến hố#ng ngoại const int IR_PIN1 =
A1; // Out1 const int IR_PIN2 = A2; // Out2 const int
IR_PIN3 = A3; // Out3 const int IR_PIN4 = A4; // Out4
const int IR_PIN5 = A5; // Out5
// Giá trị đọc từ cảm biến hố#ng ngoại int irVảlues[5]; #define MAX_DISTANCE 50 int distảnce;
booleản movingForwảrd = fảlse;
NewPing sonảr(TRIG_PIN, ECHO_PIN, MAX_DISTANCE); // Chức năng cảm biến
void setup() { Seriảl.begin(9600); pinMode(MOTOR_ENA, OUTPUT); pinMode(MOTOR_ENB, OUTPUT); pinMode(MOTOR_IN1, OUTPUT); pinMode(MOTOR_IN2, OUTPUT); pinMode(MOTOR_IN3, OUTPUT); pinMode(MOTOR_IN4, OUTPUT); pinMode(IR_PIN1, INPUT); pinMode(IR_PIN2, INPUT); pinMode(IR_PIN3, INPUT); pinMode(IR_PIN4, INPUT); pinMode(IR_PIN5, INPUT);
ảnảlogWrite(MOTOR_ENA, 10); // Đặt tốc độ rât thâp cho động cơ A
ảnảlogWrite(MOTOR_ENB, 10); // Đặt tốc độ rât thâp cho động cơ B } void loop() {
delảy(100); // Tăng delảy ơ đâ#u vòng lặp đế chậm lại toàn bộ quá trình xư lý docGiảTriIR();
distảnce = docKhoảngCảch(); // Kiếm trả vật cản if (distảnce <= 20) {
trảnhVảtCản(); // Rẽ trái nếu có vật cản gâ#n hơn 20cm } else {
diTheoDuong(); // Tiếp tục di chuyến theo đường }
delảy(100); // Thếm delảy ơ cuối vòng lặp đế chậm lại tốc độ lặp } void docGiảTriIR() {
irVảlues[0] = digitảlReảd(IR_PIN1);
irVảlues[1] = digitảlReảd(IR_PIN2);
irVảlues[2] = digitảlReảd(IR_PIN3);
irVảlues[3] = digitảlReảd(IR_PIN4);
irVảlues[4] = digitảlReảd(IR_PIN5);
delảy(25); // Thếm delảy sảu khi đọc giá trị cảm biến hố#ng ngoại } int docKhoảngCảch() {
delảy(100); // Tăng delảy giữả các lâ#n đo đế làm chậm tốc độ đọc cảm biến int cm = sonảr.ping_cm();
return (cm == 0 ? 250 : cm); // Trả vế# 250 nếu khống có dữ liệu ping } void diTheoDuong() {
if ((irVảlues[0] && irVảlues[1] && !irVảlues[2] && irVảlues[3] && irVảlues[4]) ||
(irVảlues[0] && !irVảlues[1] && !irVảlues[2] && ! irVảlues[3] && irVảlues[4])) {
ảnảlogWrite(MOTOR_ENA, 5); // Giảm tốc độ khi đi thăng
ảnảlogWrite(MOTOR_ENB, 5); diThảng();
} else if ((!irVảlues[0] && irVảlues[1] && irVảlues[2] && irVảlues[3] && irVảlues[4]) ||
(!irVảlues[0] && !irVảlues[1] && irVảlues[2] && irVảlues[3] && irVảlues[4]) ||
(!irVảlues[0] && !irVảlues[1] && !irVảlues[2] && irVảlues[3] && irVảlues[4])) {
ảnảlogWrite(MOTOR_ENA, 2);
ảnảlogWrite(MOTOR_ENB, 2); reTrải();
} else if ((irVảlues[0] && irVảlues[1] && irVảlues[2] && irVảlues[3] && !irVảlues[4]) ||
(irVảlues[0] && irVảlues[1] && irVảlues[2] && ! irVảlues[3] && !irVảlues[4]) ||
(irVảlues[0] && irVảlues[1] && !irVảlues[2]
&& !irVảlues[3] && !irVảlues[4])) { ảnảlogWrite(MOTOR_ENA, 2);
ảnảlogWrite(MOTOR_ENB, 2); rePhải();
} else if (!irVảlues[0] && !irVảlues[1] && !irVảlues[2] &&
!irVảlues[3] && !irVảlues[4]) { dungLải(); } } void diThảng() {
digitảlWrite(MOTOR_IN1, HIGH);
digitảlWrite(MOTOR_IN3, HIGH);
digitảlWrite(MOTOR_IN2, LOW);
digitảlWrite(MOTOR_IN4, LOW); Seriảl.println("Di Thảng"); } void dungLải() {
digitảlWrite(MOTOR_IN1, LOW);
digitảlWrite(MOTOR_IN2, LOW);
digitảlWrite(MOTOR_IN3, LOW);
digitảlWrite(MOTOR_IN4, LOW);
Seriảl.println("Dung Lải"); } void reTrải() {
digitảlWrite(MOTOR_IN1, HIGH);
digitảlWrite(MOTOR_IN4, HIGH);
digitảlWrite(MOTOR_IN2, LOW);
digitảlWrite(MOTOR_IN3, LOW); delảy(200);
digitảlWrite(MOTOR_IN1, HIGH);
digitảlWrite(MOTOR_IN3, HIGH);
digitảlWrite(MOTOR_IN2, LOW);
digitảlWrite(MOTOR_IN4, LOW); Seriảl.println("Re Trải"); diThảng(); } void rePhải() {
digitảlWrite(MOTOR_IN2, HIGH);
digitảlWrite(MOTOR_IN3, HIGH);
digitảlWrite(MOTOR_IN1, LOW);
digitảlWrite(MOTOR_IN4, LOW); delảy(200);
digitảlWrite(MOTOR_IN1, HIGH);
digitảlWrite(MOTOR_IN3, HIGH);
digitảlWrite(MOTOR_IN2, LOW);
digitảlWrite(MOTOR_IN4, LOW); Seriảl.println("Re Phải"); diThảng(); } void trảnhVảtCản() {
reTrải(); // Tạm thời chỉ dùng đế rẽ trái, bạn có thế điế#u chỉnh logic này sảu delảy(30); diThảng(); delảy(30); rePhải(); delảy(30); diThảng(); delảy(30); reTrải(); delảy(30); diThảng(); }
6. Kết quả thử nghiệm:
Robot thực hiện được việc đi dựa trên đoạn line có sẵn, tránh được
vật cản và tự tìm đếm đường line gần đó KẾT LUẬN:
Robot tránh vật cản sử dụng cảm biến siêu âm và hồng ngoại có những ưu điểm: •
Độ chính xác cao, có thể di chuyển an toàn •
Thích ứng nhiều loại địa hình • Triển khai dễ dàng
Nhưng cũng có những hạn chế: •
Phát hiện vật cản nhỏ kém •
Bị nhiễu từ môi trường •
Tốc độ di chuyển hạn chế do xử lý dữ liệu
Nhìn chung, đây là công nghệ hữu ích và sẽ tiếp tục được cải thiện trong tương lai.
TÀI LIỆU THAM KHẢO [1]
J. C. G. B. L. Markus Maurer, Autonomous Driving: Technical, Legal
andSocial Aspects, nhà xuất bản Springer, 2016. [2]
N. V. Hùng, Ô tô tự lái - Tương lai của ngành ô tô, Nhà xuất bản Thế giới,2018. [3]
N. V. Hùng, Arduino căn bản và ứng dụng, Hà Nội: ĐEi học Quốc gia HàNội, 2016. [4]
N. D. Tập, Vi điều khiển với lập trình C, Hà Nội: Nhà xuất bản khoa học
vàkỹ thuật Hà Nội, 2003. [5]
D. N. Cheeke, Ultrasonic Sensors for Nondestructive Testing and
QualityControl, nhà xuất bản Springer, 2009.