1. Trang chủ
  2. » Luận Văn - Báo Cáo

Công nghệ phần mềm nhúng

42 0 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xe Tự Hành Tránh Vật Cản
Tác giả Đinh Công Tuấn, Hoàng Tuấn Minh, Lê Quốc Mạnh
Người hướng dẫn Lê Đức Thuận
Trường học Học viện Kỹ thuật mật mã
Chuyên ngành Công nghệ phần mềm nhúng
Thể loại báo cáo môn học
Định dạng
Số trang 42
Dung lượng 7,02 MB

Nội dung

BÁO CÁO MÔN HỌC CÔNG NGHỆ PHẦN MỀM NHÚNG Đề tài: XE TỰ HÀNH TRÁNH VẬT CẢN Lời mở đầu Các Robot tự hành được ứng dụng trong đời sống ngày càng nhiều như robot vận chuyển hàng hóa, robot kiểm tra nguy hiểm, robot xe lăn cho người khuyết tật, robot phục vụ sinh hoạt gia đình… Điểm hạn chế của 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 robot tự hành nhằm nâng cao tính linh hoạt cho robot. Hầu hết các robot hiện đại đều có một kiểu tránh vật cản nào đó robot xác định vật cản và dừng lại ở khoảng cách ngắn so với vật cản để tránh va chạm, đến các thuật toán tinh tế hơn, cho phép robot di chuyển theo đường viền quanh vật cản. Đề tài ”Xe tự hành tránh vật cản” nhằm góp phần giải quyết vấn đề trên.

Trang 1

Ban cơ yếu chính phủ Học viện Kỹ thuật mật mã

Giảng viên hướng dẫn: Lê Đức Thuận

Sinh viên thực hiện: Nhóm 07 – lớp L03

Đinh Công Tuấn CT050453

Hoàng Tuấn Minh CT050432

Lê Quốc Mạnh CT050234

Trang 2

MỤC LỤC

CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI 5

1.1 Đặt vấn đề 5

1.2 Tính cấp thiết của đề tài 5

1.3 Tình hình nghiên cứu hiện nay 6

1.3.1 Tình hình nghiên cứu quốc tế 6

1.3.2 Tình hình nghiên cứu trong nước 7

1.4 Tổng kết chương 1 7

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT VỀ ARDUINO 7

2.1 Giới thiệu 7

2.2 Lịch sử ra đời 8

2.2.1 Dòng Arduino USB 8

2.2.1.1 Mạch lập trình đầu tiên (2005) 8

2.2.1.2Mạch Arduino đầu tiên - Arduino USB (2005) 8

2.2.1.3 Arduino Extreme (2006) 9

2.2.1.4 Arduino NG (2006) 11

2.2.1.5 Arduino Diecimila (2007) 12

2.2.1.6 Arduino Duemilanove (2008 - 2009) 13

2.2.1.7 Arduino UNO 2010 - đến nay 13

2.2.1.8 Những dòng Arduino khác 16

2.2.2 Arduino MEGA 16

2.2.2.1 Arduino Mega đầu tiên (2009 - 2010) 16

2.2.2.2 Arduino MEGA ADK (2011) 17

Trang 3

2.6 Tổng kết chương 2 26

CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG 27

3.1 Thiết kế phần cứng 27

3.1.1 Tổng quan phần cứng 27

3.1.1.1 Arduino Uno R3 27

3.1.1.2 Cảm biến siêu âm HC-SR04 28

3.1.1.3 Khối động cơ Servo 30

3.1.1.4 Module điều khiển động cơ L298 mạch cầu H 31

3.1.2 Thiết kế sơ đồ mạch 33

3.1.3 Nguyên lý hoạt động 34

3.2 Thiết kế phần mềm 34

3.2.1 Sơ đồ Use Case tổng quát 34

3.2.2 Đặc tả Use Case 34

3.2.2.1 Đặc tả Use Case “Đi thẳng” 34

3.2.2.2 Đặc tả Use Case “Đi lùi” 35

