VIỆN ĐẠI HỌC MÒ HÀ NỘI KHOA CÔNG NGHỆ ĐIỆN TỦ THÔNG TIN ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Đề tài “Xây dựng Rada trên board Arduino và hiển thị trên LCD” Giảng viên hướng dẫn TS NGUYẺN HOÀI GIANG Sinh viên thực.
VIỆN ĐẠI HỌC MỊ HÀ NỘI KHOA CƠNG NGHỆ ĐIỆN TỦ - THÔNG TIN ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Đề tài “Xây dựng Rada board Arduino hiển thị LCD” Giảng viên hướng dẫn : TS.NGUYẺN HOÀI GIANG Sinh viên thực : PHẠM VĂN DŨNG Lớp : K16A Khố : 2013-2017 Hệ : ĐẠI HỌC CHÍNH QUY Hà Nội, tháng 05 /2017 II II LỜI NÓI ĐÀU Radar” cụm từ khơng cịn xa lạ công nghệ phát triển Việc xây dựng phát triển radar ngày cần thiết để đới phó với nhiều vấn đề, thách thức Ngày với phát triền không ngừng khoa học kĩ thuật, cơng nghệ điện tứ đặc biệt kĩ thuật thăm dò, phát hiện, cành bảo đóng vai trị quan trọng thiết thực khơng chi ngành quan trọng quốc phịng, giao thơng, dầu khí mà cịn sống hàng ngày cùa mồi gia đình, xã hội, nhằm đáp ưng nhu cầu ngày cao độ an toàn, băo mật Do sinh viên Điện tứ-Thơng Tin, cần nắm bắt phát triển không ngừng khoa học ý tướng lạ đồ có the ứng dụng vào sống hiệu quà hơn, bên cạnh sâu xa thúc phát triển cùa nước nhà Đi với xu phát triển đó, em chọn đề tài “Xây dựng hệ thống radar board Arduino hiến thị hình led” để làm đồ án tốt nghiệp Hà Nội, tháng 05 năm 2017 Sinh viên thực Phạm Văn Dũng MỤC LỤC MỞ ĐẦU CHƯƠNG 1: TÌM HIẾU VÈ BOARD ARDUINO 1.1 Lịch sử đời phát triển cùa arduino .5 1.1.1 Dòng Arduino USB 1.1.2 Arduino MEGA 1.2 Khái niệm Arduino 1.3 Cấu tạo 1.4 ứng dụng Arduino 13 1.4.1 ứng dụng cúa arduino 13 1.4.2 Một số loại Arduino thông dụng .13 1.4.3 Arduino UNO 16 1.5 Ket luận chương 17 CHƯƠNG 2: LÝ THUYẾT VÈ RADAR VÀ CẢM BIẾN SIÊU ÂM 20 2.1 Radar 20 2.1.1 Lịch sử đời, khái niệm chung, phân loại ứng dụng radar .20 2.1.2 Cấu tạo nguyên lí hoạt động radar .29 2.1.3 Sự phân xạ sóng siêu âm 33 2.1.4 Các yếu tố ảnh hường đến radar .36 2.2 Cảm biến siêu âm .39 2.2.1 Khái niệm siêu âm, cảm biến siêu âm 39 2.2.2 Một số loại cám biến siêu âm cấu tạo càm biến siêu âm 39 2.2.3 Nguyên lí hoạt động .41 2.2.4 ứng dụng cảm biển siêu âm .45 2.3 Ket luận chương 46 CHƯƠNG 3: XÂY DỤNG MÔ HỈNH RADAR TRÊN BOARD ARDUINO VÀ HIÉN THỊ TRÊN LCD 3.1 Thiết kế phần cứng .47 3.1.1 Phương án thiết kế 48 3.1.2 Sơ đồ khối phần cứng 50 3.2 Sơ đồ lắp ráp nguyên lí hoạt động 53 3.3 Sử dụng phần mềm thiết kế mạch in 55 KÉT LUẬN CHUNG Kết đạt 58 Những mặt hạn chế .60 Hướng Phát triển 61 Phụ Lục: Code điều khiển .62 DANH MỤC CÁC BẢNG, so ĐỒ, HÌNH Hình 1.11 Các loại Arduino .9 Hình 1.9 phần mềm lập trình arduino 12 Hình 1.10 Arduino UNO .14 Hình 1.11 Arduino Nano .14 Hình 1.12 Arduino MEGA 16 Hình 1.13 Cấu tạo Arduino UNO 17 Hình 2.3 Một số loại cảm biến 40 Hình 2.4 Sơ đồ nguyên lý cám biến .40 Hình 2.5 Mô tả nguyên lý hoạt động cảm biến 42 Hình 2.6 Chế độ làm việc cảm biến siêu âm 42 Hình 3.1 Sơ đồ vị trí phận Arduino UNO 48 Bảng 3.1 Thông tin số cảm biến siêu âm .49 Hình 3.2 Cảm biến siêu âm SRF05 .50 Hình 3.3 Sơ đồ chân cùa cảm biến 51 Hình 3.4 Màn hình LCD homephone 52 Hình 3.5 động servo còi chip 53 Hình 3.6 Sơ đồ lắp ráp 54 Hình 3.7 mạch in 56 Hình 3.9 Mạch ngyên lý 57 Hình sản phẩn cùa đồ án 59 Hình Hiển thị vật quét LCD .60 Từ CÁC CỤM TỪ VIẾT TẢT Tiếng anh Tiếng việt AVR Auto voltage regulator Tự động điều chỉnh điện áp Radar Radio Dcctcction And Ranging Phát phân định vô tuyến SRAM Static random access memory Bộ nhớ truy cập ngẫu nhiên OPAM operational amplifier Hoạt động khuêch đại PRF Pulse Repetition Frequency Tần số lặp lại IDE Integrated Development Môi trường phát triển tích hợp tĩnh Environment MỊ ĐẦU Đặt vấn đề Ngày với phát triển không ngừng cúa khoa học kĩ thuật, cơng nghệ điện tứ đặc biệt kĩ thuật thăm dò, phát hiện, cảnh bảo đóng vai trị quan trọng thiết thực khơng chì ngành quan trọng quốc phịng, giao thơng, dầu khí mà cịn cá sống hàng ngày cúa mồi gia đinh, xã hội, nhằm đáp ưng nhu cầu ngày cao độ an toàn, bảo mật Do sinh viên Khoa Điện tử-Viễn thơng, cần nắm bắt phát triền không ngừng cúa khoa học ý tướng lạ đê có thê ứng dụng vào sống hiệu hon, bên cạnh sâu xa hon thúc đẩy phát triển nước nhà Như biết việc thăm dò, cảnh báo phát sớm nhũng mối nguy hại, vật nguy hiềm hay tài nguyên cần tím kiếm việc vơ cần thiết quan trọng ngành trọng yếu quốc gia, khơng chi cịn cần thiết cho sống Đe cụ hóa nhũng nhu cầu đó, hệ thống radar xây dựng phù hợp cho nhu cầu Chính với nhu cầu xậy dụng hệ thống radar nhở gọn, tiện dụng ý tưởng đề tài nhằm phục vụ vào ngành, công việc đơn giản quy mơ nhở lại có nhu cầu lớn Radar (Radio Dcctcction And Ranging) khái niệm dung để phát xác định vị trí cúa đối tượng Radar cảm biến, mục đích đề cung cấp ước tính số đặc điếm môi trường xung quanh quan tâm đến người sử dụng, thường diện, vị trí, chuyên động cúa đối tượng máy bay, tàu, phương tiện giao thông khác vùng phụ cận Trong sứ dụng khác, hệ thống radar cung cấp thông tin bề mặt Trái Đất (hoặc quan thiên văn khác) điều kiện khí tượng Đẻ cung cấp cho người sứ dụng với đầy đú cảm biến, hệ thống radar thường sứ dụng kết hợp với yếu tố khác hệ thống hoàn chinh Radar sử dụng đề đo khoáng cách khu vực bán đồ địa lý (shoran) điều hướng sứa chừa vị trí biến Các nhà khí tượng sứ dụng radar để theo dõi lượng mưa, trở thành cơng cụ cho dự báo thời tiết ngan hạn sử dụng đe xem thời tiết khắc nghiệt bão lốc xốy Radar sứ dụng để nghiên cứu hành tinh mặt trời tầng điện ly theo dõi hình ánh lửa mặt trời hạt chuyển động khơng gian bên ngồi Bên cạnh ứng dụng vô to lớn radar ngành quan trọng thiết yếu radar có mặt thứ khơng thê thiếu sống xã hội Mục đích nghiên cứu Đồ án nghiên cứu, khảo sát thực với mục đích áp dụng nhũng kiến thức học nhà trường đe thiết kể, tạo hệ thống radar board Arduino để phát hiển thị vật thể lên hình led Hệ thống radar board Arduino có chức năng: - Có the điều chình tăng giảm khoảng cách để phát vật thể - Cảm biến gắn trục quay thực chức dị sét theo nhiều nhiều hướng, nhiều góc độ - Có cịi báo đèn led đế thơng báo có tín hiệu trá phát vật thể - Có thể vẽ hiển thị hình dạng vật the, góc độ, khoảng cách vị trí vật lên hình Led Mục đích sản phâm - Dị tìm, thơng báo xác định khoáng cách vật thể tiến gần đến nơi đặt rada - ứng dụng Rada lắp đặt vào oto: - Cảnh báo cho oto di chuyến di chuyển - nơi bị khuất tầm nhìn có vật cám hay oto khác tới gần phát hiện, xác định khoảng cách, cành báo tốc độ oto để tránh nguy hiềm tham gia giao thông - Cảnh báo đỗ xe lùi xe bị khuất tầm nhìn phí sau xe Khi muốn lùi xe hay đỗ xe vào vị trí radar cánh báo có vật có trẻ nhỏ đứng phía sau xe nơi khuất tầm nhìn tiếng kêu bip bip có vật cản phía sau xe để tránh dừng lại để dời đồ vật tiếp tục lùi xe hay đỗ xe vào vị trí mong muốn ❖ 0x80, OxíO, Oxfe, Oxff, 0x7f, 0x73, 0x70, 0x70, 0x70, 0x77, 0x7f, Oxff, Oxfe, OxíO, OxcO, 0x0, ❖ 0x0, 0x0, Oxff, Oxff, Oxff, Oxff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, OxcO, Oxff, Oxff, Oxff, Ox3f, 0x0, 0x0, 0x0, 0x7f, Oxff, Oxff, Oxff, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, Oxff, Oxff, Oxff, 0x7f, 0x0, 0x0, 0x0, 0x0, Oxff, Oxff, Oxff, 0x0, 0x0, 0x0, 0x0, Oxff, Oxff, Oxff, Oxff, 0x0, Oxl, 0x7, Oxlf, 0x7f, Oxfe, Oxf8, OxeO, Oxff, Oxff, Oxff, 0x0, 0x0, 0x0, Ox3f, Oxff, Oxff, Oxff, OxcO, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, OxcO Oxff, Oxff, Oxff, ❖ 0x3 f, 0x0, ❖ /* page (lines 16-23) */ ❖ 0x0, 0x7, 0x7, 0x7, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x7, 0x7, 0x7, 0x0, 0x4, 0x7, 0x7, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1,0x7, 0x7, 0x7, 0x6, 0x0, 0x0, 0x7, 0x7, 0x7, 0x7,0x7, 0x7, 0x7, 0x7, 0x7, 0x3, 0x3,0x3, 0x1,0x0, ❖ 0x0, 0x0, 0x0,0x0, 0x0, 0x1, 0x7, ❖ 0x3, 0x1, 0x0,0x0, 0x0, 0x0, 0x0, ❖ 0x0, 0x1, 0x3, 0x7, 0x7, 0x7, 0x7, 0x0, 0x0, 0x0, 0x0, 0x1,0x3, 0x7, 0x7, 0x3, 0x0, 0x7, 0x7, 0x7, 0x0, 0x0, 0x0, 0x7, 0x7, 0x7, 0x7, 0x0,0x0, 0x0, 0x0, 0x0, ❖ 0x3, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x3, 0x1 0x0, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x3, ❖ 0x0, 0x0, ❖ }; ❖ #include ❖ //define CONST 58 ❖ //define loc nhieu ❖ // lọc nhiễu: đơn vị em, thề sai lệch lần đo trước sau ❖ // sai lệch 2) { giao_dien = 2; ❖ } ❖ if (giao_dicn < 0) { giao_dicn = 0; ❖ state = digital Rcad(tru_xa); ❖ // bip bip ❖ digitalWrite(loa, HIGH); ❖ delay(30); ❖ digitalWrite(loa, LOW); ❖ //vẽ ❖ lcd.fillrect( 0, 15, 100, 30, DELETE); ❖ lcd.number_long(0, 15, giaodien, STYLE NUMBER , BLACK); ❖ switch (giao dien) { ❖ ❖ case 0: lcd.uni_string( 20, 19, uni(u"\xl 10\x B0\x EDDng th\xlEB3ng"), BLACK); break; ❖ ❖ ❖ ❖ case 1: lcd.uni_string( 20, 19, uni(u"H\xECnh tr\xF2n"), BLACK); break; case 2; lcd.uni_string( 20, 19, uni(u"H\xECnh vu\xF4ng"), BLACK); break; ❖ } ❖ Icd.displayO; ❖ delay(250);// làm trề chống nhiễu ❖ } ❖ } ❖ Icd.clearO; ❖ } ❖ int k_cach(int tam xa) { ❖ /* ❖ Tốc độ âm khơng khí 340 m/s (hằng số vật lý), tương đương với 29,412 microScconds/cm (106/ (340* 100)) Khi tính thời gian, ta chia cho 29,412 đề nhận khoảng cách ❖ */ ❖ unsigned long duration; // Đo độ rộng xung HIGH chân echo ❖ int distance; // biến lưu khoảng cách ❖ PORTB = PORTB & (~(1 « PB5)); ❖ //delayMicroseconds(4); ❖ /* Phát xung từ chân trig */ ❖ PORTB = PORTB 1(1« PB5); ❖ delayMicroseconds(lO); //xung có độ dài 10 microseconds ❖ PORTB = PORTB & (~(1 « PB5)); ❖ /* Tính tốn thời gian */ ❖ duration = pulseln(echo, HIGH); ❖ // Tính trá khoảng cách đến vật ❖ distance = int(duration / CONST); ❖ distance = constrain(distance, 0, tam xa); ❖ //dclay(20); ❖ return distance; ❖ } ❖ int quct_k_cach( int goc, int tam_xa) { ❖ servo.write(goc); // quay servo; ❖ //delay) 10);// đợi cho servo quay xong ❖ return k_cach(tam_xa); ❖ } ❖ void in_distance( int distance) { ❖ lcd.fillrect(Width_lcd - 19, 0, 19, 8, WHITE); // xóa ảnh cũ ❖ lcd.number_long(Width_lcd - 19, 1, distance, ASC1I_NUMBER, BLACK); } ❖ void in_tam_xa( int tam_xa) { lcd.fillrect(O, 0, 19, 8, WHITE); // xóa ảnh cũ ❖ lcd.number_long(l, 1, tam_xa, ASCHNUMBER, BLACK); ❖ ỉ ❖ void ve_vat_can(int X, int y, byte chongiaodien) { ❖ switch (chon giao dien) { ❖ case 0: ❖ //cách 1: ❖ lcd.drawline(xO, yO, X, y, BLACK); // vè vật càn lcd.drawline(xO - 1, y0, X + 1, y, BLACK); // vẽ vật càn lcd.drawline(xO + 1, y0, X - 1, y, BLACK); // vẽ vật càn break; case 1: ❖ //cách 2; ❖ lcd.fillcircle(x, y, 2, BLACK); ❖ break; case 2: ❖ lcd.rect( X - 2, y - 2, 4, 4, BLACK); // hình vng break; ❖ default: ❖ // mặc định ❖ lcd.rect( X - 2, y - 2, 4, 4, BLACK); // hình vng break; ❖ /* ❖ */ ❖ //cách 3: ❖ /* ❖ */ ❖ } ❖ ❖ l void loopO ❖ int distance; // biển lưu khoảng cách ❖ int gocquet;// góc quét: 0->l80 ❖ int tamxa = 50; // 50cm ❖ in_tam_xa(tam_xa); ❖ // tâm O(x0,y0) ❖ int xB, yB; // điểm A(xA,yA), B(xB,Yb); ❖ int x_cu, xA, y_cu, yA; // pl(x_cu,y_cu), p2(xA,yA); ❖ int distance_cu, distance moi; ❖ // pl sát p2 vẽ, pl điểm quét tước, p2 điếm quét sau(điểm Ị tại) ❖ int analog; ❖ byte r = 250; ❖ int distance_tb[3];// khoảng cách trung bình ❖ while (1) { ❖ for ( unsigned long goc = 0; goc tam xa max) { tam xa = tamxamax; // giới hạn cộng ❖ } ❖ in_tam_xa(tam_xa); ❖ } ❖ if (digitalRead(truxa) == 0) { ❖ tam_xa -= 2; ❖ if (tamxa < 0) { ❖ tam xa = 0; //giới hạn trừ ❖ } ❖ intamxa(tamxa); ❖ } ❖ if((goc< 181) && (goc>=0)) { ❖ ❖ ❖ goc_quet = goc; //quay thuận 0->l 80 } else if (goc < 361) { goc quct = 360 - goc; // quay ngược 180->0 ❖ //tim diem B ❖ if (goc < 180) { ❖ ❖ ❖ ❖ lcd.Find_XY_Elip(x0, yO, r_max, r_max, goc_quet + 10); } else { lcd.Find_XY_Elip(xO, yO, r_max, r_max, goc_quet - 10); } ❖ xB = Icd.XElipO; ❖ yB = Icd.YElipO; ❖ lcd.drawline(xO, yO, xB, yB, BLACK); //vẽ quét Icd.displayO; ❖ digitalWrite(loa, 0); // tắt loa ❖ llllllllllllllllllllllllllll ❖ for (byte i = 0; i < 3; i++) { distance_tb[i] = quet_k_cach(goc_quet, tam_xa); ❖ // delay(50);// đợi ❖ } ❖ if ((abs(distance_tb[O] - distance_tb[l])