BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGHIÊN CỨU, THIẾT KẾ VÀ CHẾ TẠO MÔ HÌNH HỆ THỐNG CHIẾU SÁNG THÔNG MINH ĐIỀU KHIỂN BẰNG ARDUINO NGÀNH CÔNG NGHỆ KỸ THUẬT Ô TÔ GIẢNG VIÊN HƯỚNG DẪN Ths NGUYỄN VĂN BẢN Sinh viên thực hiện MSSV Lớp Bùi Hoàng Duy 1711250818 17DOTB2 Nguyễn Minh Duy 1711251014 17DOTB2 Võ Minh Duy 1711251020 17DOTB2 Tp Hồ Chí Minh, năm 2021 ii LỜI CẢM ƠN Trong quá trình học tập tại trường Đại học Công nghệ Tp Hồ Chí Minh, đây là khoảng thời.
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGHIÊN CỨU, THIẾT KẾ VÀ CHẾ TẠO MƠ HÌNH HỆ THỐNG CHIẾU SÁNG THÔNG MINH ĐIỀU KHIỂN BẰNG ARDUINO NGÀNH: CÔNG NGHỆ KỸ THUẬT Ô TÔ GIẢNG VIÊN HƯỚNG DẪN: Ths NGUYỄN VĂN BẢN Sinh viên thực hiện: MSSV: Lớp: Bùi Hoàng Duy 1711250818 17DOTB2 Nguyễn Minh Duy 1711251014 17DOTB2 Võ Minh Duy 1711251020 17DOTB2 Tp Hồ Chí Minh, năm 2021 LỜI CẢM ƠN Trong trình học tập trường Đại học Cơng nghệ Tp Hồ Chí Minh, khoảng thời gian giúp chúng em trang bị vốn kiến thức bản, cần thiết để chúng em thực đồ án Chúng em xin chân thành cảm ơn thầy cô trường truyền đạt để chúng em hồn thành đồ án Đặc biệt chúng em xin bày tỏ lòng biết ơn sâu sắc đến với thầy hướng dẫn Ths Nguyễn Văn Bản trực tiếp hỗ trợ, giúp đỡ tận tình chúng em suốt thời gian thực hoàn thành đồ án tốt nghiệp Cuối chúng em xin bày tỏ lòng biết ơn sâu sắc đến người bạn, người thân gia đình động viên, nhiệt tình giúp đỡ chúng em để phấn đấu hoàn thành đồ án thời hạn Vì thời gian có hạn, trình độ hiểu biết thân chúng em nhiều hạn chế Đồ án khơng tránh khỏi thiếu sót, chúng em mong nhận đóng góp ý kiến từ tất thầy để chúng em bổ sung thêm kiến thức, phục vụ tốt cho công việc sau Chúng em xin kính chúc thầy, cơ, gia đình bạn bè nhiều sức khoẻ, thành công sống Chúng em xin chân thành cảm ơn ii MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN ii MỤC LỤC iii DANH MỤC TỪ VIẾT TẮT ix DANH SÁCH CÁC BẢNG x DANH SÁCH CÁC HÌNH xi LỜI MỞ ĐẦU Chương GIỚI THIỆU ĐỀ TÀI 1.1 Đặt vấn đề 1.2 Tầm quan trọng đề tài 1.3 Ý nghĩa đề tài 1.4 Lý chọn đề tài 1.5 Tình hình nghiên cứu 1.6 Mục tiêu nghiên cứu 1.7 Các kết hướng đến 1.8 Nhiệm vụ đề tài 1.9 Phương pháp nghiên cứu 1.10 Kết cấu đồ án tốt nghiệp 10 Chương TỔNG QUAN HỆ THỐNG CHIẾU SÁNG Ô TÔ 11 2.1 Giới thiệu hệ thống chiếu sáng ô tô 11 2.2 Sơ khởi đèn chiếu sáng ô tô 11 2.3 Đèn pha ô tô sử dụng điện 12 2.4 Đèn pha xenon 12 iii 2.5 Đèn LED 13 2.6 Đèn pha Laser 14 2.7 Yêu cầu nhiệm vụ hệ thống chiếu sáng ô tô 15 2.7.1 Yêu cầu 15 2.7.2 Nhiệm vụ 16 2.8 Phân loại chức loại đèn hệ thống chiếu sáng ô tô 17 2.9 Nhược điểm hệ thống chiếu sáng ô tô truyền thống 18 Chương HỆ THỐNG CHIẾU SÁNG THÔNG MINH TRÊN Ô TƠ 19 3.1 Cải tiến cơng nghệ chiếu sáng ô tô 19 3.1.1 Đèn liếc tĩnh 19 3.1.2 Đèn liếc động 21 3.2 Công nghệ chiếu sáng Multi Beam LED Mercedes 23 3.3 Công nghệ chiếu sáng Matrix LED Audi 24 Chương TÍNH TỐN VÀ THIẾT KẾ HỆ THỐNG CHIẾU SÁNG THÔNG MINH Ô TÔ 26 4.1 Ý tưởng thiết kế mơ hình 26 4.2 Ý tưởng thiết kế tự động bật/tắt hệ thống đèn chiếu sáng xe 26 4.2.1 Tính toán thiết kế hệ thống tự động bật/tắt đèn chiếu sáng 27 4.2.2 Cảm biến ánh sáng 30 4.2.3 Bộ điều khiển 34 4.2.4 Bộ chấp hành 35 4.3 Ý tưởng thiết kế hệ thống tự động chuyển pha - cốt 35 4.3.1 Tính tốn thiết kế hệ thống tự động chuyển pha – cốt 36 4.3.2 Cảm biến đa khoảng cách 39 4.3.3 Bộ điều khiển 42 4.3.4 Bộ chấp hành 43 iv 4.3.5 Màn hình LCD 43 4.4 Ý tưởng thiết kế tự động bật/tắt hệ thống đèn sương mù theo tình trạng thời tiết 44 4.4.1 Hệ thống tự động bật/tắt đèn sương mù 45 4.4.2 Cảm biến nhiệt độ, độ ẩm môi trường 47 4.4.3 Bộ điều khiển 48 4.4.4 Bộ chấp hành 48 4.4.5 Màn hình LCD 48 4.5 Ý tưởng thiết kế hệ thống đèn liếc động 48 4.5.1 Tính tốn thiết kế hệ thống đèn liếc động 50 4.5.2 Cảm biến góc xoay bánh xe, cảm biến tốc độ xe 52 4.5.2.1 Cảm biến góc lái 52 4.5.2.2 Cảm biến tốc độ xe 53 4.5.3 Bộ điều khiển Arduino Mega 2560 57 4.5.4 Bộ chấp hành 59 4.5.5 Liếc lên liếc xuống 61 4.6 Ý tưởng thiết kế hệ thống khoá cửa bảo mật vân tay kết hợp cử chào hỏi hệ thống chiếu sáng mở khoá cửa 66 4.6.1 Hệ thống khoá cửa bảo mật vân tay kết hợp cử chào hỏi hệ thống chiếu sáng 67 4.6.2 Cảm biến vân tay 69 4.6.3 Bộ điều khiển 71 4.6.4 Bộ chấp hành 71 4.7 Ý tưởng thiết kế hệ thống đèn tín hiệu 72 4.7.1 Tính tốn thiết kế chế độ đèn Tail 73 4.7.1.1 Hệ thống đèn đuôi 74 4.7.2 Tính tốn thiết kế chế độ đèn Flash 75 4.7.2.1 Hệ thống đèn đầu 76 v 4.7.3 Tính tốn thiết kế chế độ đèn báo rẽ 77 4.7.3.1 Cụm xi nhan 79 4.7.4 Tính tốn thiết kế chế độ đèn báo nguy 80 4.7.4.1 Công tắc hazard 81 4.7.5 Tính tốn thiết kế chế độ đèn báo phanh 82 4.7.5.1 Công tắc phanh 83 4.7.5.2 Đèn phanh 83 4.8 Các thiết bị công nghệ điều khiển dùng để thực ý tưởng 84 4.8.1 Phần mềm 84 4.8.2 Phần cứng 85 4.8.2.1 Mạch Arduino Uno R3 85 4.8.2.2 Mạch Arduino Mega 2560 87 4.8.3 Nguồn 90 4.8.3.1 Nguồn cung cấp cho toàn hệ thống 90 4.8.3.2 Nguồn cung cấp cho điều khiển trung tâm 90 4.8.3.3 Nguồn cung cấp cho cảm biến, servo, LCD 91 4.8.4 Bộ xử lý trung gian điều khiển đóng ngắt mạch 92 4.8.4.1 Cụm relay đóng/ngắt mạch 92 4.8.4.2 Bộ xử lý trung gian mạch công suất mosfet HA210N06 92 4.9 Tính tốn, lựa chọn dây dẫn cầu chì 94 4.9.1 Tính tốn, lựa chọn dây dẫn cầu chì cho hệ thống đèn chiếu sáng 96 4.9.1.1 Đèn pha 96 4.9.1.2 Đèn cốt 96 4.9.1.3 Đèn tail 97 4.9.1.4 Đèn sương mù 97 4.9.2 Tính tốn, lựa chọn dây dẫn cầu chì cho hệ thống đèn tín hiệu 98 4.9.2.1 Đèn xi nhan trái/phải 98 4.9.2.2 Đèn phanh 98 4.9.2.3 Tính tốn, lựa chọn dây dẫn cầu chì tổng 99 4.10 Thiết kế mơ hình hệ thống chiếu sáng thông minh 99 vi 4.10.1 Các chi tiết mơ hình 99 4.10.2 Phương án thiết kế mơ hình 102 4.10.2.1 Các tiêu chí thiết lập mơ hình 102 4.10.2.2 Phương án lựa chọn hướng bảng mơ hình 102 4.10.2.3 Dự trù ngun vật liệu làm khung đỡ mơ hình 104 CHƯƠNG THI CÔNG MƠ HÌNH 106 5.1 Thi công lắp ráp mô hình 106 5.1.1 Lắp ráp khung đỡ mô hình 106 5.1.2 Lắp ráp linh kiện hệ thống chiếu sáng thơng minh lên mơ hình 107 5.1.2.1 Mặt gỗ dùng lắp linh kiện 107 5.1.2.2 Hệ thống chiếu sáng thơng minh hồn thiện 108 5.1.3 Đấu nối dây bên mơ hình 108 5.2 Nạp chương trình điều khiển 109 5.3 Chạy thử nghiệm đánh giá kết 109 5.3.1 Đèn tín hiệu 109 5.3.2 Đèn chiếu sáng thông thường 110 5.3.3 Đèn chiếu sáng thông minh 110 5.4 Xây dựng tập ứng dụng mơ hình 110 CHƯƠNG KẾT LUẬN 112 6.1 Đánh giá kết 112 6.2 Về lý thuyết 113 6.3 Về thực hành 113 6.4 Đánh giá chung đồ án 113 6.5 Các thuận lợi khó khăn thực đồ án 114 6.6 Khả phát triển đề tài 115 TÀI LIỆU THAM KHẢO 116 PHỤ LỤC 119 vii PHỤ LỤC A: Chương trình điều khiển 119 viii DANH MỤC TỪ VIẾT TẮT AFS: Adaptive Front Light System HIGH: Đèn Pha LCD: Liquid Crystal Display LCS: Light Control Switch LED: Light Emitting Diode LOW: Đèn Cốt ix DANH SÁCH CÁC BẢNG BẢNG TRANG Bảng 4.1: Thông số cảm biến ánh sáng CDS-NVZ1 31 Bảng 4.2: Thông số mạch Arduino Uno R3 86 Bảng 4.3: Thông số Arduino Mega 2560 89 Bảng 4.4: Vật liệu làm khung đỡ mơ hình 105 x dieukhienden(); suongmuz(); liec(); sovong(); if ((digitalRead(head) == LOW) || ((digitalRead(high) == LOW) && (digitalRead(head) == LOW)) || ((digitalRead(auTo) == LOW) && (digitalRead(ldr) == HIGH))) { TH = true; } else { TH = false; } } void xinhan_thongminh() { if ((digitalRead(tin_hieu_bat_hazard) == HIGH) || (digitalRead(LH) == HIGH) && (digitalRead(RH) == HIGH )) { digitalWrite(lh, LOW); digitalWrite(rh, LOW); } if (digitalRead(tin_hieu_bat_hazard) == LOW) { if ((digitalRead(LH) == LOW) && (digitalRead(RH) == HIGH )) { if (value > 554) { digitalWrite(lh, LOW); 124 if ( (unsigned long) (millis() - time2) > 500 ) { if (digitalRead(rh) == LOW) { digitalWrite(rh, HIGH); } else { digitalWrite(rh, LOW); } time2 = millis(); } } else{ digitalWrite(rh, LOW); if ( (unsigned long) (millis() - time2) > 500 ) { if (digitalRead(lh) == LOW) { digitalWrite(lh, HIGH); } else { digitalWrite(lh, LOW); } time2 = millis(); } } } if ((digitalRead(RH) == LOW ) && (digitalRead(LH) == HIGH)) { if (value < 469) { 125 digitalWrite(rh, LOW); if ( (unsigned long) (millis() - time2) > 500 ) { if (digitalRead(lh) == LOW) { digitalWrite(lh, HIGH); } else { digitalWrite(lh, LOW); } time2 = millis(); } } else { digitalWrite(lh, LOW); if ( (unsigned long) (millis() - time2) > 500 ) { if (digitalRead(rh) == LOW) { digitalWrite(rh, HIGH); } else { digitalWrite(rh, LOW); } time2 = millis(); } } } } } 126 void dieukhienden() { if ((digitalRead(tail) == HIGH) && (digitalRead(head) == HIGH) && (digitalRead(high) == HIGH) && (digitalRead(auTo) == HIGH)) { digitalWrite(HI, LOW); digitalWrite(LO, LOW); digitalWrite(TA, LOW); } if (digitalRead(tail) == LOW) { digitalWrite(TA, HIGH); digitalWrite(LO, LOW); digitalWrite(HI, LOW); } if (digitalRead(head) == LOW) { digitalWrite(LO, HIGH); digitalWrite(HI, LOW); digitalWrite(TA, HIGH); } if ((digitalRead(high) == LOW) && (digitalRead(auTo) == HIGH)) { digitalWrite(HI, HIGH); digitalWrite(LO, HIGH); digitalWrite(TA, LOW); } if ((digitalRead(high) == LOW) && ((digitalRead(head) == LOW) || (digitalRead(tail) == LOW))) 127 { digitalWrite(HI, HIGH); digitalWrite(LO, HIGH); digitalWrite(TA, HIGH); } } void tudongchuyenpha() { if ((digitalRead(auTo) == LOW) && (digitalRead(high) == LOW)) { if (digitalRead(ldr) == HIGH) { if ((khoangcach 150) || (digitalRead(ldr0) == HIGH)) { digitalWrite(HI, HIGH); digitalWrite(LO, HIGH); digitalWrite(TA, HIGH); } } if (digitalRead(ldr) == LOW) { digitalWrite(HI, LOW); digitalWrite(LO, LOW); 128 digitalWrite(TA, LOW); } } } void auTo1() { if ((digitalRead(auTo) == LOW) && (digitalRead(high) == HIGH)) { if (digitalRead(ldr) == HIGH) { digitalWrite (TA, HIGH); digitalWrite (LO, HIGH); digitalWrite (HI, LOW); } if (digitalRead(ldr) == LOW) { digitalWrite (TA, LOW); digitalWrite (LO, LOW); digitalWrite (HI, LOW); } } } void suongmuz() { float h = dht.readHumidity(); // Đọc độ ẩm float t = dht.readTemperature(); // Đọc nhiệt độ if (isnan(t) || isnan(h)) {} // Kiểm tra xem thử việc đọc giá trị có bị thất bại hay không else { 129 lcd.setCursor(10, 3); lcd.print(round(t)); // Hiển thị nhiệt độ lên màng hinh LCD lcd.write (1); lcd.print ("C "); lcd.setCursor(10, 2); lcd.print(round(h)); // Hiển thị độ ẩm lên màng hinh LCD lcd.print ("% "); } if (((t = 90)) || (digitalRead(suongmu) == LOW)) { digitalWrite(suongmura, HIGH); } if (((t > 31) || (h < 89)) && (digitalRead(suongmu) == HIGH)) { digitalWrite(suongmura, LOW); } } void liec () { encoder(); int bientro = A1; // Đọc giá trị biến trở chân analog A1 arduino value = analogRead(bientro); // Đọc giá trị biến trở if ((TH == true) && (vantoc >= 20)) { if ((value > 552) && (value < 767)) { 130 int goc_quayp = map(value, 555, 768, 90, 60); // Chuyển giá trị analog (555 - 768) đọc từ biến trở sang số đo độ (90 - 60độ) để diều khiển góc quay bên phải int goc_quayt = map(value, 555, 768, 90, 90); // Chuyển giá trị analog (555 - 768) đọc từ biến trở sang số đo độ (90 - 90độ) để diều khiển góc quay bên trái myservop.write(goc_quayp); // Điều khiển servo bên phải quay góc goc_quayp độ myservot.write(goc_quayt); // Điều khiển servo bên trái quay góc goc_quayt độ } if (value > 768) { int goc_quayp = map(value, 769, 1023, 60, 60); int goc_quayt = map(value, 769, 1023, 90, 90); myservop.write(goc_quayp); myservot.write(goc_quayt); } if ((value < 471) && (value > 256)) { int goc_quayp = map(value, 469, 256, 90, 90); int goc_quayt = map(value, 469, 256, 90, 120); myservot.write(goc_quayt); myservop.write(goc_quayp); } if (value < 256 ) { int goc_quayp = map(value, 255, 0, 90, 90); int goc_quayt = map(value, 255, 0, 120, 120); myservop.write(goc_quayp); myservot.write(goc_quayt); 131 } } if ((TH == false) || (vantoc < 20)) { int goc_quayp = map(value, 0, 1023, 90, 90); int goc_quayt = map(value, 0, 1023, 90, 90); myservop.write(goc_quayp); myservot.write(goc_quayt); } } void encoder() { if ( (unsigned long) (millis() - time1) > 1000 ) { rotating = true; // Khởi động debounce (có thể hiểu chống nhiễu) newposition = encoderPos; detachInterrupt(1); // Tắt ngắt kích hoạt vantoc = (0.3015 * * 3.14 * (newposition - oldposition) / 100 * 3.6) / 6.8; oldposition = newposition; lcd.setCursor(8, 1); lcd.print(vantoc); lcd.print(" Km/h "); attachInterrupt(1, doEncoderB, CHANGE); // Gọi hàm doEncoderB có ngắt time1 = millis(); } } 132 void doEncoderB() { if ( rotating ) delay (1); if ( digitalRead(encoderPinB) == ) { encoderPos += 1; rotating = false; // Tăng lên B = // Tắt debounce } } void khoangcachz() { if ( (unsigned long) (millis() - time3) > 50 ) { int value = digitalRead(ldr0); long thoigian; digitalWrite (trigPin, LOW); // Tắt chân trig delayMicroseconds (2); // Thời gian trễ microseconds digitalWrite (trigPin, HIGH); // Phát xung chân trig delayMicroseconds (10); // Thời gian phát xung 1a 10 microseconds digitalWrite (trigPin, LOW); // Tắt chân trig Serial.println(trigPin); thoigian = pulseIn(echoPin, HIGH); // Đo độ rộng xung HIGH chân echo khoangcach = thoigian * 0.034 / 2; lcd.setCursor(13, 0); lcd.print(khoangcach); // Hiển thị kết màng hình LCD lcd.print ("cm "); } 133 time3 = millis(); } void sovong() { float vong = ((((value * 10)/1023.0) - 5)); if (vong >= 0) { lcd.setCursor(16, 3); lcd.print ("+"); lcd.setCursor(17, 3); lcd.print (vong, FLOAT_POINT_SIZE); } else { lcd.setCursor(15, 3); lcd.print (""); lcd.setCursor(16, 3); lcd.print (vong, FLOAT_POINT_SIZE); } } void lieclenxuong() { accel.update(); x = accel.x(); if (TH == true) { if ( (unsigned long) (millis() - timer) > 500 ) { if((x>-1333) && (x 500 ) { if ((digitalRead(rh) == LOW) && (digitalRead(lh) == LOW)) { digitalWrite(lh, HIGH); digitalWrite(rh, HIGH); } else { digitalWrite(lh, LOW); digitalWrite(rh, LOW); } time2 = millis(); } } if (digitalRead(hazard) == HIGH) { digitalWrite(tin_hieu_bat_hazard, LOW); digitalWrite(lh, LOW); digitalWrite(rh, LOW); } } int getFingerprintIDez() { 137 uint8_t p = finger.getImage(); if (p != FINGERPRINT_OK) return -1; p = finger.image2Tz(); if (p != FINGERPRINT_OK) return -1; p = finger.fingerFastSearch(); if (p != FINGERPRINT_OK) return -1; digitalWrite(chot_khoa_cua, HIGH); digitalWrite(den, HIGH); lcd.clear(); lcd.setCursor(1, 0); lcd.print("Cua da duoc mo "); lcd.setCursor(3, 1); lcd.print("WELLCOME :)) "); delay(500); digitalWrite(den, LOW); delay(500); digitalWrite(den, HIGH); delay(500); digitalWrite(den, LOW); digitalWrite(chot_khoa_cua, HIGH); delay(8500); digitalWrite(chot_khoa_cua, LOW); lcd.clear(); lcd.setCursor(0, 0); lcd.print(" VUI LONG "); lcd.setCursor(0, 1); lcd.print("DAT NGON TAY VAO return finger.fingerID; } 138 "); ... đây: Nghiên cứu, tính tốn, thiết kế, chế tạo hệ thống chiếu sáng thông minh ô tô; Nghiên cứu tổng quan hệ thống chiếu sáng – tín hiệu tơ; Lắp đặt hệ thống chiếu sáng – tín hiệu thơng minh; ... ánh sáng khơng chiếu ngồi Hệ thống sử dụng gương siêu nhỏ để điều khiển chùm sáng chiếu theo ý muốn 25 Chương TÍNH TỐN VÀ THIẾT KẾ HỆ THỐNG CHIẾU SÁNG THÔNG MINH Ô TÔ 4.1 Ý tưởng thiết kế mơ hình. .. cho phát triển chung hệ thống chiếu sáng thông minh, chúng em khơng ngừng tìm tịi, học hỏi để thiết kế chế tạo mơ hình hệ thống chiếu sáng thông minh ô tô Chúng em hi vọng mô hình giúp sinh viên