Trong đó, Bluetooth là một trong những công nghệ đượcphát triển từ lâu và luôn được cải tiến để nâng cao tốc độ cũng như khả năng bảo mật.Trên thị trường Việt Nam hiện nay chưa có nhiều
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN &
TRUYỀN THÔNG VIỆT HÀN
Khoa Khoa Học Máy Tính
ĐỒ ÁN VI ĐIỀU KHIỂN
THIẾT KẾ XE ĐIỀU KHIỂN BẰNG TAY VÀ XE TỰ
HÀNH
Giảng viên hướng dẫn: ThS Trần Thị Trà Vinh
Sinh viên thực hiện: Nguyễn Văn Vĩnh Nguyên 21IT431
Trương Thành Tiến 21IT521
Đà Nẵng, tháng 05 năm 2023
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN &
TRUYỀN THÔNG VIỆT HÀN
Khoa Khoa Học Máy Tính
ĐỒ ÁN VI ĐIỀU KHIỂN
THIẾT KẾ XE ĐIỀU KHIỂN BẰNG TAY VÀ XE TỰ
HÀNH
Giảng viên hướng dẫn: ThS Trần Thị Trà Vinh
Sinh viên thực hiện: Nguyễn Văn Vĩnh Nguyên 21IT431
Trương Thành Tiến 21IT521
Nguyễn Thành Công 21IT469
Đà Nẵng, tháng 05 năm 2023
Trang 3MỤC LỤC
DANH MỤC HÌNH ẢNH 1
MỞ ĐẦU 2
LỜI CẢM ƠN 3
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN 4
1.1 Lý do chọn đề tài 5
1.2 Mục đích thực hiện đề tài 5
1.3 Nhiệm vụ thực hiện đề tài 5
1.4 Cấu trúc đồ án 5
2.1 Thiết kế hệ thống điều khiển 6
2.1.1 Sơ đồ khối 6
2.1.2 Nguyên lý hoạt động 6
2.1.3 Chức năng các khối 6
2.2 Lựa chọn linh kiện 8
2.2.1 Module Adruino Uno R3 8
2.2.2 Mạch điều khiển động cơ L298N 9
2.2.2 Mạch điều khiển cánh tay servo SG90 10
2.2.3 Một số linh kiện khác 11
2.3 Thiết kế phần cứng 12
2.3.1 Sơ đồ mạch 12
2.3.1.2 Lưu đồ thuật toán 12
CHƯƠNG 3: XE DÒ LINE 18
3.1 Thiết kế hệ thống điều khiển 18
3.1.1 Sơ đồ kết nối dò line 5 mắt 18
3.1.2 Sơ đồ khối 18
3.1.3 Chức năng của các khối 18
3.2 Thiết kế phần cứng 20
3.3 Phần mềm 21
3.3.1 Thuật toán 21
3.3.2 Mã lập trình xe điều tự hành 22
KẾT LUẬN 29
1 Kết quả đạt được 29
2 Hướng nghiên cứu 30
TÀI LIỆU THAM KHẢO 31
Trang 4DANH MỤC HÌNH ẢNH
Hình 1: Sơ đồ khối 6
Hình 2: Khối nguồn 6
Hình 3: Khối module PS2 7
Hình 4: Khối xử lý trung tâm 8
Hình 5: Module Arduino Uno R3 9
Hình 6: Khối điều khiển động cơ L298N 10
Hình 7: Servo SG90 10
Hình 8: Mạch giảm áp LM2596 11
Hình 9: Động cơ và bánh xe 11
Hình 10: Các thành phần khác 12
Hình 11: Sơ đồ mạch thực (tham khảo) 12
Hình 12: Lưu đồ thuật toán 13
Hình 13: Sơ đồ kết nối xe dò line 5 cảm biến (tham khảo) 18
Hình 14: Sơ đồ khối xe dò line 18
Hình 15: Module Arduino R3 19
Hình 16: Khối cảm biến 5 mắt TCR5000 20
Hình 17: Khối điều khiển động cơ L298N 20
Hình 18: Lưu đồ thuật toán 22
Hình 19: Xe dò line 5 mắt 29
Hình 20: Xe điều khiển cánh tay robot 29
Trang 5MỞ ĐẦU
Ngày nay chúng ta đang sống trong kỷ nguyên của khoa học công nghệ, đặcbiệt là công nghệ thông tin Trong thời đại bùng nổ thông tin và có rất nhiều phươngthức truyền đạt thông tin thì phương thức truyền thông tin bằng công nghệ số là nhanh
và phổ biến nhất, được nhiều người tiếp cận nhất Trong những năm gần đây, côngnghệ truyền nhận dữ liệu không dây đang có những bước phát triển mạnh mẽ, gópcông lớn trong việc phát triểncác hệ thống điều khiển, giám sát từ xa, đặc biệt là các
hệ thống thông minh
Hiện nay, có khá nhiều công nghệ không truyền nhận dữ liệu không dây như
RF, Wifi, Bluetooth, NFC Trong đó, Bluetooth là một trong những công nghệ đượcphát triển từ lâu và luôn được cải tiến để nâng cao tốc độ cũng như khả năng bảo mật.Trên thị trường Việt Nam hiện nay chưa có nhiều sản phẩm điều khiển thiết bị khôngdây, đa số những sản phẩm hiện có đều là nhập khẩu từ nước ngoài với giá thành cao.Việc nghiên cứu và thiết kế một bộ sản phẩm điều khiển thiết bị không dây có một ýnghĩa lớn, giúp tăng thêm sự lựa chọn cho người sử dụng, sản phẩm được sản xuấttrong nước nên giá thành rẻ và góp phần phát triển các hệ thống điều khiển thôngminh
Bên cạnh đó, các Robot tự hành được ứng dụng trong đời sống ngày càngnhiều như robot vận chuyển hàng hóa, kiểm tra nguy hiểm, xe lăn cho người khuyếttật… Nhưng điểm hạn chế của các robot tự hành hiện tại là tính thiếu linh hoạt và khảnăng thích ứng khi làm việc ở những vị trí khác nhau Từ những lý do đó nảy sinh vấn
đề tránh vật cản cho xe tự hành nhằm nâng cao tính linh hoạt cho xe Vì vậy, nhómquyết định thực hiện đề tài: “Thiết kế xe điều bằng tay và xe tự hành” để làm đồ ánmôn Vi điều khiển
Trang 6Dưới đây là kết quả của quá trình tìm hiểu và nghiên cứu mà nhóm đã đạtđược trong học kỳ vừa qua Tuy có nhiều cố gắng học hỏi trau dồi để nâng cao kiếnthức nhưng không thể tránh khỏi những sai sót Nhóm rất mong được những sự góp ýquý báu của các thầy giáo, cô giáo cũng như tất cả các bạn để đồ án của nhóm đượchoàn thiện hơn
Nhóm xin chân thành cảm ơn!
Đà Nẵng, ngày 13 tháng 05 năm 2023
Sinh viên
Trang 7NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Đà Nẵng, ngày 13 tháng 05 năm 2023
Giảng viên hướng dẫn
Trang 8CHƯƠNG 1: TỔNG QUAN 1.1 Lý do chọn đề tài
Trong những năm gần đây, công nghệ truyền nhận dữ liệu không dây đangphát triển mạnh mẽ và đóng góp quan trọng trong việc phát triển các hệ thống điềukhiển, giám sát từ xa và hệ thống thông minh Có nhiều công nghệ không dây như RF,Wifi, Bluetooth, NFC, được sử dụng hiện nay Tuy nhiên, giao diện ngoại vi nốitiếp SPI là một công nghệ đã được phát triển từ lâu và luôn được cải tiến để cải thiệntốc độ và bảo mật Tuy trên thị trường Việt Nam hiện nay chưa có nhiều sản phẩmđiều khiển thiết bị không dây được sản xuất trong nước, việc nghiên cứu và phát triểncác sản phẩm này sẽ giúp tăng sự lựa chọn cho người dùng và giảm chi phí sản xuất.Ngoài ra, robot tự hành được sử dụng ngày càng phổ biến trong các lĩnh vựcnhư vận chuyển hàng hóa, kiểm tra nguy hiểm và xe lăn cho người khuyết tật Tuynhiên, một điểm hạn chế của các robot tự hành hiện tại là tính linh hoạt và khả năngthích ứng khi làm việc ở nhiều vị trí khác nhau Vì vậy, việc giải quyết vấn đề tránhvật cản cho xe tự hành là rất quan trọng để nâng cao khả năng linh hoạt của chúng
- Module Arduino Uno R3: thiết kế hệ thống sử dụng để giao tiếp với côngnghệ SPI, điều khiển các thiết bị, phần mềm hỗ trợ lập trình Arduino, ngôn ngữ lậptrình C++
1.3 Nhiệm vụ thực hiện đề tài
Học tập, nắm vững các ngôn ngữ cần thiết để ứng dụng vào việc thiết kế
Tìm hiểu, đọc các nguồn tài liệu, thông tin tham khảo
Nghiên cứu tình hình thực tế, qua sách báo, hoặc internet
Hoàn thiện được hai sản phẩm là xe điều khiển và xe tự hành
Trang 9CHƯƠNG 2: XE ĐIỀU KHIỂN BẰNG TAY 2.1 Thiết kế hệ thống điều khiển
Tiếp theo kết nối tay cầm ps2 với xe điều khiển
Và cuối cùng là điều khiển xe chạy tiến, lùi, trái , phải, gắp hàng bằngtay cầm
2.1.3 Chức năng các khối
2.1.3.1 Khối nguồn
Hình 2: Khối nguồn
Khối nguồn tạo ra dòng điện và điện thế ổn định cung cấp an toàn cho
cả mạch Mạch ổn áp có chức năng tạo ra điện áp nhỏ hơn điện áp đầu vào vàluôn duy trì mức áp này mặc dù áp đầu vào tăng/giảm Module ổn áp sử dụng
Trang 10các tụ có khả năng lọc nhiễu cao và trữ điện tốt Ngoài ra trên module có sẵnđèn LED báo hiệu hoạt động của mạch nguồn.
2.1.3.2 Khối module PS2
Khối module PS2 (PlayStation 2) là một thiết bị ngoại vi được sử dụng
để kết nối và điều khiển các bộ điều khiển game PS2 hoặc tương thích PS2 khác thông qua cổng điều khiển trên hệ thống PlayStation 2
Module PS2 thường bao gồm hai phần chính: một đầu cắm để kết nối với cổng điều khiển trên PS2 và một đầu cắm đa chức năng để kết nối với bộ điều khiển game PS2 Đầu cắm đa chức năng thường có 9 chân hoặc 12 chân
và tuỳ thuộc vào loại module
Khối module PS2 thường có khả năng gửi và nhận tín hiệu từ bộ điều khiển game PS2 Nó sẽ giúp chuyển đổi tín hiệu từ các nút nhấn, joystick và các cảm biến trên bộ điều khiển thành tín hiệu điều khiển thích hợp để truyền tới hệ thống PlayStation 2 Điều này cho phép người dùng điều khiển và tươngtác với trò chơi trên PS2 thông qua bộ điều khiển mà không cần phải sử dụng trực tiếp các nút trên hệ thống
Hình 3: Khối module PS2
2.1.3.3 Khối xử lí trung tâm
Arduino UNO R3 Bộ não này có thể xử lí những tác vụ đơn giản nhưđiều khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa, điềukhiển động cơ bước, điều khiển động cơ serve, làm một trạm đo nhiệt độ – độ
ẩm và hiển thị lên màn hình LCD,… hay những ứng dụng khác
Trang 112.2 Lựa chọn linh kiện
2.2.1 Module Adruino Uno R3
2.2.1.1 Thông số kĩ thuật
- Vi điều khiển: ATmega 328 họ 8 bit
- Điện áp hoạt động: 5 VDC (chỉ được cấp qua cổng USB)
- Tần số hoạt động: 16 MHz- Dòng tiêu thụ: 30 mA + Điện áp vào khuyêndùng: 7-12 VDC - Điện áp vào giới hạn: 6-20 VDC + Số chân Digital I/O: 14( 6 chânhardware PWM) + Số chân analog: 6 ( độ phân giải 10 bit)
- Dòng tối đa trên mỗi chân I/O: 30 mA
- Dòng ra tối đa (5V): 500mA
- Dòng ra tối đa (3.3V): 50mA
- Bộ nhớ flash: 32KB với 0.5KB dùng để bootloader
- SRAM: 2KB + EEROM: 1KB
Hình 5: Module Arduino Uno R3
2.2.1.2 Bộ nhớ
Trang 12- 32KB bộ nhớ Flash: những đoạn lệnh bạn lập trình sẽ được lưu trữ trong bộ nhớFlash của vi điều khiển Thường thì sẽ có khoảng vài KB trong số này sẽ được dùngcho bootloader
- 2KB cho SRAM (Static Random Access Memory): giá trị các biếnbạn khai báo khilập trình sẽ lưu ở đây Bạn khai báo càng nhiều biến thì càng cần nhiều bộ nhớ RAM.Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM lại trở thành thứ mà bạn phảibận tâm.Khi mất điện, dữ liệu trên SRAM sẽ bị mất
- 1KB cho EEPROM (Electrically Eraseble Programmable ReadOnly Memory): đâygiống như một chiếc ổ cứng mini
- Nơi bạn có thể đọc và ghi dữ liệu của mình vào đây mà không phải lo bị mấtkhi cúpđiện giống như dữ liệu trên SRAM
- Các cổng vào ra: Arduino UNO có 14 chân digital dùng để đọc hoặcxuất tín hiệu.Chúng chỉ có 2 mức điện áp là 0V và 5V với dòngvào/ra tối đa trên mỗi chân là40mA Ở mỗi chân đều có các điện trởpull-up từ được cài đặt ngay trong vi điềukhiển ATmega328 (mặc định thì các điện trở này không được kết nối)
2.2.2 Mạch điều khiển động cơ L298N
Khối điều khiển động cơ L298N là một mạch điện tử được sử dụng đểđiều khiển động cơ DC hoặc bước (stepper motor) Mạch này sử dụng nguồnđiện ổn định và tín hiệu điều khiển từ mạch điều khiển như Arduino Uno đểđiều khiển động cơ chạy theo hướng và tốc độ mong muốn
L298N có bốn chân đầu ra dành cho hai động cơ và bốn chân đầu vàodành cho tín hiệu điều khiển Các chân đầu ra được thiết kế để kết nối vớiđộng cơ, trong khi các chân đầu vào được sử dụng để nhận tín hiệu điều khiển
từ mạch điều khiển
L298N cũng có tính năng bảo vệ quá tải và ngắn mạch, giúp bảo vệđộng cơ khỏi hỏng hóc trong trường hợp sử dụng không đúng cách Ngoài ra,mạch còn có tính năng điều chỉnh tốc độ động cơ thông qua việc điều khiển độrộng xung (PWM) đưa vào chân đầu vào điều khiển
Hình 6: Khối điều khiển động cơ L298N
2.2.2 Mạch điều khiển cánh tay servo SG90
Trang 13Servo SG90 là một servo thu nhỏ, với một số kích thước rất nhỏ gọn để
có thể tích hợp trong các dự án mà không gian là quan trọng Ngoài ra, nó tiết kiệm và dễ sử dụng, với nhu cầu năng lượng rất thấp, vì vậy nó cũng có thể được sử dụng trong các ứng dụng nhúng, IoT hoặc các ứng dụng tiêu thụ thấp khác Servo SG90 có góc quay từ 0 đến 180 độ
Đối với Servo SG90, động cơ servo này bao gồm một đầu nối loại S
phổ quát điều đó sẽ có thể phù hợp với hầu hết các thiết bị thương mại Nó
được tạo thành từ 3 dây với màu sắc xác định những gì mỗi dây được sử dụng để:
Rojo: là cáp nguồn dương hoặc Vcc (+) (Màu đỏ)
Marrón: là cáp nguồn âm (-) hay GND (nối đất) (Màu nâu)
Cam: nó là cáp mang tín hiệu PPM (Điều chế vị trí xung) để điều khiển động
cơ servo (Màu vàng)
Một số kiểu máy cũng có thể có bố cục màu Đen đ| trăng, trong trường hợp đó, lược đồ trong trường hợp này sẽ là Tín hiệu GND-Vcc-PPM tương ứng
Với lắp xe điều khiển có cánh tay robot, chúng ta cần ít nhất 2 servo SG90 Một cái có nhiệm vụ di chuyển cánh tay lên xuống, cái còn lại giúp việcgắp vật lên cánh tay Tùy theo mỗi servo mà chúng ta có thể làm nhiệm vụ khác nhau
Và để servo SG90 hoạt động một cách ổn định, cần phải cấp điện áp từ4.9V đến 5.2V Điện áp ngoài phạm vi này sẽ làm hư hỏng servo Để điều chỉnh điện áp ổn định, cần dùng mạch giảm áp LM2596
Trang 142.2.3 Một số linh kiện khác 2.2.3.1 Động cơ (motor) + bánh xe
Trang 15- Dây board đực, cái
Hình 11: Sơ đồ mạch thực (tham khảo)
2.3.1.2 Lưu đồ thuật toán
Trang 162.3.2 Mã lập trình xe điều khiển có cánh tay robot bằng tay
const int leftm1 = 2; //3
const int leftm2 = 4;
const int rightm1 = 5;
const int rightm2 = 7; //6
#define right_EN 6 //7 //ENB
- pressures = analog reading of push-butttons
- rumble = motor rumbling
uncomment 1 of the lines for each mode selection
Trang 17//#define pressures false
#define rumble false
//#define rumble false
PS2X ps2x; // create PS2 Controller Class
error = ps2x.config_gamepad(PS2_CLK, PS2_CMD, PS2_SEL, PS2_DAT, pressures, rumble);
Trang 19LY = LX = 128; //return to default vlaues
RY = RX = 128; //return to default values
delay(50);
}
void forward()
Trang 21CHƯƠNG 3: XE DÒ LINE
3.1 Thiết kế hệ thống điều khiển
3.1.1 Sơ đồ kết nối dò line 5 mắt
Hình 13: Sơ đồ kết nối xe dò line 5 cảm biến (tham khảo)
3.1.2 Sơ đồ khối
Hình 14: Sơ đồ khối xe dò line
3.1.3 Chức năng của các khối
3.1.3.1 Khối nguồn
Khối nguồn tạo ra dòng điện và điện thế ổn định cung cấp an toàncho
cả mạch Mạch ổn áp có chức năng tạo ra điện áp nhỏ hơn điện áp đầu vào vàluôn duy trì mức áp này mặc dù áp đầu vào tăng/giảm Module ổn ápLM2596S sử dụng các tụ có khả năng lọc nhiễu cao và trữ điện tốt Ngoài ratrên module có sẵn đèn LED báo hiệu hoạt động của mạch nguồn
3.1.3.2 Khối xử lí trung tâm
Arduino UNO R3 sử dụng Chip Driver CH340G và chip chính là ATmega328P-AU (SMD 32Pins) Bộ não này có thể xử lí những tác vụ đơn giản như điều khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ
Trang 22xa, điều khiển động cơ bước, điều khiển động cơ serve, làm một trạm đo nhiệt
độ – độ ẩm và hiển thị lên màn hình LCD,… hay những ứng dụng khác
Hình 15: Module Arduino R3
3.1.3.3 Khối cảm biến (TCR5000 5 cảm biến dò line)
Khi làm một chiếc xe dò line, việc định vị và theo dõi đường đi là rấtquan trọng Điều này đặc biệt đúng trong các ứng dụng đòi hỏi độ chính xáccao, như trong các cuộc thi xe đua đồ line Khối cảm biến TCR5000 là mộtgiải pháp cảm biến lý tưởng để giúp xe di chuyển trên đường line một cáchchính xác và đáng tin cậy hơn
Khối cảm biến TCR5000 bao gồm 5 cảm biến dò line, được thiết kế để
sử dụng nguyên lý hoạt động của cảm biến hồng ngoại Khi hoạt động, cáccảm biến sẽ phát ra tia hồng ngoại và đo khoảng cách đến đường line bằngcách đo thời gian mà tín hiệu hồng ngoại mất đi và quay trở lại Từ đó, khốicảm biến có thể xác định vị trí của xe và điều chỉnh đường đi của nó để giữcho xe di chuyển trên đường line
Ngoài việc định vị và theo dõi đường đi, khối cảm biến TCR5000 cũng
có thể được sử dụng để tránh các vật cản trên đường đi Bằng cách xác địnhkhoảng cách đến các vật cản, khối cảm biến có thể điều chỉnh đường đi của xe
để tránh chúng Điều này rất hữu ích trong các cuộc thi xe đua đồ line, nơi các
xe phải điều chỉnh đường đi của mình để tránh các chướng ngại vật trên đườngđi
Sử dụng khối cảm biến TCR5000 trong xe dò line của bạn có thể giúptăng độ chính xác và đáng tin cậy của xe, giúp xe di chuyển trên đường linemột cách chính xác và tránh các vật cản trên đường đi Điều này giúp xe củabạn hoạt động một cách hiệu quả hơn và cải thiện khả năng cạnh tranh của nótrong các cuộc thi xe đua dò line
Trang 233.1.3.4 khối điều khiển động cơ L298N
Khối điều khiển động cơ L298N là một mạch điện tử được sử dụng đểđiều khiển động cơ DC hoặc bước (stepper motor) Mạch này sử dụng nguồnđiện ổn định và tín hiệu điều khiển từ mạch điều khiển như Arduino Uno đểđiều khiển động cơ chạy theo hướng và tốc độ mong muốn
L298N có bốn chân đầu ra dành cho hai động cơ và bốn chân đầu vàodành cho tín hiệu điều khiển Các chân đầu ra được thiết kế để kết nối vớiđộng cơ, trong khi các chân đầu vào được sử dụng để nhận tín hiệu điều khiển
từ mạch điều khiển
L298N cũng có tính năng bảo vệ quá tải và ngắn mạch, giúp bảo vệđộng cơ khỏi hỏng hóc trong trường hợp sử dụng không đúng cách Ngoài ra,mạch còn có tính năng điều chỉnh tốc độ động cơ thông qua việc điều khiển độrộng xung (PWM) đưa vào chân đầu vào điều khiển
Hình 17: Khối điều khiển động cơ L298N
3.2 Thiết kế phần cứng
3.2.1 Arduino Uno R3
Mạch Arduino Uno R3 là một thiết bị nhỏ gọn, dễ sử dụng và linhhoạt Nó có thể được sử dụng để điều khiển các cảm biến và đọc dữ liệu từchúng để xác định vị trí của xe trên đường line Bên cạnh đó, mạch còn có khảnăng điều khiển các hành động khác nhau của xe, chẳng hạn như dừng lại, tiếnlên, lùi lại hay điều chỉnh hướng di chuyển của xe