3.2.2.3 Đặc tả Use Case “Rẽ trái” 36

3.2.2.4 Đặc tả Use Case “Rẽ phải” 37

3.2.3 Thuận toán khối xử lý trung tâm 38

3.2.4 Sơ đồ thuật toán 39

3.3 Kết quả thực nghiệm 40

3.3.1 Code Arduino 40

3.3.2 Mô hình thử nghiệm 40

3.3.2.1 Mô hình giả lập trên Proteus 40

3.3.2.2 Mô hình thực tế 40

3.3.3 Kết quả thử nghiệm 40

3.3.4 Nhận xét đánh giá 40

Trang 4

Lời mở đầuCác Robot tự hành được ứng dụng trong đời sống ngày càng nhiều như robot vậnchuyển hàng hóa, robot kiểm tra nguy hiểm, robot xe lăn cho người khuyết tật, robot phục

vụ sinh hoạt gia đình… Điểm hạn chế của 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 robot tự hành nhằm nâng cao tính linh hoạt cho robot Hầu hết các robothiện đại đều có một kiểu tránh vật cản nào đó robot xác định vật cản và dừng lại ở khoảngcách ngắn so với vật cản để tránh va chạm, đến các thuật toán tinh tế hơn, cho phép robot di

chuyển theo đường viền quanh vật cản Đề tài ”Xe tự hành tránh vật cản” nhằm góp phần

giải quyết vấn đề trên

Nội dung báo cáo này gồm các phần:

- Chương 1: Tổng quan đề tài

- Chương 2: Cơ sở lý thuyết

- Chương 3: Thiết kế và xây dựng hệ thống

Trang 5

TÓM TẮT ĐỀ TÀI

*Yêu cầu chung và các chức năng của hệ thống

- Yêu cầu chung

 Tính thực thi cao, có khả năng phát triển

 Đảm bảo về chất lượng, độ chính xác cao, làm việc lâu dài, bền bỉ

 Tiết kiệm chi phí, linh kiện dễ kiếm dễ sử dụng và dễ dàng thay thế khi xảy

ra sự cố

 Giảm thiểu chi phí, thời gian vận hành, bảo dưỡng và sửa chữa

- Chức năng: Xe có khả năng di chuyển tiến, lùi , rẽ trái, rẽ phải và dừng lại khinhận được khoảng cách tín hiệu từ cảm biến

*Linh kiện sử dụng

Xe được thiết kế với các linh kiện cấu tạo sau đây:

- Giá đỡ cảm biến siêu âm

- Khung xe mô hình

- Arduino UNO R3 CH340G

- Module điều khiển động cơ I298N

- Module cảm biến siêu âm HC-SR04

Trang 6

CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI

xe tự hành né tránh vật cản”

1.2Tính cấp thiết của đề tài

Xe tự hành là một loại xe robot có khả năng tự dịch chuyển, tự vận động (cóthể lập trình lại được) dưới sự điều khiển tự động có khả năng hoàn thành côngviệc được giao Xe tự hành là một thành phần có vai trò quan trọng trong ngành robothọc Cùng với sự phát triển mạnh mẽ của các hệ thống tự động hóa, xe tự hành ngàymột được hoàn thiện và càng cho thấy lợi ích của nó trong công nghiệp và sinh hoạt.Ngày nay xe tự hành có rất nhiều ứng dụng tự động hóa trong đời sống, côngnghiệp….Có nhiều công việc đòi hỏi thực thi trong môi trường độc hại, nguyhiểm như có phóng xạ, khí độc, bụi bẩn, kí sinh trùng gây bệnh Vì thế giải pháp sửdụng robot nói chung trong việc quan trắc môi trường là rất cần thiết Với khả năngtích hợp nhiều loại cảm biến như nhiệt độ, độ ẩm, bụi, camera, siêu âm, hồngngoại…, robot có khả năng thay thế con người 1 cách hiệu quả trong các côngviệc có độ nguy hiểm cao

Trang 7

Hình 1.1 Xe tự hành thám hiểm sao hỏa Curiosity

