1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo môn học công nghệ phần mềm nhúng đề tài thiết kế xe dò đường tránh vật cản sử dụng arduino

59 11 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

Định dạng
Số trang 59
Dung lượng 9,55 MB

Nội dung

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: THIẾT KẾ XE DÒ ĐƯỜNG TRÁNH VẬT CẢN SỬ DỤNG ARDUINO Giáo Viên Hướng Dẫn : Th.S Lê Đức Thuận Thực hiện: Nhóm 15- Lớp C403 Nguyễn Trọng Hiếu- CT040219 Uông Thị Vân Kiều- CT040228 Lê Đức Thọ- CT040247 HÀ NỘI – 2022 MỤC LỤC DANH MỤC HÌNH ẢNH .5 DANH MỤC TỪ VIẾT TẮT LỜI MỞ ĐẦU CHƯƠNG 1: LÝ THUYẾT TỔNG QUAN 10 1.1 Tình hình phát triển nghiên cứu tới 10 1.2 Mô hình sản phẩm hướng tới .12 1.3 Các thiết bị phần cứng, phầm mềm sử dụng .14 1.3.1 Arduino Uno R3 14 1.3.2 Arduino Motor Shield L293D 19 1.3.3 Cảm biến vật cản hồng ngoại 20 1.3.4 Động chiều 23 1.3.5 Cảm biến siêu âm HC- SR04 .24 1.3.6 Một số linh kiện khác 26 1.3.7 Phần mềm Arduino IDE .29 Chương 2: Phân Tích Thiết Kế Hệ Thống 31 2.1 Phân tích hệ thống .31 2.1.1 Xây dựng biểu đồ use case tổng quát 31 2.1.2 Đặc tả ca sử dụng 31 2.1.3 Biểu đồ trình tự 35 2.2 Thiết kế hệ thống 38 2.2.1 Sơ đồ khối nguyên lý hoạt động 38 2.2.2 Sơ đồ thuật toán 40 2.3 Sơ đồ nối dây .43 2.3.1 Sơ đồ kết nối động với Shield L293D 43 2.3.2 Sơ đồ kết nối mạch với cảm biến siêu âm 43 2.3.4 Sơ đồ mạch kết nối với cảm biến hồng ngoại 44 2.4 Mạch thực tế 46 2.4.1 Động xe 46 2.4.2 Cảm biến dò đường 46 2.4.3 Cảm biến vật cản 47 Chương 3: Thực Nghiệm .48 3.1 Kịch thực nghiệm 48 3.2 Đánh giá 49 Kết Luận 50 Tài Liệu tham khảo 51 Phụ Lục 52 DANH MỤC HÌNH ẢNH Hình 1.1 Xe vận chuyển hàng hóa 10 Hình 1.2 Ơ tơ tự lái 11 Hình 1.3 Robot hút bụi 12 Hình 1.4 Robot dị đường mê cung 13 Hình 1.5 Robot thám hiểm 13 Hình 1.6 Arduino Uno R3 .15 Hình 1.7 Vi điều khiển 16 Hình 1.8 Các cổng vào 18 Hình 1.9 Module điều khiển động 19 Hình 1.10 Cảm biến hồng ngoại 21 Hình 1.11 Nguyên lý hoạt động cảm biến hồng ngoại 22 Hình 1.12 Sơ đồ cảm biến hồng ngoại 22 Hình 1.13 Động chiều 23 Hình 1.14 Cảm biến siêu âm HC-SR04 24 Hình 1.15 Nguyên lý hoạt động cảm biến siêu âm 25 Hình 1.16 Khung xe robot bánh 26 Hình 1.17 Tấm formex 27 Hình 1.18 Dây đực – đực .28 Hình 1.19 Dây cái- 28 Hình 1.20 Dây đực 29 Hình 1.21 Đế pin 29 Hình 1.22 Màn hình làm việc Arduino IDE 30 Hình 2.1 Sơ đồ UseCase Tổng quát .31 Hình 2.2 Biểu đồ trình tự tiến lên 35 Hình 2.3 Biểu đồ trình tự rẽ phải 36 Hình 2.4 Biểu đồ trình tự rẽ trái 37 Hình 2.5 Biểu đồ trình tự tránh vật cản 38 Hình 2.6 Sơ đồ chương trình .41 Hình 2.7 Sơ đồ thuật toán tự động 42 Hình 2.8 Kết nối động với Shield L293D 43 Hình 2.9 Kết nối mạch với cảm biến siêu âm 44 Hình 2.10 Kết nối mạch với cảm biến hồng ngoại 44 Hình 2.11 Cảm biến line 46 Hình 2.13 Cảm biến siêu âm 47 Hình 3.1 Xe sau lắp xong 48 DANH MỤC BẢN Bảng 1.1 Thông số kỹ thuật Arduino Uno R3 17 Bảng 1.3 Các chân Cảm biến siêu âm 27 Bảng 2.1 Ca sử dụng tiến lên 34 Bảng 2.2 Ca sử dụng rẽ trái 34 Bảng 2.3 Ca sử dụng rẽ phải 35 Bảng 2.4 Ca sử dụng tránh vật cản 36 Bảng 2.5 Sơ đồ khối tổng quát 41 Bảng 2.6 Các chân kết nối động 45 Bảng 2.7 Chân kết nối cảm biến siêu âm 46 Bảng 2.8 Chân kết nối cảm biến hồng ngoại 47 DANH MỤC TỪ VIẾT TẮT Từ viết tắt Từ tiếng anh Mô tả IoT Internet of thing Internet vạn vật AI artificial intelligence trí tuệ nhân tạo VR Virtual Reality thực tế ảo AR Augmented Reality tương tác thực ảo SMAC social, mobile, analytics and cloud mạng xã hội, điện toán đám mây, phân tích liệu lớn AGV Autonomous Guided Vehicles Xe tự hành PWM Pulse Width Modulation IDE Intergrated Development Environment Phương pháp điều chế xung Môi trường phát triển tích hợp LỜI MỞ ĐẦU Trên giới trải qua ba cách mạng công nghiệp lớn Sau cách mạng, làm thay đổi giới tất mặt kinh tế, xã hội văn hóa Và giới bước vào cách mạng công nghiệp lần thứ tư Đây gọi cách mạng số, thông qua cơng nghệ Internet vạn vật (loT), trí tuệ nhân tạo (AI), thực tế ảo (VR), tương tác thực ảo (AR), mạng xã hội, điện toán đám mây, phân tích liệu lớn (SMAC) số xe tự hành Các chuyên gia dự đoán, khoảng 15 đến 20 năm nữa, xe tự hành áp đảo phương tiện thịnh hành Hiện có nhiều tập đồn sản xuất xe công nghệ lớn giới tham gia vào chạy đua phát triển xe công nghệ tự lái thông minh (gọi tắt xe tự lái, xe tự hành) mà không cần đến bàn tay can thiệp người, có tên tuổi nối bật Tesla, Daimler hay Google Xe dò đường tránh vật cản ý tưởng xe tự hành nhất, sử dụng cho mục địch vận tải quy mô nhỏ kết hợp với modun khác để thực nhiệm vụ phức tạp Nhận thấy tầm quan trọng này, nên báo cáo nhóm nghiên cứu xe tự hành dò đường tránh vật cản, sử dụng cảm biến siêu âm để đo khoảng cách đến vật cản Để thực báo cáo nhóm sử dụng phần cứng board Arduino Uno nạp sẵn chương trình, kết hợp với cảm biến siêu âm HC-SR04 cảm biến hồng ngoại module điều khiển động L293D Nội dung báo cáo gồm phần: -Chương 1: Lý Thuyết Tổng Quan -Chương 2: Phân Tích Thiết Kế Hệ Thống -Chương 3: Thực Nghiếm -Kết luận Trong trình làm báo cáo, trình độ chun mơn cịn hạn chế điều kiện không thuận lợi nên tránh khỏi sai sót, mong đóng góp thầy, bạn để báo cáo hồn thiện Nhóm Thực Hiện Đề Tài CHƯƠNG 1: LÝ THUYẾT TỔNG QUAN 1.1 Tình hình phát triển nghiên cứu tới Ngày nay, với ứng dụng khoa học kỹ thuật tiên tiến, giới ngày thay đổi, văn minh đại Với phát triển vượt bậc khoa học kỹ thuật cho đời sản phẩm vi mạch tiên tiến với tốc độ vượt trội Những vi mạch áp dụng vào Robot để giúp người hồn thành cơng việc từ đơn giản đến phức tạp sống Nhu cầu công nghiệp, đời sống ngày đại chất xúc tác đẩy mạnh thêm cách mạng cơng nghệ 4.0 Theo dự đốn sau cách mạng lớn internet cách mạng lĩnh vực robot Trong đó, Robot dị đường khái niệm công nghệ quen thuộc với sinh viên, kỹ sư ngành kĩ thuật Ứng dụng Robot dò đường áp dụng nhiều lĩnh vực, ngành nghề sống như: Robot vận chuyển hàng hóa: Hình 1.1 Xe vận chuyển hàng hóa Robot vận chuyển hàng hóa hay biết đến xe tự hành AGV (Autonomous Guided Vehicles) Đây Robot vận hành nhiều khu công nghiệp lớn Với nhiệm vụ phân phối vận chuyển hàng hóa cách tự động Với kết hợp Sensor Hình 2.31 Kết nối mạch với cảm biến siêu âm Bảng 2.7 Chân kết nối cảm biến siêu âm Động Cảm biến siêu âm HC-SR04 VCC GND ECHO TRIG L293D 5V GND A1 A0 2.3.4 Sơ đồ mạch kết nối với cảm biến hồng ngoại Hình 2.32 Kết nối mạch với cảm biến hồng ngoại Bảng 2.8 Chân kết nối cảm biến hồng ngoại Động Cảm biến hồng ngoại HW-201 VCC GND OUT L293D 5V GND A2(trái) A3(phải) A4(giữa) 2.3.5 Sơ đồ tổng quát hệ thống Hình 2.9 Sơ đồ tổng quát hệ thống 2.4 Mạch thực tế 2.4.1 Động xe Hình 2.10 Động xe 2.4.2 Cảm biến dị đường Hình 2.33 Cảm biến line 2.4.3 Cảm biến vật cản Hình 2.34 Cảm biến siêu âm Chương 3: Thực Nghiệm 3.1 Kịch thực nghiệm Đặt xe đường line cố định màu đèn, bật công tắc cho xe xem xe có chạy thiết kế hay khơng Nếu có đặt thêm vật cản để xe tránh Hình 3.35 Xe sau lắp xong 3.2 Đánh giá - Xe chạy nhanh đường line thẳng, chạy chậm đường line rẽ phải, trái Xe tránh vật cản trường hợp vật cản to xe chạy lỗi Chạy ổn định nguồn mạnh Xe chạy tầm 10p bắt gặp tượng ngừng chạy, chạy ngập ngừng Kết Luận a) Về mạch hoạt động theo đường kẻ vẽ sẵn b) Nhưng tồn số vấn đề sau: + Cảm biến hồng ngoại cịn có hạn chế: Mức độ hồng ngoai hồi tiếp cịn phụ thuộc vào độ sáng mơi trường Khi mơi trường có nguồn sáng khơng ổn định mơi trường tối xe hoạt động khơng ổn định + Khi di chuyển đường kẻ phức tạp xe hoạt động trở nên khơng xác + Nguồn cấp cịn hạn chế c) Ưu điểm: +Xe thiết kế đơn giản, giá thành thấp dễ dàng cho người tìm hiểu nghiên cứu +Về theo đường kẻ sẵn, tránh vật cản => hoàn thành mục tiêu đặt d) Khuyết điểm: + Khi xe dò đường kẻ phức tạp hoạt động cịn nhiều sai sót + Phần code tránh vật cản code hoạt động cách thủ công chưa thật tự động * Hướng phát triển: Dù ứng dụng nhỏ, sở để phát triển dự án lớn tối tân Những dự án Robot mê cung hay Robot vận chuyển hàng hóa, Robot thám hiểm Dự án xe dị đường tránh vật cản cải tiến cho nhiều ứng dụng đại Robot dò đường PIC, Robot dò đường micro 51 Robot dò đường siêu âm Tài Liệu tham khảo [1] R Man, "Chế robot dò line tránh vật cản sử dụng arduino V2," [Online] Available: https://www.youtube.com/watch?v=Js5XzLoxL3Q [2] instructable_translator, "Cách dùng Module điều khiển động L293DN - cầu H để điều khiển động DC," [Online] Available: http://arduino.vn/bai-viet/893-cachdung-module-dieu-khien-dong-co-L293Dn-cau-h-de-dieu-khien-dong-co-dc [3] P HUY, "Mô-đun cảm biến hồng ngoại (IR) với Arduino," [Online] Available: https://thuongtin.net/mo-dun-cam-bien-hong-ngoai-ir-voi-arduino/ [4] minhsgc, "Robot tránh vật cản," [Online] Available: http://arduino.vn/result/1306robot-tranh-vat-can [5] jckuri, "line-follower-robot," [Online] Available: https://github.com/jckuri/linefollower-robot Phụ Lục Code: // thư viện #include #include #define left A2 #define right A1 #define center A0 #define TRIG_PIN A4 #define ECHO_PIN A5 #define MAX_DISTANCE 200 #define MAX_SPEED 190 AF_DCMotor motor1(1, MOTOR12_1KHZ); AF_DCMotor motor2(2, MOTOR12_1KHZ); AF_DCMotor motor3(3, MOTOR34_1KHZ); AF_DCMotor motor4(4, MOTOR34_1KHZ); int distance; int speedSet = 0; boolean goesForward=false; NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE); void setup() { pinMode(left, INPUT); pinMode(right, INPUT); pinMode(center, INPUT); } void loop() { distance = readPing(); if (distance < 25) { moveBackward(); delay(200); turnRight(); delay(500); moveForward(); delay(200); turnLeft(); delay(500); turnLeft(); delay(500); moveForward(); } if (digitalRead(left) == && digitalRead(right) == && digitalRead(center) == 1) { // Robot di chuyển tiến motor1.run(FORWARD); motor1.setSpeed(150); // tốc độ di chuyển robot phạm vi từ đến 255 motor2.run(FORWARD); motor2.setSpeed(150); // tốc độ di chuyển robot phạm vi từ đến 255 motor3.run(FORWARD); motor3.setSpeed(150); // tốc độ di chuyển robot phạm vi từ đến 255 motor4.run(FORWARD); motor4.setSpeed(150); } // Robot so sánh tín hiệu cảm biến else if (digitalRead(left) == && digitalRead(right) == && digitalRead(center) == 0) { // rẽ trái motor1.run(FORWARD); motor1.setSpeed(150); motor2.run(FORWARD); motor2.setSpeed(150); motor3.run(BACKWARD); motor3.setSpeed(150); motor4.run(BACKWARD); motor4.setSpeed(150); } else if (digitalRead(left) == && digitalRead(right) == && digitalRead(center) == 1) { // rẽ trái motor1.run(FORWARD); motor1.setSpeed(150); motor2.run(FORWARD); motor2.setSpeed(150); motor3.run(BACKWARD); motor3.setSpeed(150); motor4.run(BACKWARD); motor4.setSpeed(150); } // Robot so sánh tín hiệu cảm biến else if (digitalRead(left) == && digitalRead(right) == && digitalRead(center) == 0) { // rẽ phải motor1.run(BACKWARD); motor1.setSpeed(150); motor2.run(BACKWARD); motor2.setSpeed(150); motor3.run(FORWARD); motor3.setSpeed(150); motor4.run(FORWARD); motor4.setSpeed(150); } else if (digitalRead(left) == && digitalRead(right) == && digitalRead(center) == 1) { // rẽ phải motor1.run(BACKWARD); motor1.setSpeed(150); motor2.run(BACKWARD); motor2.setSpeed(150); motor3.run(FORWARD); motor3.setSpeed(150); motor4.run(FORWARD); motor4.setSpeed(150); } // cảm biến khơng có tín hiệu trả else if (digitalRead(left) == && digitalRead(right) == && digitalRead(center) == 1) { moveStopped(); } } void turnRight() { // di chuyển qua phải motor1.run(FORWARD); motor2.run(FORWARD); motor3.run(BACKWARD); motor4.run(BACKWARD); delay(500); motor1.run(FORWARD); motor2.run(FORWARD); motor3.run(FORWARD); motor4.run(FORWARD); } void turnLeft() { // di chuyển qua trái motor1.run(BACKWARD); motor2.run(BACKWARD); motor3.run(FORWARD); motor4.run(FORWARD); delay(500); motor1.run(FORWARD); motor2.run(FORWARD); motor3.run(FORWARD); motor4.run(FORWARD); } void moveForward() { // tiến phía trước if(!goesForward) { goesForward=true; motor1.run(FORWARD); motor2.run(FORWARD); motor3.run(FORWARD); motor4.run(FORWARD); for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) // slowly bring the speed up to avoid loading down the batteries too quickly { motor1.setSpeed(speedSet); motor2.setSpeed(speedSet); motor3.setSpeed(speedSet); motor4.setSpeed(speedSet); delay(5); } } } void moveStopped() { motor1.run(RELEASE); motor1.setSpeed(0); motor2.run(RELEASE); motor2.setSpeed(0); motor3.run(RELEASE); motor3.setSpeed(0); motor4.run(RELEASE); motor4.setSpeed(0); } void moveBackward() { // di chuyển phía sau goesForward=false; motor1.run(BACKWARD); motor2.run(BACKWARD); motor3.run(BACKWARD); motor4.run(BACKWARD); for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) // slowly bring the speed up to avoid loading down the batteries too quickly { motor1.setSpeed(speedSet); motor2.setSpeed(speedSet); motor3.setSpeed(speedSet); motor4.setSpeed(speedSet); delay(5); } } int readPing() { // khoảng cách delay(70); int cm = sonar.ping_cm(); if (cm == 0) { cm = 250; } return cm; }

Ngày đăng: 25/05/2023, 19:58

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w