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.
Ban cơ yếu chính phủ Học viện Kỹ thuật mật mã _ 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 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 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 2.2.2.3 Arduino DUE (2012) 18 2.2.2.4 Arduino Yún (2013) .19 2.3 Kiến trúc phần cứng Arduino 19 2.4 Thiết kế nguồn 21 2.4.1 Thiết kế mạch dao động .22 2.4.2 Thiết kế mạch reset 23 2.4.3 Thiết kế mạch nạp và giao tiếp máy tính 24 2.5 Môi trường phát triển phần mềm Arduino 25 1 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 2 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 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 - Kết luận Trong quá trình làm báo cáo, do trình độ chuyên môn còn hạn chế và điều kiện không thuận lợi nên không thể tránh khỏi những sai sót, rất mong được sự đóng góp của các thầy, cô và các bạn để báo cáo được hoàn thiện hơn 3 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 khi nhậ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 - Động cơ Servo SG90RC - Dây nguồn DC 5.5x2.1mm - Cáp - PIN lithium 18650 3,7V 2500mAh - Đế 2 PIN 18650 chân hàn mạch PCB 4 CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI 1.1 Đặt vấn đề Ngày nay, con người cùng với những ứng dụng của khoa học kỹ thuật tiên tiến của thế giới, chúng ta đã và đang ngày một thay đổi, văn minh và hiện đại hơn Sự phát triển của kỹ thuật điện tử đã tạo ra hàng loạt những thiết bị với các đặc điểm nổi bật như sự chính xác cao, tốc độ nhanh, gọn nhẹ…là những yếu tố cần thiết góp phần cho hoạt động của con người đạt hiệu quả ngày càng cao hơn Nó đã đáp ứng những đòi hỏi không ngừng của các ngành, lĩnh vực khác nhau cho đến nhu cầu thiết yếu của con người trong cuộc sống hàng ngày Xuất phát từ những ứng dụng đó, chúng em đã thiết kế và thực hiện đề tài: Điều khiển 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ông việc được giao Xe tự hành là một thành phần có vai trò quan trọng trong ngành robot họ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ày mộ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ông nghiệp….Có nhiều công việc đòi hỏi thực thi trong môi trường độc hại, nguy hiể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ăng tích hợp nhiều loại cảm biến như nhiệt độ, độ ẩm, bụi, camera, siêu âm, hồng ngoại…, robot có khả năng thay thế con người 1 cách hiệu quả trong các công việc có độ nguy hiểm cao 5 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án thường gặp của robot kiểu phản xạ (reactive paradigm), nó đã được giải bằng nhiề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ất nhiểu loại điều khiển Robot tự động như: Thiết lập đường đi, định vị GPS,… Robot tránh vậ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ười lái cho các dòng xe của họ có thể kể đến như: - Hãng xe Tesla - Hãng xe Volvo 6 - 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ông nghệ 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ĩnh vự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ển giao 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ư Đặt vấ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ền mó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ực nghiệ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ật cản CHƯƠNG 2: CƠ SỞ LÝ THUYẾT VỀ ARDUINO 2.1 Giới thiệu Arduino là một nền tảng nguyên mẫu (mã nguồn mở) dựa trên nền phần mềm và phần cứng dễ sử dụng Nó bao gồm một bo mạch - thứ mà có thể được lập trình (đang đề cập đến vi điều khiển) và một phần mềm hỗ trợ gọi là Arduino IDE (Môi trường phát triển tích hợp cho Arduino), được sử dụng để viết và nạp từ mã máy tính sang bo mạch vật lý Những tính năng chính như: - Các bo mạch Arduino có khả năng đọc các tín hiệu tương tự (analog) hoặc tín hiệu số (digital) làm đầu vào từ các cảm biến khác nhau và chuyển nó thành đầu ra như kích hoạt mô-tơ quay, bật/tắt đèn LED, kế nối mạng Internet hoặc nhiều hoạt động khác nữa 7 - 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ác tập lệnh đến vi điều khiển trên bo mạch Thông qua phần mềm hỗ trợ là Arduino IDE - 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ệc họ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ảng phầ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 đầu tiê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òng mạch Arduino Serial đã được thiết kế đơn giản hơn, và chỉ cần dùng 1 mặt để mọi nhà 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ổi bậ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 8 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à Arduino USB 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ỉ trang web 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 USB Type 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ứng Arduino phải thích nghi với việc thay đổi header ext or usb mỗi khi thay đổi từ lúc nạp chương trình sang dùng nguồn ngoài 9