Từ tình hình thực tế đó, việc xây dựng các chương trình hoạt động cho các

xe tự hành là điều thiết yếu Một vấn đề rất được quan tâm khi thiết kế xe tự hành làđiều khiển làm sao cho xe có thể đi theo một quỹ đạo mong muốn Bài toán xe tựhành di động bám tường (wall-following problem) là một trong các bài toánthường gặp của robot kiểu phản xạ (reactive paradigm), nó đã được giải bằngnhiều cách khác nhau Bản báo cáo này trình bày phương pháp giải quyết vấn đề đóvới thuật toán điều khiển PID sử dụng Arduino

1.3Tình hình nghiên cứu hiện nay

Khái niệm Robot tự động đang phát triển nhanh chóng về số lượng, Robot tự động vàcấu tạo phức tạp của nó ngày càng nâng cao để phù hợp với từng lĩnh vực khác nhau Có rấtnhiểu loại điều khiển Robot tự động như: Thiết lập đường đi, định vị GPS,… Robot tránhvật cản là loại Robot có khả năng tránh va chạm với trở ngại bất ngờ

1.3.1 Tình hình nghiên cứu quốc tế

Có nhiều hãng xe trên khắp thế giới đã và đang phát triển công nghệ tự động không ngườilái cho các dòng xe của họ có thể kể đến như:

- Hãng xe Tesla

Trang 8

- Hãng xe Ford

- Hãng xe Waymo

- Hãng xe Audi

1.3.2 Tình hình nghiên cứu trong nước

Một số trường đại học và viện nghiên cứu ở Việt Nam đã bắt đầu nghiên cứu về côngnghệ xe tự lái Các nhóm nghiên cứu tại các trường đại học đang tiến hành nghiên cứu về hệthống điều khiển, trí tuệ nhân tạo và cảm biến cho xe tự lái

Một số công ty công nghệ trong nước đã bắt đầu tham gia vào lĩnh vực này Họthường tập trung vào phát triển các phần mềm và giải pháp công nghệ liên quan đến xe tựlái Việt Nam đã thiết lập mối quan hệ hợp tác với các công ty và tổ chức quốc tế trong lĩnhvực xe tự lái Điều này giúp truy cập vào tài liệu nghiên cứu, công nghệ tiên tiến và chuyểngiao kỹ thuật từ các quốc gia phát triển

1.4Tổng kết chương 1

Chương 1 của đề tài “Xe tự hành né tránh vật vản” đã trình bày các phần quan trọng như Đặtvấn đề, Tính cấp thiết của đề tài và Tình hình nghiên cứu hiện nay Chương 1 đã đặt nềnmóng cho đề tài và cung cấp một cái nhìn tổng quan về tình hình và cấp thiết của nghiên cứu

về xe tự hành né tránh vật cản Dự án xe tự hành tránh vật cản được nghiên cứu và thựcnghiệm Xe được sử dụng bằng Arduino sử dụng cảm biến siêu âm để dò tìm để tránh vậtcản

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT VỀ ARDUINO

2.1 Giới thiệu

Trang 9

- Bạn có thể điều khiển các chức năng của bo mạch của mình bằng cách nạp cáctập lệnh đến vi điều khiển trên bo mạch Thông qua phần mềm hỗ trợ là ArduinoIDE

- Không giống như bo mạch có khả năng lập trình trước kia, Arduino chỉ cần bạn

sử dụng cáp USB để nạp mã vào trong bo mạch

- Hơn nữa, phần mềm Arduino IDE sử dụng phiên bản giản thể của C++, làm việchọc lập trình nó trở nên dễ dàng hơn rất nhiều

2.2 Lịch sử ra đời

Năm 2005, một giáo viên ở Ý và nhóm bạn của ông bắt đầu phát triển một nền tảngphần cứng dựa trên vi điều khiển AVR của Atmel Họ đã đặt tên nền tàng này là “Arduino”dựa trên tên của một ngôi làng ở Ý, nơi mà một phần dự án được phát triển Phiên bản đầutiên của Arduino được công bố với tên gọi “Arduino NG”

