Đồ Án Điều Khiến Xe Bằng Bluetooth Dùng Arduino Nano kết nối HC 05 có sẳn Code tự hành chỉ việc mua linh kiện lắp ráp theo sơ đồ nạp code là xong kèo.Như đã đề cập trước đó, Arduino Nano có 14 ngõ vàora digital. Các chân làm việc với điện áp tối đa là 5V. Mỗi chân có thể cung cấp hoặc nhận dòng điện 40mA và có điện trở kéo lên khoảng 2050kΩ. Các chân có thể được sử dụng làm đầu vào hoặc đầu ra, sử dụng các hàm pinMode (), digitalWrite () và digitalRead ().
MỤC LỤC Lời nói đầu CẤU TRÚC ĐIỀU KHIỂN .5 PHẦN I GIỚI THIỆU CHUNG VỀ CÁC THIẾT BỊ CẦN THIẾT I GIỚI THIỆU VỀ ARDUINO NANO Chức chân: Lập trình cho arduino II GIỚI THIỆU CHUNG VỀ MẠCH BLUETOOTH HC-05 VÀ MIT APP INVENTOR2 10 Module bluetooth HC-05 10 App Inventor 12 III Cảm biến siêu âm HC – SR05 14 Các thơng số 14 Sơ đồ chân HC-SR05 gồm chân: .14 Nguyên lý hoạt động 15 IV Động servo SG40 Tower Pro 15 Thông số kỹ thuật: .16 V Cảm biến hồng ngoại 16 Thông số kỹ thuật: .17 VI Động DC 17 VII Modul điều khiển động L298 18 Thông số kỹ thuật: .18 PHẦN II GIỚI THIỆU KHÁI QUÁI VỀ ĐỀ TÀI XE DỊ LINE 19 I Một số hình ảnh robot 19 II Thuật toán điều khiển .22 Phần chương trình dị đường + tránh vật cản 22 Phần chương trình điều khiển bluetooth 26 Các thuật toán điều khiển 29 a) Thuật tốn (điều khiển bluetooth) 29 b) Thuật toán chương trình kiểm tra vật cản 30 c) Thuật tốn chương trình tự động 31 d) Thuật toán chương trình dị đường 31 PHẦN III CHƯƠNG TRÌNH ĐIỀU KHIỂN 32 PHẦN IV KẾT LUẬN 41 Lời nói đầu Trong sống ngày với tiến vượt bậc người đòi hỏi Khoa học - Kỹ thuật phải không ngừng nâng cao hoàn thiện phát triển để đáp ứng nhu cầu sống người Công nghiệp phát triển vượt trội, kéo theo ảnh hưởng mơi trường làm việc, tính chất cơng việc ngày khó khăn nguy hiểm hơn, khả lao động người có giới hạn Để giải vấn đề này, robot đời để giúp đỡ người phục vụ sản xuất, làm việc điều kiện nguy hiểm, khó khăn Ngồi robot cịn dùng lĩnh vực thám hiểm quân Lĩnh vực robot di động ngày quan tâm nhà nghiên cứu xã hội Đặc biệt robot dò đường vấn đề thiết yếu robot di động Song, việc nghiên cứu, tìm hiểu thiết kế robot dị đường đề tài Đồ Án mà nhóm chúng em giới thiệu báo cáo Với yêu cầu đòi hỏi tự giác học tập, nghiên cứu, tìm hiểu Đồ Án giúp chúng em hiểu rõ giá trị thiết thực mơn học, giúp nâng cao khả làm việc nhóm Đồng thời trang bị thêm cho thân kiến thức lập trình Arduino, thiết kế mạch in Atium, Tạo tảng kinh nghiệm cho việc thực báo cáo đồ án tốt nghiệp sau Sau cùng, chúng em xin chân thành cảm ơn giúp đỡ, bảo tận tình thầy Trần Tiến Lương suốt trình học tập, cảm ơn thầy cho chúng em gợi ý để phát triển đề tài, đồng thời bổ sung giải pháp để khắc phục khó khăn Do kiến thức kinh nghiệm cịn hạn hẹp nên q trình báo cáo kết học tập cịn nhiều điều sai sót, mong thầy tận tình bảo để chúng em sửa chữa rút kinh nghiệm, hoàn thiện báo cáo sau Chúng em xin chân thành cảm ơn CẤU TRÚC ĐIỀU KHIỂN Module Bluetooth HC-05 Smartphone Module siêu âm Servo Module hồng ngoại Servo Arduino Nano Servo Còi Module điều khiển động L298N M1 M2 PHẦN I GIỚI THIỆU CHUNG VỀ CÁC THIẾT BỊ CẦN THIẾT I GIỚI THIỆU VỀ ARDUINO NANO Arduino Nano bảng vi điều khiển thân thiện, nhỏ gọn, đầy đủ Arduino Nano nặng khoảng 7g với kích thước từ 1,8cm - 4,5cm Bài viết trình bày thông số kỹ thuật quan trọng, sơ đồ chân chức chân bảng Arduino Nano Vi điều khiển Điện áp hoạt động Tần số hoạt động Dòng tiêu thụ Điện áp vào khuyên dùng Điện áp vào giới hạn Số chân Digital I/O Số chân Analog Dòng tối đa chân I/O Dòng tối đa (5V) Dòng tối đa (3.3V) Bộ nhớ flash SRAM EEPROM Kích thước ATmega328 (họ 8bit) 5V – DC 16 MHz 30mA 7-12V – DC 6-20V – DC 14 (6 chân PWM) (độ phân giải 10bit) 40 mA 500 mA 50 mA 32 KB (ATmega328) với 2KB dùng bootloader KB (ATmega328) KB (ATmega328) 1.85cm x 4.3cm Bảng Thông số KIT Arduino Chức chân: Thứ tự chân Tên Pin Kiểu D1 / TX I/O D0 / RX I/O 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 RESET GND D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 3V3 AREF A0 A1 A2 A3 A4 A5 A6 A7 Đầu vào Nguồn I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O Đầu Đầu vào Đầu vào Đầu vào Đầu vào Đầu vào Đầu vào Đầu vào Đầu vào Đầu vào 27 + 5V Đầu đầu vào 28 RESET Đầu vào 29 30 GND VIN Nguồn Nguồn Chức Ngõ vào/ra số Chân TX-truyền liệu Ngõ vào/ra số Chân Rx-nhận liệu Chân reset, hoạt động mức thấp Chân nối mass Ngõ vào/ra digital Ngõ vào/ra digital Ngõ vào/ra digital Ngõ vào/ra digital Ngõ vào/ra digital Ngõ vào/ra digital Ngõ vào/ra digital Ngõ vào/ra digital Ngõ vào/ra digital Ngõ vào/ra digital Ngõ vào/ra digital Ngõ vào/ra digital Đầu 3.3V (từ FTDI) Tham chiếu ADC Kênh đầu vào tương tự kênh Kênh đầu vào tương tự kênh Kênh đầu vào tương tự kênh Kênh đầu vào tương tự kênh Kênh đầu vào tương tự kênh Kênh đầu vào tương tự kênh Kênh đầu vào tương tự kênh Kênh đầu vào tương tự kênh + Đầu 5V (từ điều chỉnh Onboard) + 5V (đầu vào từ nguồn điện bên ngoài) Chân đặt lại, hoạt động mức thấp Chân nối mass Chân nối với nguồn vào Bảng Thống kê chân chức KIT Arduino Lập trình cho arduino Cũng tương tự bên ARDUINO N3, Arduino Nano sử dụng chương trình Arduino IDE để lập trình, ngơn ngữ lập trình cho Arduino tên Arduino (được xây dựng ngôn ngữ C) Đầu tiên, ta cần cài Driver Arduino Nano tải Arduino IDE cho máy tính, bước cài đặt hoàn toàn tương tự Arduino Uno R3 Sau cài đặt, ta thấy thông báo dạng "Cổng COMx cài đặt thành công" (chữ "x" thay số nguyên dương,hãy nhớ lấy số này, sau ta dùng cổng COMx để lập trình cho Arduino Nano) Sau đó, ta tìm loại board cổng Serial hình sau Lưu ý, cổng COM hình là hình minh họa máy tính Hình 1.1 Hướng dẫn chọn loại kit Arduino phần mềm Arduino IDE Hình Hướng dẫn chọn cổng kết nối PC kit Arduino Sau hồn thành q trình cài đặt, muốn quay lại lập trình cho Arduino Uno, cần chỉnh tên board Arduino Uno "Serial Port" thành cổng Serial mà Uno kết nối Với kích thước nhỏ gọn khả tương tự Arduino Uno, ta ứng dụng dự án yêu cầu kích thước nhỏ khối lượng nhẹ, chẳng hạn như: Xe dò đường … II GIỚI THIỆU CHUNG VỀ MẠCH BLUETOOTH HC-05 VÀ MIT APP INVENTOR2 Module bluetooth HC-05 Hình Module bluetooth HC-05 Module thu phát bluetooth HC-05 dùng để thiết lập kết nối Serial thiết bị sóng bluetooth Điểm đặc biệt module bluetooth HC-05 module hoạt động chế độ: MASTER SLAVE + Ở chê độ SLAVE: bạn cần thiết lập kết nối từ smartphone, laptop, usb bluetooth để dò tìm module sau pair với mã PIN 1234 Sau pair thành cơng, bạn có cổng serial từ xa hoạt động baud rate 9600 + Ở chế độ MASTER: module tự động dị tìm thiết bị bluetooth khác (1 module bluetooth HC-06, usb bluetooth, bluetooth laptop ) tiến hành pair chủ động mà khơng cần thiết lập từ máy tính smartphone Thông số kỹ thuật: - Điện áp hoạt động: 3.3 ~ 5VDC - Mức điện áp chân giao tiếp: 3.3VDC 5VDC 10 - Dòng điện hoạt động: ghép nối 30 mA, sau ghép nối hoạt động truyền nhận bình thường mA - Tốc độ truyền UART chọn được: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 - Tần số: 2.4 GHz - Tính bảo mật: xác thực mã hóa - Kích thước: 15.2 x 35.7 x 5.6mm Hình Sơ đồ chân IC module HC-05 Hình Sơ đồ kết nối module HC-05 với Arduino 11 Hình Khối lệnh App điều khiển Bluetooth *) Trong đó: - When “Screen1”.Initialize … do: Khi bật hình Screen1 thực - If … then: Lệnh điều kiện - Call “Notifier1” ShowAlert notice: Gọi thư viện “Notifier1” thực lệnh hiển thị ký tự ô text Ý nghĩa: Khi bật lên Screen1 (tức ứng dụng bật lên) thiết bị điều khiển chưa kết nối bluetooth với robot lên cảnh báo “Hien chua bat Bluetooth – Hay vao cai dat Bluetooth de tiep tuc” Ý nghĩa: Lệnh hiển thị danh sách địa bluetooth 27 Ý nghĩa: Nếu chọn địa liên kết bluetooth Trên ứng dụng “Connected” báo kết nối Ý nghĩa: Nếu nhấn nút ấn “Button2” thực lệnh gửi ký tự “W” đến thiết bị thu (HC-05) Ý nghĩa: Nếu nhả nút ấn “Button2” thực lệnh gửi ký tự “0” đến thiết bị thu (HC-05) 28 Các thuật toán điều khiển a) Thuật tốn (điều khiển bluetooth) 29 Hình Thuật toán điều khiển bluetooth b) Thuật tốn chương trình kiểm tra vật cản Hình 10 Thuật toán kiêm tra vật cản 30 c) Thuật tốn chương trình tự động Hình 11 Thuật tốn chương trình chạy tự động d) Thuật tốn chương trình dị đường Hình 12 Thuật tốn dị đường 31 PHẦN III CHƯƠNG TRÌNH ĐIỀU KHIỂN #include Servo myservo2; Servo myservo3; Servo myservo4; char nhan ; const int trig = 13; const int echo = 8; const int in1 = A0; const int in2 = A1; const int in3 = A2; const int in4 = A3; const int enA = 3; const int enB = 11; const int ss1 = 12; const int ss2 = 4; const int ss3 = A4; const int ss4 = A5; int q1, q2, q3, q4; unsigned long times; unsigned long time; unsigned long kc; unsigned long giay; int kt, vc, last_kt; int e, pre_e, sai_so; int cb1, cb2, cb3, cb4, a_cb3, a_cb4; void setup() { q1 = constrain(q1, 5, 175); q2 = constrain(q2, 5, 175); 32 q3 = constrain(q3, 5, 175); q4 = constrain(q4, 140, 170); Serial.begin(9600); time = millis(); pinMode(trig,OUTPUT); pinMode(echo, INPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); pinMode(enA, OUTPUT); pinMode(enB, OUTPUT); pinMode(7, OUTPUT); pinMode(ss1, INPUT); pinMode(ss2, INPUT); pinMode(ss3, INPUT); pinMode(ss4, INPUT); myservo2.attach(5); myservo3.attach(6); myservo4.attach(9); q2=90;q3=90;q4=90;kc=30;nhan='0'; myservo2.write(q2); myservo3.write(q3); myservo4.write(q4); } void do_line(){ 33 cb1 = digitalRead(ss1); cb2 = digitalRead(ss2); a_cb3 = analogRead(ss3); if(a_cb3>700){ cb3 = 1; } else cb3 = 0; a_cb4 = analogRead(ss4); if(a_cb4>700){ cb4 = 1; } else cb4 = 0; } void phan_tich(){ if(cb1==1&&cb2==0&&cb3==0&&cb4==0){ e=-3; } else if(cb1==1&&cb2==1&&cb3==0&&cb4==0){ e=-2; } else if(cb1==0&&cb2==1&&cb3==0&&cb4==0){ e=-1; } else if(cb1==0&&cb2==1&&cb3==1&&cb4==0){ e=0; } else if(cb1==0&&cb2==0&&cb3==1&&cb4==0){ 34 e=1; } else if(cb1==0&&cb2==0&&cb3==1&&cb4==1){ e=2; } else if(cb1==0&&cb2==0&&cb3==0&&cb4==1){ e=3; } else if(cb1==0&&cb2==0&&cb3==0&&cb4==0){ if(pre_e>0){ e=3; } if(pre_e 200){ digitalWrite(trig, LOW); delay(2); digitalWrite(trig, HIGH); delay(5); digitalWrite(trig, LOW); times= pulseIn(echo, HIGH); kc = float(times/2/29.412); time = millis(); } Serial.println(kc); } void dithang() { analogWrite(in1, 1023); analogWrite(in2, 0); analogWrite(in3, 0); analogWrite(in4, 1023); analogWrite(enA, 50); analogWrite(enB, 50); } void lui() { analogWrite(in1, 0); analogWrite(in2, 1023); analogWrite(in3, 1023); analogWrite(in4, 0); analogWrite(enA, 50); analogWrite(enB, 50); } 36 void quayphai() { analogWrite(in1, 1023); analogWrite(in2, 0); analogWrite(in3, 1023); analogWrite(in4, 0); analogWrite(enA, 60); analogWrite(enB, 60); } void quaytrai() { analogWrite(in1, 0); analogWrite(in2, 1023); analogWrite(in3, 0); analogWrite(in4, 1023); analogWrite(enA, 60); analogWrite(enB, 60); } void dung() { analogWrite(in1,0); analogWrite(in2,0); analogWrite(in3,0); analogWrite(in4,0); analogWrite(enA, 30); analogWrite(enB, 30); } void bluetooth(){ int i; q2 = constrain(q2, 5, 175); q3 = constrain(q3, 5, 175); nhan= Serial.read(); 37 if (nhan == '3'){ q2++; myservo2.write(q2); delay(8); } if (nhan == '4'){ q2 ; myservo2.write(q2); delay(8); } if (nhan == '5'){ q3 ; myservo3.write(q3); delay(8); } if (nhan == '6'){ q3++; myservo3.write(q3); delay(8); } if (nhan == '7'){ q4++; myservo4.write(q4); delay(8); } 38 if (nhan == '8'){ q4 ; myservo4.write(q4); delay(8); } if (nhan == 'W'){ dithang(); } if (nhan == 'A'){ quaytrai(); } if (nhan == 'D'){ quayphai(); } if (nhan == 'S'){ lui(); } if (nhan == '0'){ dung(); } if(nhan=='O'){ thu_auto(); } } void thu_auto(){ kt_vatcan(); while(kc>20){ kt_vatcan(); 39 dd_thang(); } dung(); digitalWrite(7, HIGH); delay(100); digitalWrite(7, LOW); delay(100); while(1){ bluetooth(); } } void loop() { bluetooth(); } 40 PHẦN IV KẾT LUẬN Kết Sau tuần thực hiện, nhóm em đạt kết sau: Chương trình điều khiển hoạt động tốt Robot bám theo line Cánh tay robot có khả nâng hạ, gắp nhả vật Cảm biến siêu âm hoạt động xác, chế độ tự động, robot dừng chờ lệnh gặp vật cản Những hạn chế đề tài Robot bắt line chưa mượt, bị lắc nhiều Nguyên nhân khoảng cách mắt thu robot nhỏ độ rộng line Động servo loại nhỏ, tải yếu, đôi lúc đáp ứng lệnh điều khiển dẫn đến mạch điều khiển bị treo Hướng phát triển đề tài Hiện robot bám theo line thẳng, chương trình đếm ngã tư hoạt động không ổn định, đếm nhầm số vạch ngang Nhóm em hướng đến phát triển để xe đếm ngã tư xác hơn, thực rẽ, quay ngã tư mong muốn Ngoài chưa thể thực nhiều nhiệm vụ lúc (dò đường + tránh vật cản) mà phải giảm số lần đo khoảng cách để chương trình dị đường khơng bị ảnh hưởng, nhóm mong muốn phát triển thêm để robot đa nhiệm hơn, nhanh ổn định 41 ... bên ARDUINO N3, Arduino Nano sử dụng chương trình Arduino IDE để lập trình, ngơn ngữ lập trình cho Arduino tên Arduino (được xây dựng ngôn ngữ C) Đầu tiên, ta cần cài Driver Arduino Nano tải Arduino. .. điều khiển: Hình 2.7 Giao diện App điều khiển Bluetooth 26 Hình Khối lệnh App điều khiển Bluetooth *) Trong đó: - When “Screen1”.Initialize … do: Khi bật hình Screen1 thực - If … then: Lệnh điều. .. tài Đồ Án mà nhóm chúng em giới thiệu báo cáo Với yêu cầu đòi hỏi tự giác học tập, nghiên cứu, tìm hiểu Đồ Án giúp chúng em hiểu rõ giá trị thiết thực môn học, giúp nâng cao khả làm việc nhóm Đồng