1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thiết kế chế tạo hệ thống cảnh báo xe ô tô chạy quá tốc độ cho phép trên đường cao tốc

110 7 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

Đề tài nghiên cứu thành công được là nhờ nhà trường tạo điều kiện thuận lợi nhất trong quá trình nguyên cứu thực hiện, tận tâm hướng dẫn của giảng viên và nỗ lực của bản thân. Vì vậy, tôi xin chân thành cảm ơn. Ban giám hiệu Trường Đại Học giao thông vận tải TP.HCM. Viện đào tạo sau đại học Trường Đại Học giao thông vận tải TP.HCM. Khoa cơ khí Trường Đại Học giao thông vận tải TP.HCM Thầy T.S Nguyễn Văn Nhanh cùng toàn thể quý thầy cô đã dạy và hướng dẫn nhiệt tình tạo mọi điều kiện thuận lợi cho tôi trong suốt thời gian học và nguyên cứu đề tài. Các bạn học viên, đồng nghiệp đã động viên ủng hộ tinh thần trong suốt quá trình học tập.

BỘ GIÁO DỤC VÀ ĐÀO TẠO BỘ GIAO THÔNG VẬN TẢI TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP.HCM - oOo NGUYỄN THANH TÂN THIẾT KẾ, CHẾ TẠO HỆ THỐNG CẢNH BÁO XE Ô TÔ CHẠY QUÁ TỐC ĐỘ CHO PHÉP TRÊN ĐƯỜNG CAO TỐC LUẬN VĂN THẠC SĨ KỸ THUẬT TP HCM 09 - 2017 BỘ GIÁO DỤC VÀ ĐÀO TẠO BỘ GIAO THÔNG VẬN TẢI TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI TP.HCM - oOo NGUYỄN THANH TÂN THIẾT KẾ, CHẾ TẠO HỆ THỐNG CẢNH BÁO XE Ô TÔ CHẠY QUÁ TỐC ĐỘ CHO PHÉP TRÊN ĐƯỜNG CAO TỐC CHUYÊN NGÀNH: KỸ THUÂT CƠ KHÍ ĐỘNG LỰC MÃ SỐ: 60520116 LUẬN VĂN THẠC SĨ KỸ THUẬT NGƯỜI HƯỚNG DẪN KHOA HỌC: TS NGUYỄN VĂN NHANH TP HCM 09 – 2017 -2- -3- DANH MỤC VIẾT TẮT VIẾT TẮT MRI RGB CMY HSV OpenCV IDE SVM TÊN Magnetic Resonance Imaging (Cộng hưởng từ) RED (đỏ), GREEN (xanh lá) BLUE (xanh dương) CYAN (xanh mạ), MAGENTA (đỏ tươi) YELLOW (vàng) Hue (màu sắc), Saturation (sự bão hoà) Value (giá trị) Open Computer Vision ( thư viện mã nguồn mở ) Integrated Development Environment (phần mềm cung cấp cho lập trình viên) Support Vector Machine ( mơ hình máy học giám sát ) -4- TRANG 16 30 31 31 41 62 71 DANH MỤC HÌNH ẢNH HÌNH 1.1 1.2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14 2.15 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 3.21 TÊN Giao diện chương trình kết việc giám sát giao thông Hệ thống chụp ảnh cộng hưởng từ MRI Các bước xử lý ảnh Hệ thống xử lý ảnh Sơ đồ phân tích xử lý ảnh Các bước xử lý ảnh Các mô hình màu Hệ tọa độ màu RGB Mơ hình màu HSV Các hệ phát triển hệ thống giám sát Một số loại biển báo giao thơng Xám hóa ảnh Tách vùng biển báo giao thông Các ứng dụng xử lý ảnh thư viện OpenCV Cấu trúc thư viện OpenCV Các thành phần thư viện OpenCV Cấu trúc thành phần XCORE Sơ đồ kết nối phần cứng hệ thống Máy tính Raspberry Pi Máy tính Raspberry Pi3 phụ kiện hỗ trợ Cổng kết nối Raspberry Pi Camera Cấu hình bật tắt Camera Board mạch Arduino Mega2560 Giao diện Arduino IDE Phóng to pixel ảnh Hình ảnh mơ ảnh phóng to Ảnh thực tế phóng to Biểu đồ phân bố Histogram Hình ảnh sau cân Histogram Hình ảnh sau chuyển đổi màu RGB sang HSV Ảnh trước sau chuyển đổi qua khơng gian màu Hình ảnh minh họa SVM Một phần mơ hình huấn luyện SVM Hình ảnh tổng quan hệ thống sau lắp ráp Hình ảnh chụp phần xử lý âm khối nguồn Hình ảnh chụp hệ thống lắp đặt xe Hình ảnh chụp hệ thống lắp đặt xe từ Hình ảnh chụp hệ thống lắp đặt xe từ -5- TRANG 14 16 20 20 25 28 30 31 32 34 36,37 38 39 41 42 44 45 49 52 54 55 56 61 62 67 67 68 68 69 70 71 72 73 76 76 77 78 79 HÌNH TÊN 4.1 Hình ảnh thử nghiệm lần đường cao tốc Long Thành – Dầu Giây – TP.HCM 4.2 Hình ảnh thử nghiệm lần đường cao tốc Long Thành – Dầu Giây – TP.HCM 4.3 Hình ảnh thử nghiệm lần đường cao tốc Long Thành – Dầu Giây – TP.HCM 4.4 Hình ảnh thử nghiệm lần đường cao tốc Long Thành – Dầu Giây – TP.HCM 4.5 Hình ảnh thử nghiệm lần đường cao tốc Long Thành– Dầu Giây–TP.HCM 4.6 Hình ảnh thử nghiệm lần đường cao tốc Long Thành– Dầu Giây–TP.HCM -6- TRANG 80 81 82 82 84 85 DANH MỤC BẢNG Bảng Biển báo giao thông Số lần tách biển báo lần Số lần nhận dạng biển báo lần Số lần tách biển báo lần Số lần nhận dạng biển báo lần Số lần tách biển báo lần Số lần nhận dạng biển báo lần Trang 64.65 81 81 83 83 84 85 -7- LỜI CAM ĐOAN Tôi cam đoan cơng trình nghiên cứu thân thực suốt trình làm đề tài Các số liệu, kết nêu luận văn trung thực chưa công bố công trình khác TP.HCM, ngày … tháng năm 2017 (Ký tên ghi rõ họ tên) Nguyễn Thanh Tân -8- LỜI CẢM ƠN Đề tài nghiên cứu thành công nhờ nhà trường tạo điều kiện thuận lợi trình nguyên cứu thực hiện, tận tâm hướng dẫn giảng viên nỗ lực thân Vì vậy, tơi xin chân thành cảm ơn Ban giám hiệu Trường Đại Học giao thông vận tải TP.HCM Viện đào tạo sau đại học Trường Đại Học giao thơng vận tải TP.HCM Khoa khí Trường Đại Học giao thông vận tải TP.HCM Thầy T.S Nguyễn Văn Nhanh tồn thể q thầy dạy hướng dẫn nhiệt tình tạo điều kiện thuận lợi cho suốt thời gian học nguyên cứu đề tài Các bạn học viên, đồng nghiệp động viên ủng hộ tinh thần suốt trình học tập Tuy thời gian thực đề tài khoản tháng, lượng kiến thức liên quan để phục vụ cho công tác nghiên cứu đề tài thuộc lãnh vực điện tử điều khiển tự động, công nghệ thông tin nên khả tiếp cận lĩnh hội học viên chuyên ngành khí động lực gặp nhiều khó khăn hạn chế Tuy nhiên, với hướng dẫn tạo điều kiện thuận lợi Thầy TS Nguyễn Văn Nhanh bạn đồng nghiệp, lĩnh hội nhiều kiến thức mới, bổ ích để phục vụ cho ngành khí động lực công tác nghiên cứu sau trường Vì vậy, lần tơi xin chân thành cảm ơn quý thầy cô bạn Xin chúc quý thầy tồn thể bạn học viên ln hạnh phúc thành công! TP.HCM, ngày … tháng năm 2017 Người cảm ơn Nguyễn Thanh Tân -9- MỤC LỤC DANH MỤC VIẾT TẮT DANH MỤC HÌNH ẢNH DANH MỤC BẢNG LỜI CAM ĐOAN LỜI CẢM ƠN MỤC LỤC 10 CHƯƠNG TỔNG QUAN 13 1.1 LÝ DO CHỌN ĐỀ TÀI 13 1.2 CÁC KẾT QUẢ NGHIÊN CỨU 14 1.2.1 Trong nước 14 1.2.2 Thế giới 15 1.3 MỤC ĐÍCH ĐỀ TÀI 16 1.4 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 17 1.5 PHƯƠNG PHÁP NGHIÊN CỨU 17 1.6 Ý NGHĨA KHOA HỌC VÀ TÍNH THỰC TIỄN CỦA ĐỀ TÀI 17 1.7 GIỚI HẠN ĐỀ TÀI 18 1.8 KẾ HOẠCH THỰC HIỆN 18 CHƯƠNG CƠ SỞ LÝ THUYẾT 19 2.1 GIỚI THIỆU CHUNG VỀ XỬ LÝ ẢNH 19 2.2 CÁC BƯỚC TRONG XỬ LÝ ẢNH 21 2.2.1 Thu nhận ảnh 21 2.2.2 Tiền xử lý ảnh 21 2.2.3 Phân đoạn ảnh 21 2.2.4 Biểu diễn ảnh 22 2.2.5 Nhận dạng nội suy 22 2.2.6 Cơ sở tri thức 23 2.2.7 Mô tả ảnh 23 - 10 - } chay(); } uint32_t millis_prv; void parse_menu(byte key_command) { uint8_t result; char title[30]; char artist[30]; char album[30]; Serial.print(F("Received command: ")); Serial.write(key_command); Serial.println(F(" ")); if(key_command == 's') { Serial.println(F("Stopping")); MP3player.stopTrack(); } else if(key_command >= '1' && key_command = 254) { mp3_vol.byte[1] = 254; } else { mp3_vol.byte[1] += 2; } } else { if(mp3_vol.byte[1] >1, 1); Serial.println(F("[dB]")); } else if((key_command == '>') || (key_command == '') { if(playspeed >= 254) { playspeed = 5; } else { playspeed += 1; } } else { if(playspeed == 0) { playspeed = 0; } else { playspeed -= 1; } } MP3player.setPlaySpeed(playspeed); Serial.print(F("playspeed to ")); Serial.println(playspeed, DEC); } else if(key_command == 'f' || key_command == 'F') { uint32_t offset = 0; if (key_command == 'F') { offset = 2000; } - 98 - char trackName[] = "track001.mp3"; #if USE_MULTIPLE_CARDS sd.chvol(); // assign desired sdcard's volume #endif result = MP3player.playMP3(trackName, offset); if(result != 0) { Serial.print(F("Error code: ")); Serial.print(result); Serial.println(F(" when trying to play track")); } } else if(key_command == 'd') { if(!MP3player.isPlaying()) { Serial.println(F("Files found (name date time size):")); sd.ls(LS_R | LS_DATE | LS_SIZE); } else { Serial.println(F("Busy Playing Files, try again later.")); } } else if(key_command == 'i') { MP3player.getAudioInfo(); } else if(key_command == 'p') { if( MP3player.getState() == playback) { MP3player.pauseMusic(); Serial.println(F("Pausing")); } else if( MP3player.getState() == paused_playback) { MP3player.resumeMusic(); Serial.println(F("Resuming")); } else { Serial.println(F("Not Playing!")); } - 99 - } else if(key_command == 't') { int8_t teststate = MP3player.enableTestSineWave(126); if(teststate == -1) { Serial.println(F("Un-Available while playing music or chip in reset.")); } else if(teststate == 1) { Serial.println(F("Enabling Test Sine Wave")); } else if(teststate == 2) { MP3player.disableTestSineWave(); Serial.println(F("Disabling Test Sine Wave")); } } else if(key_command == 'S') { Serial.println(F("Current State of VS10xx is.")); Serial.print(F("isPlaying() = ")); Serial.println(MP3player.isPlaying()); Serial.print(F("getState() = ")); switch (MP3player.getState()) { case uninitialized: Serial.print(F("uninitialized")); break; case initialized: Serial.print(F("initialized")); break; case deactivated: Serial.print(F("deactivated")); break; case loading: - 100 - Serial.print(F("loading")); break; case ready: Serial.print(F("ready")); break; case playback: Serial.print(F("playback")); break; case paused_playback: Serial.print(F("paused_playback")); break; case testing_memory: Serial.print(F("testing_memory")); break; case testing_sinewave: Serial.print(F("testing_sinewave")); break; } Serial.println(); } else if(key_command == 'b') { Serial.println(F("Playing Static MIDI file.")); MP3player.SendSingleMIDInote(); Serial.println(F("Ended Static MIDI file.")); #if !defined( AVR_ATmega32U4 ) } else if(key_command == 'm') { uint16_t teststate = MP3player.memoryTest(); if(teststate == -1) { - 101 - Serial.println(F("Un-Available while playing music or chip in reset.")); } else if(teststate == 2) { teststate = MP3player.disableTestSineWave(); Serial.println(F("Un-Available while Sine Wave Test")); } else { Serial.print(F("Memory Test Results = ")); Serial.println(teststate, HEX); Serial.println(F("Result should be 0x83FF.")); Serial.println(F("Reset is needed to recover to normal operation")); } } else if(key_command == 'e') { uint8_t earspeaker = MP3player.getEarSpeaker(); if(earspeaker >= 3){ earspeaker = 0; } else { earspeaker++; } MP3player.setEarSpeaker(earspeaker); // commit new earspeaker Serial.print(F("earspeaker to ")); Serial.println(earspeaker, DEC); } else if(key_command == 'r') { MP3player.resumeMusic(2000); } else if(key_command == 'R') { MP3player.stopTrack(); MP3player.vs_init(); Serial.println(F("Reseting VS10xx chip")); - 102 - } else if(key_command == 'g') { int32_t offset_ms = 20000; Serial.print(F("jumping to ")); Serial.print(offset_ms, DEC); Serial.println(F("[milliseconds]")); result = MP3player.skipTo(offset_ms); if(result != 0) { Serial.print(F("Error code: ")); Serial.print(result); Serial.println(F(" when trying to skip track")); } } else if(key_command == 'k') { int32_t offset_ms = -1000; // Note this is just an example, try your own number Serial.print(F("moving = ")); Serial.print(offset_ms, DEC); Serial.println(F("[milliseconds]")); result = MP3player.skip(offset_ms); if(result != 0) { Serial.print(F("Error code: ")); Serial.print(result); Serial.println(F(" when trying to skip track")); } } else if(key_command == 'O') { MP3player.end(); Serial.println(F("VS10xx placed into low power reset mode.")); - 103 - } else if(key_command == 'o') { MP3player.begin(); Serial.println(F("VS10xx restored from low power reset mode.")); } else if(key_command == 'D') { uint16_t diff_state = MP3player.getDifferentialOutput(); Serial.print(F("Differential Mode ")); if(diff_state == 0) { MP3player.setDifferentialOutput(1); Serial.println(F("Enabled.")); } else { MP3player.setDifferentialOutput(0); Serial.println(F("Disabled.")); } } else if(key_command == 'V') { MP3player.setVUmeter(1); Serial.println(F("Use \"No line ending\"")); Serial.print(F("VU meter = ")); Serial.println(MP3player.getVUmeter()); Serial.println(F("Hit Any key to stop.")); while(!Serial.available()) { union twobyte vu; vu.word = MP3player.getVUlevel(); Serial.print(F("VU: L = ")); Serial.print(vu.byte[1]); Serial.print(F(" / R = ")); Serial.print(vu.byte[0]); - 104 - Serial.println(" dB"); delay(1000); } Serial.read(); MP3player.setVUmeter(0); Serial.print(F("VU meter = ")); Serial.println(MP3player.getVUmeter()); } else if(key_command == 'T') { uint16_t TrebleFrequency = MP3player.getTrebleFrequency(); Serial.print(F("Former TrebleFrequency = ")); Serial.println(TrebleFrequency, DEC); if (TrebleFrequency >= 15000) { // Range is from - 1500Hz TrebleFrequency = 0; } else { TrebleFrequency += 1000; } MP3player.setTrebleFrequency(TrebleFrequency); Serial.print(F("New TrebleFrequency = ")); Serial.println(MP3player.getTrebleFrequency(), DEC); } else if(key_command == 'E') { int8_t TrebleAmplitude = MP3player.getTrebleAmplitude(); Serial.print(F("Former TrebleAmplitude = ")); Serial.println(TrebleAmplitude, DEC); if (TrebleAmplitude >= 7) { // Range is from -8 - 7dB TrebleAmplitude = -8; } else { - 105 - TrebleAmplitude++; } MP3player.setTrebleAmplitude(TrebleAmplitude); Serial.print(F("New TrebleAmplitude = ")); Serial.println(MP3player.getTrebleAmplitude(), DEC); } else if(key_command == 'B') { uint16_t BassFrequency = MP3player.getBassFrequency(); Serial.print(F("Former BassFrequency = ")); Serial.println(BassFrequency, DEC); if (BassFrequency >= 150) { // Range is from 20hz - 150hz BassFrequency = 0; } else { BassFrequency += 10; } MP3player.setBassFrequency(BassFrequency); Serial.print(F("New BassFrequency = ")); Serial.println(MP3player.getBassFrequency(), DEC); } else if(key_command == 'C') { uint16_t BassAmplitude = MP3player.getBassAmplitude(); Serial.print(F("Former BassAmplitude = ")); Serial.println(BassAmplitude, DEC); if (BassAmplitude >= 15) { // Range is from - 15dB BassAmplitude = 0; } else { BassAmplitude++; } MP3player.setBassAmplitude(BassAmplitude); - 106 - Serial.print(F("New BassAmplitude = ")); Serial.println(MP3player.getBassAmplitude(), DEC); } else if(key_command == 'M') { uint16_t monostate = MP3player.getMonoMode(); Serial.print(F("Mono Mode ")); if(monostate == 0) { MP3player.setMonoMode(1); Serial.println(F("Enabled.")); } else { MP3player.setMonoMode(0); Serial.println(F("Disabled.")); } #endif /* List out music files on the SdCard */ } else if(key_command == 'l') { if(!MP3player.isPlaying()) { Serial.println(F("Music Files found :")); SdFile file; char filename[13]; sd.chdir("/",true); uint16_t count = 1; while (file.openNext(sd.vwd(),O_READ)) { file.getFilename(filename); if ( isFnMusic(filename) ) { SerialPrintPaddedNumber(count, ); Serial.print(F(": ")); - 107 - Serial.println(filename); count++; } file.close(); } Serial.println(F("Enter Index of File to play")); } else { Serial.println(F("Busy Playing Files, try again later.")); } } else if(key_command == 'h') { help(); } // print prompt after key stroke has been processed Serial.print(F("Time since last command: ")); Serial.println((float) (millis() - millis_prv)/1000, 2); millis_prv = millis(); Serial.print(F("Enter s,1-9,+,-,>, or

Ngày đăng: 24/12/2023, 16:22

Xem thêm:

w