2.2.1 Dòng Arduino USB

2.2.1.1 Mạch lập trình đầu tiên (2005)

- Được đặt tên là Arduino Serial

- Sử dụng cổng kết nối RS-232 (Serial) thay vì cổng USB (TTL) Qua thời gian, dòngmạch Arduino Serial đã được thiết kế đơn giản hơn, và chỉ cần dùng 1 mặt để mọinhà phát triển có thể tự làm một cái cho bản thân mình bằng cách rửa mạch PCB Nổibật trong số đó là dòng mạch có tên Severino (Aka S3V3) Dòng sản phẩm này có tên

là Arduino Signle-Sided Seria

Trang 10

2.2.1.2Mạch Arduino đầu tiên - Arduino USB (2005)

Dòng mạch Arduino USB được phát triển qua 2 phiên bản (Arduino USB và ArduinoUSB v2.0)

Ở mỗi phiên bản cũng không có sự khác nhau lắm, chỉ khác nhau về địa chỉ trangweb và sửa một lỗi nhỏ ở phần pinout chỗ đầu USB

Ở board mạch Arduino USB này, chúng ta đã thấy có sự xuất hiện của cồng USBType B, như vậy, nguồn điện nuôi Arduino không phải lúc nào cũng là 12V (thường thường

là 12V), vì khi gắn cổng USB Type B ta lại có thể 5V, như vậy nếu đi qua con LM7805 thì

sẽ không đủ điện nuôi cho con ATmega328 Điều đó khiến những nhà phát triển phần cứngArduino phải thích nghi với việc thay đổi header ext or usb mỗi khi thay đổi từ lúc nạpchương trình sang dùng nguồn ngoài

Trang 11

2.2.1.3 Arduino Extreme (2006)

Ở phiên bản này, chúng ta đã có thêm đèn RX, TX ở 2 chân TX và RX của Arduino.Các linh kiện trên Arduino phần lớn được thay thế bằng linh kiện dán

Ngoài ra, các chân header male đã được thay thế với chân header female

Cũng trong năm đó, trang arduino.cc cũng chính thức được ra đời

Arduino Extreme version 2 ra đời, các dây nối giữa các phần trong mạch cũng đượclàm "âm" đất đã cho thay thế phần lớn điện trở, tụ điện trở thành những linh kiện dán, đẹphơn, gọn hơn và hoạt động ổn định hơn nữa Việc tích hợp bóng đèn LED vốn dùng để chiếusáng và đặt vào mạch Arduino để giúp người dùng biết máy tính đã kết nối được với mạchArduino và quá trình nạp chương trình có hoạt động được hay không

Trang 12

2.2.1.4 Arduino NG (2006)

Ở phiên bàn này, Arduino NG đã thay thế chip FT232BM (chuẩn cũ USB to TTL)bằng chíp FT232RL - FTDI ( chuẩn mới USB to Serial), điều đó làm cho thiết kế giao diệnphần cứng của Arduino trong thật sự rất tuyệt vời

Trong board này, họ đã gắn thêm con LED màu xanh tại chân số 13 Đèn LED nàykhông những giúp ta debug được truyền dữ liệu SPI mà còn có "một công cụ" kiểm thửmạch (vì khi được xuất bán, Arduino NG đã được upload chương trình Blink) Ta chỉ cầngắn điện vào cổng USB hoặc nguồn ngoài là có thể kiểm thử được mạch NG

Trang 13

Vi điều khiển ATmega168 kể từ phiên bản Arduino NG Rev.C đã được thay thế choATmega8 ở các phiên bản trước đó và có thể xem là phiên bản đệm tương tự Arduino USBv2.

2.2.1.5 Arduino Diecimila (2007)

Thay đổi chính trong phiên bản này đó là việc đưa vào chức năng "tự động reset"bằng máy tính khi upload chương trình, nghĩa là lúc bấy giờ chúng ta đã có thể lập trìnhArduino như thời điểm hiện tại (gắn cáp USB vào máy tính, viết chương trình, sau đó tảichương trình lên và tận hưởng thành quả)

