Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 50 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
50
Dung lượng
1,91 MB
Nội dung
SAIGON TECHNOLOGY UNIVERSITY BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CƠNG NGHỆ SÀI GỊN KHOA ĐIỆN – ĐIỆN TỬ LUẬN VĂN TỐT NGHIỆP THIẾT KẾ XE TRÁNH VẬT CẢN VÀ ĐIỀU KHIỂN TỪ XA BẰNG BLUETOOTH GVHD: ThS TRẦN THỊ HUYỀN TRANG SVTH: TRẦN QUỐC CƯỜNG NGUYỄN TRỌNG HỒNG Tp Hồ Chí Minh Tháng 07/2018 LỜI CẢM ƠN Trên thực tế khơng có thành cơng mà không gắn liền với hỗ trợ, giúp đỡ dù hay nhiều, dù trực tiếp hay gián tiếp ngƣời xung quanh Trong trình làm đồ án tốt nghiệp, em nhận đƣợc nhiều giúp đỡ, đóng góp ý kiến bảo nhiệt tình Thầy Cơ, gia đình bạn bè Với lòng biết ơn sâu sắc nhất, em xin gửi đến quý Thầy Cô khoa Điện-Điện Tử trƣờng Đại Học Cơng Nghệ Sài Gịn với tri thức tâm huyết truyền đạt vốn kiến thức quý báu cho em suốt thời gian học tập trƣờng Và em xin gửi lời cảm ơn chân thành tới Cô Th.s Trần Thị Huyền Trang, ngƣời tận tình hƣớng dẫn, bảo, cung cấp cho em kiến thức tài liệu Arduino cần thiết để em hồn thành khóa luận Cuối em xin chân thành cảm ơn gia đình, bạn bè, tạo điều kiện quan tâm, giúp đỡ, động viên em suốt q trình học tập hồn thành khóa luận tốt nghiệp TĨM TẮT ĐỀ TÀI Theo dự đoán tƣơng lai, robot tâm điểm cách mạng lớn sau Internet Con ngƣời có nhu cầu sở hữu robot cá nhân nhƣ nhu cầu máy tính PC Với xu hƣớng này, ứng dụng truyền thống khác robot công nghiệp, y tế, giáo dục đào tạo, giải trí đặc biệt an ninh quốc phịng thị trƣờng robot vơ to lớn Đề tài luận văn hƣớng tới nguyên lý đo khoảng cách cảm biến siêu âm robot tự hành, tạo tiền đề cho việc xây dựng robot dịch vụ hồn chỉnh, có khả phục vụ cho đời sống ngƣời Khoa học công nghệ ln có thay đổi mẻ, kinh tế tri thức với cơng nghệ thơng tin góp phần quan trọng vào việc thay đổi đời sống ngƣời.Trong kinh tế tri thức sự, phát triển xã hội tách rời phát triển công nghệ thông tin, ngành công nghệ tạo sản phẩm robot nghiên cứu ứng dụng hình thành thập kỷ gần gọi Robotics Trong khn khổ luận văn, nhóm tập trung xây dựng xe mơ hình hồn chỉnh có khả tránh chƣớng ngại vật quãng đƣờng di chuyển đồng thời điều khiển từ xa sóng Bluetooth thông qua ứng dụng thiết bị Android MỤC LỤC CHƢƠNG GIỚI THIỆU 1.1 ĐẶT VẤN ĐỀ 1.2 MỤC TIÊU CỦA LVTN 1.3 ĐỐI TƢỢNG VÀ PHẠM VI LVTN 1.3.1 Đối tƣợng nghiên cứu: 1.3.2 Phạm vi nghiên cứu: CHƢƠNG TỔNG QUAN VỀ ĐỀ TÀI 2.1 Giới thiệu toán 2.2 Nhiệm vụ đề tài 2.3 Yêu cầu kết đạt đƣợc 2.4 Các khối chức 2.5 Giới thiệu xe tự hành tránh vật cản 2.6 Cấu tạo phần cứng 2.6.1 ARDUINO UNO R3: 2.6.2 Các cổng I/O: 2.6.3 Vi điều khiển 2.6.4 Động 2.6.5 Module L298: 10 2.6.6 Mạch cầu H 12 2.6.7 Module Bluetooth HC-06 13 2.6.8 Cảm biến siêu âm SRF05 : 14 3.1 Cảm biến siêu âm SRF05 đặc điểm kĩ thuật: 15 3.1.1 Giới thiệu: 15 3.1.2 Các chế độ SRF05: 15 3.1.3 Nguyên lý đo khoảng cách SRF05 17 3.2 Hoạt động phát nhận phản hồi sóng âm SRF05: 17 3.2.1 Nguyên tắc sonar (kĩ thuật định vị sóng siêu âm): 17 3.2.2 Một số điểm ảnh hƣởng đến SRF05: 18 3.2.3 Vùng phát SRF05: 18 3.3 Cấu tạo chế độ hoạt động xe 19 3.3.1 Sơ đồ nguyên lý toàn mạch 20 3.3.2 Các chế độ hoạt động xe 21 3.3.3 Giới thiệu App điều khiển xe từ xa thông qua bluetooth: 22 CHƢƠNG 24 LƢU ĐỒ GIẢI THUẬT - CHƢƠNG TRÌNH 24 4.1 Lƣu đồ giải thuật chƣơng trình: 24 4.2 Lƣu đồ giải thuật chƣơng trình chế độ 2: 25 4.3 Chƣơng trình xe chạy thẳng: 26 4.4 Chƣơng trình xử lý vật cản: 27 CHƢƠNG 46 KẾT LUẬN 46 5.1 Kết đạt đƣợc 46 5.2 Hạn chế đề tài 47 5.3 Hƣớng phát triển đề tài 47 CHƢƠNG GIỚI THIỆU 1.1 ĐẶT VẤN ĐỀ Hiện nay, tin học ứng dụng rộng rãi hầu hết ứng dụng kinh tế quốc gia Một ứng dụng đƣợc sử dụng gần ứng dụng công nghệ thông tin vào công nghệ chế tạo điều khiển robot thông minh Với kiến thức tự tìm hiểu Arduino thiết kế phần cứng mơ hình robot, chúng em áp dụng nhằm tạo mơ hình xe tránh vật cản sử dụng thuật tốn đƣợc lập trình sẵn hoạt động theo u cầu đề tài Mơ hình sử dụng cảm biến siêu âm SRF05 với mục đích phát sóng siêu âm để phát vật cản (tĩnh) xuất phía trƣớc để tìm đƣờng khơng va phải Ngồi cịn kết hợp thêm chế độ điều khiển Bluetooth thông qua module HC-06 1.2 MỤC TIÊU CỦA LVTN Mục tiêu luận văn xây dựng xe tự động tránh vật cản đồng thời có chế độ hoạt động điều khiển từ xa qua Bluetooth 1.3 ĐỐI TƢỢNG VÀ PHẠM VI LVTN 1.3.1 Đối tƣợng nghiên cứu: - Nghiên cứu nguyên lý đo khoảng cách cảm biến siêu âm SRF05 - Phƣơng pháp điều khiển động (tự hành) - Phƣơng pháp điều khiển từ xa sóng vô tuyến RF 1.3.2 Phạm vi nghiên cứu: Không gian làm việc xe mặt phẳng đƣợc giới hạn tƣờng, vật cản đƣợc xem vật cản chiều tĩnh hoàn toàn CHƢƠNG TỔNG QUAN VỀ ĐỀ TÀI 2.1 Giới thiệu toán Tên đề tài: “Xe tự động tránh vật cản có kết hợp chết độ điều khiển từ xa Bluetooth” Robot sử dụng cảm biến siêu âm SRF05 để đo khoảng cách Môi trƣờng làm việc mặt phẳng, đƣợc giới hạn tƣờng vật cản đƣợc xem nhƣ vật cản chiều tĩnh hoàn toàn Sensor cảm biến SRF05 tiến hành đo khoảng cách theo hƣớng bên trái, bên phải sau gửi kết đo đạc vi điều khiển Vi điều khiển vào kết đo đạc cảm biến SRF05 tiến hành xử lý định điều khiển động hay động 2.2 Nhiệm vụ đề tài Hoàn chỉnh thiết kế thi cơng xe tự động có cảm biến tự tránh vật cản, có thu Bluetooth để nhận điều khiển từ ngƣời dùng Hoạt động tốt chế độ Chế độ 1: Xe tự hành tránh vật cản địa hình cho trƣớc Chế độ 2: Ngƣời dùng điều khiển mơ hình xe thơng qua thiết bị Android kết nối với Bluetooth xe 2.3 Yêu cầu kết đạt đƣợc Robot có khả tự tránh vật cản dựa vào Sensor cảm biến siêu âm SRF05, cảm nhận môi trƣờng xung quanh Robot Robot có khả hoạt động dƣới điều khiển từ xa ngƣời dùng thông qua sóng Bluetooth 2.4 Các khối chức Từ việc xác định chức cần phải có toán, ta xác định đƣợc toán cần khối chức nhƣ sau: Khối nguồn Khối cảm biến (SRF05) Khối Bluetooth (HC-06) SMARTPHONE Khối điều khiển trung tâm (Arduino Uno R3) Động quay cảm biến (Servo SG90) Khối điều khiển động (L298) Động điều khiển bánh xe Hình 2.1: Sơ đồ khối mơ hình Khối nguồn: Chức cấp nguồn điện đầu vào cho hệ thống Khối điều khiển động cơ: Module L298 điều khiển hoạt động hai đông DC Khối cảm biến: cảm biến siêu âm SRF05 xác định khoảng cách vị trí vật cản Khối xử lý trung tâm: Arduino Uno R3 nhận tín hiệu từ khối khác, xử lý thơng tin giải theo chƣơng trình đƣợc lập trình sẵn 2.5 Giới thiệu xe tự hành tránh vật cản Xe tự hành tránh vật cản đƣợc định nghĩa loại xe có khả tự động di chuyển (có thể lập trình lại đƣợc) dƣới điều khiển tự động để hồn thành cơng việc đƣợc lập trình sẵn nhƣ tránh vật cản động hay tĩnh, tránh hố sâu, … Cũng tùy theo mục đích cơng việc đƣợc giao mà xe tự hành hoạt động mơi trƣờng khác Địa hình hoạt động đơn giản xe tự hành tránh vật cản mặt đất phẳng lồi lõm Theo phận thực chuyển động chia xe tự hành thành lớp: chuyển động chân bánh Trong đề tài nhóm chúng em nghiên cứu xe tự hành chuyển động bánh, xe chuyển động bánh làm việc tốt hầu hết địa hình ngƣời tạo ra, điều khiển bánh đơn giản nhiều, gần nhƣ ln đảm bảo tính ổn định Lớp chuyển động bánh chia làm loại: loại chuyển động bánh xe, loại chuyển động xích, loại chuyển động hỗn hợp bánh xe vịng xích Tiềm ứng dụng robot tự hành lớn kể đến robot tự hành vận chuyển vật liệu, hàng hóa tịa nhà, nhà máy, cửa hàng, sân bay hay thƣ viện, robot xe lăn phục vụ ngƣời khuyết tật, v.v Mặc dù có tính ứng dụng cao nhƣng hạn chế chƣa giải đƣợc robot tự hành nhƣ chi phí chế tạo cao nên chƣa cho chúng ứng dụng rộng rãi vào thực tế Ngồi cịn phải nói nhƣợc điểm robot tự hành thiếu tính linh hoạt thích ứng làm việc vị trí khác 2.6 Cấu tạo phần cứng 2.6.1 ARDUINO UNO R3: Giới thiệu Arduino Uno R3: Nhắc tới dòng mạch Arduino dùng để lập trình, mà ngƣời ta thƣờng nói tới dịng Arduino UNO Hiện dịng mạch phát triển tới hệ thứ (R3) Hình 2.2: Cấu tạo Arduino Uno R3 2.6.2 Các cổng I/O: : Hình 2.3: Sơ đồ cổng I/O Arduino UNO có 14 chân digital dùng để đọc xuất tín hiệu Chúng có mức điện áp 0V 5V với dòng vào/ra tối đa chân 40mA Ở chân có điện trở pull-up đƣợc cài đặt vi điều khiển ATmega328 (mặc định điện trở khơng đƣợc kết nối) Một số chân digital có chức đặc biệt nhƣ sau: chân Serial: (RX) (TX): dùng để gửi (transmit – TX) nhận (receive – RX) liệu TTL Serial Arduino Uno giao tiếp với thiết bị khác thơng qua chân Kết nối bluetooth thƣờng thấy nói nơm na kết nối Serial khơng dây Nếu không cần giao tiếp Serial, không nên sử dụng chân không cần thiết Chân PWM (~): 3, 5, 6, 9, 10, 11: cho phép xuất xung PWM với độ phân giải bit (giá trị từ → 28-1 tƣơng ứng với 0V → 5V) hàm analogWrite() Nói cách đơn giản, điều chỉnh đƣợc điện áp chân từ mức 0V đến 5V thay cố định mức 0V 5V nhƣ chân khác Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Ngồi chức thơng thƣờng, chân cịn dùng để truyền phát liệu giao thức SPI với thiết bị khác 33 motor_left( spd , 0); motor_right( spd - 20 , 0); } void rightback () // quay phải chậm { Serial.println("motor quay trai chậm "); motor_left( spd , 1); motor_right( spd - 20 , 1); } void leftback () // quay phai chậm { Serial.println("motor quay phải chậm "); motor_left( spd - 20 , 1); motor_right( spd , 1); } void tack() { motor_left( spd , 2); motor_right( spd , 2); } void den_tien() { digitalWrite(ledtruoc, HIGH); } 34 void den_lui() { digitalWrite(ledsau, HIGH); } void tat_den() { digitalWrite(ledsau, LOW); digitalWrite(ledtruoc, LOW); } void bat_den() { digitalWrite(ledsau, HIGH); digitalWrite(ledtruoc, HIGH); } void da_dentruoc() { digitalWrite(ledtruoc, HIGH); delay(100); digitalWrite(ledtruoc, LOW); delay(500); } void da_densau() { digitalWrite(ledsau, HIGH); delay(100); digitalWrite(ledsau, LOW); 35 delay(500); } // chƣơng trình giao tiếp với app điều khiển void robot_android() { if ( bluetooth.available() ) { blue = bluetooth.read(); Serial.println("gia tri cua blue la "); Serial.println(blue); // xem kết nhận đƣợc if (blue == 'W') // W tín hiệu đƣợc mã hóa từ app điều khiển { a = 1; // biến nhớ blue W a = } if (blue == 'U') { a = 0; // biến nhớ blue U a = } } if (a == 0) // a = có nghĩa tín hiệu nhận U từ phím nhấn app { switch (blue ) { case ('W'): a = 1; // biến blue : // W a =1 36 da_dentruoc(); // led den_tien(); // led break; case ('U'): a = 0; // ngồi vịng lặp // U a = // led da_densau(); den_lui(); break; case ('V'): bat_den(); // thoát // V // bật đèn led break; case ('0'): spd = 70; case ('1'): spd = 80; break; case ('2'): spd = 100; break; case ('3'): spd = 110; break; case ('4'): spd = 127; break; case ('5'): spd = 140; // từ đến giá trị cài tốc độ cho motor 37 break; case ('6'): spd = 160; break; case ('7'): spd = 200; break; case ('8'): spd = 230; break; case ('9'): spd = 255; break; case ('S'): // S nút robot dừng tack(); tat_den(); break; case ('F'): // nút tới forw(); den_tien(); break; case ('B'): // nút lùi back(); den_lui(); break; case ('L'): left(); // nút rẽ qua trái 38 break; case ('R'): // nút rẽ qua phải right(); break; case ('H'): // giá trị sau đƣợc thể góc chạy khác robot leftback(); break; case ('J'): rightback(); break; case ('I'): rightforw(); break; case ('G'): leftforw(); break; } } if (a == 1) // giá trị a =1 xe chế độ tự động { bat_den(); motor_robot(); // chƣơng trình moto_robot chạy motor_robotic(); // chƣơng trình moto_robotic chạy } } void tin_hieu_blue() { // chƣơng trình tín hiệu đổi chế độ 39 if ( bluetooth.available() ) { blue = bluetooth.read(); // blue = giá trị từ bluetooth đọc đƣợc Serial.println("gia tri cua blue la "); Serial.println(blue); if (blue == 'W') // W a =1 { a = 1; } if (blue == 'U') // U a =0 { a = 0; } } } // chƣơng trình tránh vật cản int distance() //định nghĩa hàm khoảng cách { int dir; // khoảng cách int tg; // thời gian digitalWrite(trig, LOW); // phát sóng siêu âm microsecconds delayMicroseconds(2); digitalWrite(trig, HIGH); delayMicroseconds(5); digitalWrite(trig, LOW); tg = pulseIn(echo, HIGH); // cơng thức tính thời gian 40 dir = 0.0344 * (tg / 2); // dir khoảng cách, vận tốc sóng siêu âm 344m/s dir = dir / 2; // sau tính khoảng cách lấy chia Vì qn tính robot di chuyển lên đoạn if (dir < 255) // dir < 255 { Serial.print(dir); Serial.println("cm"); // xem khoảng cách return dir; } } void servo_trai() // chƣơng trình servo quay trái { for (t = 90; t = 90; i ) { // servo quay trái 41 servo1.write(i); delay(5); // đợi mili dây } Serial.println("servo ve tu trai"); } void servo_phai() // servo quay phải { for (k = 90; k >= 0; k ) { servo1.write(k); delay(5); } Serial.println("servo qua phai"); } void servo_vephai() // servo quay phải { for (j = 0; j = 20) { tin_hieu_blue(); for (x = 50; x = 20) { tin_hieu_blue(); // tín hiệu chuyển đổi chế độ forw (); } } for (x = 130; x >= 50; x = x - 2) { servo1.write(x); delay(5); if (distance() < 20) break; 43 if (distance() >= 20) { tin_hieu_blue(); forw (); } } } } // chƣơng trình xử lý vật cản void motor_robot() { if (distance() < 20) // dir < 20cm { // tín hiệu chuyển chế độ tin_hieu_blue(); tack(); // dừng back (); // lùi 0.5 giây delay(500); tack(); servo_trai(); // servo quay trái delay(20); float b = (distance()); // b giá trị khoảng cách đo đƣợc bên trái delay(20); servo_vetrai(); servo_phai(); delay(20); int c = (distance()); delay(20); // c giá trị khoảng cách đo đƣợc bên phải 44 servo_vephai(); if (b > 20 && c > 20 ) // b>20cm c>20cm { Serial.println("chay lenh 1"); back (); // dừng delay(500); left (); // rẽ trái delay(500); } else if (b < 20 && c > 20 ) // b20 { Serial.println("chay lenh 3"); right (); // rẽ phải 0,5 giây delay(500); } else if (b > 20 && c < 20 ) // b>20 c< 20 { left (); // rẽ trái delay(500); } else if (b < 20 && c < 20 ) { Serial.println("chay lenh 4"); back (); // lùi delay(500); tack(); // dừng right(); // rẽ phải // b