Với việc cải tiến nút reset cũng đã khiến những nhà lập trình thiết kế lại các chânnguồn, và chân digital pin, cung cấp cho họ nhiều khả năng tùy biến hơn Ví dụ: thêm chânAREF, VIN, RESET,

Trong phiên bản này, Arduino đã sử dụng một mạch "dropout voltage regulator" (khiđiện áp đổi thì điện áp so sánh ở Analog IN vẫn không bị nhiễu), đó là một dự kết hợp hoànhảo chúng ta không cần phải sử dụng tụ 103, 104 để lọc nhiễu cho các chân Analog nữa

Các chân nguồn 3.3V, 5V, GND, Vin đã được điều chỉnh lại và thực sự nó rất ổn nênđến tận bây giờ chúng ta vẫn dùng thiết kế đó và thống nhất đến bây giờ (với các mạch pháttriển khác từ bên thứ 3) Ngoài ra, về vấn đề nguồn, chúng ta đã có một cầu chì dán (có thểsửa được) Nó giúp mạch được bảo vệ trước sự nguy hiểm của sự sơ xẩy đoản mạch, đó làmột sự thích nghi trước những sự hỏng hóc qua cổng USB

Trang 14

2.2.1.6 Arduino Duemilanove (2008 - 2009)

Mạch Arduino Duemilanove đã có khả tự động nhận biết mỗi khi sử dụng nguồn tửcổng USB hay nguồn ngoài (không cần phải thay đổi jumper nữa) Ngoài ra, trong phiên bảnnày, còn bổ sung một đường chì nhỏ được nối tắt nhằm giúp cho có thể hủy chức năng auto-reset (tự động reset khi upload chương trình)

2.2.1.7 Arduino UNO 2010 - đến nay

Cái tên UNO nghĩa là "một" trong tiếng Ý, nó được đặt tên như vậy thì lúc nàyArduino IDE cũng đã gần chạm đến mốc 1.0 Nghĩa là, họ muốn nói rằng, UNO sẽ là mạchtham khảo chính được dùng trong việc hướng dẫn Arduino cho người mới học Họ mất 5năm để định hình một thứ mạch lập trình trở thành một thứ kỳ diệu trong giới DIY (Do ityourself – tự tay làm lấy) và hơn thế nữa, giới nghiên cứu khoa học

5 năm đủ để biến một bản mạch thô sơ, trở thành một thứ mạch "tuyệt đẹp" và "đanăng" như hiện tại

Trang 15

Ở mạch này, ngoài việc thay đổi và cách đặt tên cho dễ xác định các chân I/O,Arduino UNO còn thay con chip FT232RL - FTDI (chuẩn USB to Serial) bằng con chipATMega8U2 (chuẩn Serial TTL Converter) nhưng vẫn giữ được pinout cũ của mạch trước

đó Điều đó làm cho những mạch kế thừa, các dòng phụ trợ cho Arduino USB không bị lỗithời và dễ hòa nhập với nhau

Từ phiên bản Arduino UNO này, Arduino USB đã chính thức phân nhánh ra thành 2nhánh con, đó là Arduino Ethernet và Arduino Leonardo nhằm tối ưu hóa cho các dự án sửdụng Internet (Arduino Ethernet - cái này không phải là shield Ethernet cho Arduino mà làmột board Arduino tích hợp Internet trong một luôn)

Trang 16

Ở các phiên bản Arduino Leonardo, chúng ta có thể được sử dụng như chuột và bànphím.

Trang 17

2.2.1.8 Những dòng Arduino khác

Ngoài dòng Arduino USB kinh điểm trên, chúng ta còn có những dòng Arduino khác

có thể được liệt kê bằng hình ảnh bên dưới

Mỗi dòng lại có những điểm mạnh và điểm yếu riêng, tuy nhiên, đều là sự sáng tạocủa những con người sáng tạo nên mạch Arduino Nhờ những sáng tạo này, họ đã tạo nênmột hệ sinh thái vô cùng lớn với Arduino Chỉ cần một mạch Arduino Mega, bạn đã có thể

tự xây dựng cho mình những cổ máy sáng tạo như máy in 3d, máy khắc laser, tất cả đều lànguồn mở “open source” và bạn có thể tự làm cho mình một cái ngay tại nhà Hay là, vớiArduino Pro mini, những dự án mạng cảm biến chưa bao giờ dễ như thế, hoặc là những dự

án mini robot,

2.2.2 Arduino MEGA

2.2.2.1 Arduino Mega đầu tiên (2009 - 2010)

Arduino MEGA có rất nhiều chân I/O so với dòng Arduino UNO (54 digital I/O và

16 analog I/O), đồng thời bộ nhớ flash của MEGA rất lớn, gấp 4 lần so với UNO (128kb)

Trang 18

với vi điều khiển ATmega1280 Rõ ràng, những dự án cần điều khiển nhiều loại động cơ và

xử lý nhiều luồng dữ liệu song song (3 timer), nhiều ngắt hơn (6 cổng interrupt), có thểđược phát triển dễ dàng với Arduino MEGA, chẳng hạn như: máy in 3d, quadcopter,

Các chân digital từ 0 -> 13, analog từ 0 -> 5 và các chân nguồn được thiết kế tương tựArduino UNO

Để có thể thêm được nhiều vùng nhớ hơn, thêm được nhiều chân I/O hơn, nhà pháttriển đã mạnh dạng thay đổi con vi điều khiển ATmega1280

Cách thiết kế Arduino MEGA tương tự như mạch Arduino UNO nối dài

Một năm sau đó, với những ý tưởng lớn hơn, hay hơn, nhưng cần phải có một dunglượng flash lớn hơn Vì vậy, họ đã thay con ATmega1280 (128kb) bằng con ATmega2560(256kb) và Arduino MEGA 2560 ra đời

Trang 19

2.2.2.3 Arduino DUE (2012)

Arduino DUE là phiên bản đầu tiên sử dụng một vi điều khiển 32 bit thay vì con viđiều khiển 8 bit ATmega2560 trước đây Nó có thể tính toán nhanh hơn 4 lần (nếu so sánhvới mạch 8 bit cùng xung nhịp) Xung nhịp của dòng sản phẩm này cũng cao hơn (84MHz)

Trang 20

2.2.2.4 Arduino Yún (2013)

Arduino Yún thực sự là một "super mini computer" vì nó cực kì nhỏ chạy hệ điềuhành linux (bản mod openwrt) và nó có sẵn Wifi, và đó chính là vì sao Intel đầu tư mạnh vàoArduino và cho ra đời board mạch phát triển IoT Development Kit (códùng ngôn ngữArduino để lập trình)

- Bộ nhớ: Arduino có bộ nhớ để lưu trữ chương trình và dữ liệu Bộ nhớ này bao gồm

Trang 21

- Chân nối: Arduino có các chân nối dùng để kết nối với các thành phân điện tử khácnhư cảm biến, đèn LED, motor và các thiết bị ngoại vi khác Các chân này thường được gánnhãn với các chức năng như đầu vào, đầu ra và các chức năng giao tiếp khác.

- Nút nhấn và LED: Một số phiên bản Arduino có nút nhấn và LED tích hợp sẵn đểlàm việc cho chương trình, gỡ lỗi và hiển thị trạng thái

- Bo mạch và linh kiện khác: Arduino còn có các linh kiện và bo mạch khác như các

bộ tụ, điện trở và các thành phần bảo vệ để bảo vệ điều khiển và cải thiện hoạt động

Kiến trúc phần cứng của Arduino có thể thay đổi tùy thuộc vào phiên bản cụ thể của

bo mạch Nhưng các thành phần cơ bản này giúp Arduino trở thành một nền tảng phát triểnphần cứng linh hoạt và dễ sử dụng cho các dự án điện tử

Ngày đăng: 20/03/2024, 17:12

w