(Đồ án tốt nghiệp) thiết kế và thi công hệ thống phát hiện tai nạn, định vị và bảo mật cho xe máy

78 2 0
(Đồ án tốt nghiệp) thiết kế và thi công hệ thống phát hiện tai nạn, định vị và bảo mật cho xe máy

Đ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

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGÀNH CƠNG NGHỆ KỸ THUẬT MÁY TÍNH THIẾT KẾ VÀ THI CÔNG HỆ THỐNG PHÁT HIỆN TAI NẠN, ĐỊNH VỊ VÀ BẢO MẬT CHO XE MÁY GVHD: PHAN VĂN CA SVTH: TRẦN QUỐC HUY MSSV: 14119150 SVTH: PHẠM NGỌC ĐÀI MSSV: 14119140 SKL006561 Tp Hồ Chí Minh, tháng 07/2018 TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHOA ĐÀO TẠO CHẤT LƯỢNG CAO ĐỒ ÁN TỐT NGHIỆP THIẾT KẾ VÀ THI CÔNG HỆ THỐNG PHÁT HIỆN TAI NẠN, ĐỊNH VỊ VÀ BẢO MẬT CHO XE MÁY SVTH : TRẦN QUỐC HUY MSSV : 14119150 SVTH : PHẠM NGỌC ĐÀI MSSV : 14119140 Khoá : 2014 - 2018 Ngành : CN KỸ THUẬT MÁY TÍNH GVHD: PGS.TS PHAN VĂN CA Tp Hồ Chí Minh, tháng 07 năm 2018 CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc *** Tp Hồ Chí Minh, ngày 19 tháng 07 năm 2018 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Trần Quốc Huy MSSV: 14119150 Phạm Ngọc Đài MSSV: 14119140 Ngành: CN Kỹ thuật Máy Tính Lớp: 14119CL1 Giảng viên hướng dẫn: PGS.TS Phan Văn Ca Ngày nhận đề tài: 03/2018 Ngày nộp đề tài: 19/07/2018 Tên đề tài: Thiết kế thi công hệ thống phát tai nạn, định vị bảo mật cho xe máy Các số liệu, tài liệu ban đầu: Vikas J Desai1, Swati P Nawale2, and Sachin R.Kokane (2014) Design and Implementation of GSM and GPS Based Vehicle Accident Detection System [8] Nội dung thực đề tài: - Xử lý liệu cảm biến để xác định tai nạn xe máy - Nhận, gửi tin nhắn từ hệ thống tới điện thoại - Xác định tọa độ GPS cho hệ thống - Chống trộm, cướp xe máy Sản phẩm: Mơ hình hệ thống phát tai nạn, định vị bảo mật cho xe máy TRƯỞNG NGÀNH GIẢNG VIÊN HƯỚNG DẪN i CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh Phúc ******* PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Họ tên Sinh viên: Trần Quốc Huy Phạm Ngọc Đài Ngành: CN Kỹ thuật Máy Tính Tên đề tài: Thiết kế thi công hệ thống phát tai nạn, định vị bảo mật cho xe máy Họ tên Giáo viên hướng dẫn: PGS.TS Phan Văn Ca NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm:……………….(Bằng chữ: ) Tp Hồ Chí Minh, ngày tháng năm 2018 Giáo viên hướng dẫn (Ký & ghi rõ họ tên) ii CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh Phúc ******* PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Họ tên Sinh viên: Trần Quốc Huy MSSV: 14119150 Phạm Ngọc Đài MSSV: 14119140 Ngành: CN Kỹ thuật Máy Tính Tên đề tài: Thiết kế thi công hệ thống phát tai nạn, định vị bảo mật cho xe máy Họ tên Giáo viên phản biện: NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm:……………….(Bằng chữ: ) Tp Hồ Chí Minh, ngày tháng năm 2018 Giáo viên phản biện (Ký & ghi rõ họ tên) iii LỜI CẢM ƠN Để hồn thành khóa luận tốt nghiệp này, chúng em xin chân thành cảm ơn quý Thầy Cô Trường Đại học Sư Phạm Kỹ Thuật TP.Hồ Chí Minh nói chung q Thầy Cơ Khoa Đào Tạo Chất Lượng Cao, Khoa Điện - Điện Tử nói riêng truyền đạt cho chúng em kiến thức kinh nghiệm quý báu suốt năm học vừa qua Xin gửi lời cảm ơn chân thành đến Thầy PGS.TS Phan Văn Ca, người dành thời gian quý báu mình, trực tiếp hướng dẫn tận tình cho chúng em hồn thành khóa luận tốt nghiệp Xin chân thành cảm ơn sự giúp đỡ bạn bè, anh chị, người giúp đỡ chúng em tìm kiếm thơng tin suốt q trình thực khóa luận Một lần xin chân thành cảm ơn đến tất người quan tâm đến khóa luận chúng em Tuy nhiên, q trình làm việc khơng thể tránh khỏi sai sót, mong sự đóng góp ý kiến nhiệt tình Thầy Cơ bạn Nhóm sinh viên thực Trần Quốc Huy Phạm Ngọc Đài iv TÓM TẮT KHÓA LUẬN Hiện số người sở hữu xe máy ngày gia tăng, kèm theo dẫn đến việc tệ nạn xa hội trộm, cướp xe máy ngày tăng cao Theo khơng thể khơng kể đến việc tai nạn giao thông xe máy gây ngày khơng thể kiểm sốt Người dùng xe máy ngày cần thiết bị thông minh để hỗ trợ họ việc sử dụng xe máy Đồ án “Thiết kế thi công hệ thống phát tai nạn, định vị bảo mật cho xe máy ” đồ án mang tính thực tế, phù hợp với tình trạng xã hội Báo cáo đồ án chia thành sáu chương với nội dung sau: Chương Tổng quan Chương Cơ sở lý thuyết Chương Phân tích thiết kế hệ thống Chương Thiết kế phần mềm Chương Kết thử nghiệm đánh giá Chương Kết luận hướng phát triển v MỤC LỤC NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP i PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ii PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN iii LỜI CẢM ƠN iv TÓM TẮT KHÓA LUẬN v MỤC LỤC vi DANH MỤC HÌNH ẢNH ix DANH MỤC CHỮ VIẾT TẮT xi DANH MỤC BẢNG xii TỔNG QUAN 1.1 Giới thiệu 1.2 Mục tiêu đề tài 1.3 Tình hình nghiên cứu nước Trong nước Ngoài Nước 1.4 Mục đích, đối tượng phạm vi nghiên cứu Mục đích nghiên cứu Đối tượng nghiên cứu Phạm vi nghiên cứu 1.5 Phương pháp nghiên cứu Phương pháp nghiên cứu trực tiếp Phương pháp nghiên cứu gián tiếp vi 1.6 Ý nghĩa lý luận thực tiễn đề tài 1.7 Thuận lợi khó khăn Thuận lợi Khó khăn CƠ SỞ LÝ THUYẾT 2.1 Tai nạn xe máy Các loại tai nạn xe máy Phương pháp xác định 2.2 GPS (Global Positioning System) 2.3 SMS (Short Message Service) 2.4 Bluetooth Low Energy 2.5 Bộ lọc Kalman 10 Khái niệm lọc số 10 Lý thuyết lọc Kalman 10 Trạng thái hệ thống 10 Hoạt động lọc Kalman 11 2.6 Chuẩn giao tiếp UART 12 2.7 Chuẩn giao tiếp TWI 13 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 15 3.1 Mơ hình tổng qt hệ thống 15 Yêu cầu hệ thống 15 Sơ đồ khối hệ thống 15 Hoạt động hệ thống 16 vii 3.2 Thiết kế hệ thống 17 Khối truyền thông 17 Khối định vị GPS 21 Khối cảm biến 23 Khối xử lý trung tâm 25 3.3 Thuật toán điều khiển 28 Lưu đồ toàn hệ thống 28 Lưu đồ xử lý SIM808 29 Lưu đồ xử lý GPS NEO-6M 30 Mơ hình máy trạng thái hữu hạn 31 THIẾT KẾ PHẦN MỀM 32 4.1 Mục đích 32 4.2 Xây dựng ứng dụng di động 32 KẾT QUẢ THỬ NGHIỆM VÀ ĐÁNH GIÁ 35 5.1 Quy trình thử nghiệm 35 5.2 Các kết thử nghiệm 35 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 43 6.1 Kết luận 43 Các kết đạt 43 Chưa đạt 44 6.2 Hướng phát triển 44 DANH MỤC TÀI LIỆU THAM KHẢO 45 PHỤ LỤC 46 viii Hình 5.11 Phát xe bị cướp Hệ thống phát kết nối Bluetooth hệ thống điện thoại người người dùng bị ngắt nên hệ thống khóa 42 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 6.1 Kết luận Sau xác định đề tài, nhóm tiến hành phân tích, thiết kế hệ thống thi công mạch để thử nghiệm Kết nhóm hồn thành 95% u cầu đặt Về tính phát tai nạn xảy xe máy, hệ thống hoàn thành tính mức Hệ thống phân biệt trường hợp xe chuyển từ trạng thái chạy sang trạng thái dừng xe chuyển từ trạng thái chạy sang trạng thái té ngã Về tính giám sát vị trí xe máy, hệ thống hoạt động linh hoạt tính Thời gian từ lúc hệ thống nhận tín hiệu (khi có tin nhắn cú pháp u cầu thơng báo vị trí phát tai nạn xảy xe lưu thông) đến lúc hệ thống trả lời tin nhắn nhanh, tương đương với thời gian nhận/gửi tin nhắn hai điện thoại với Về tính chống trộm, cướp cho xe máy, hệ thống hoàn thành yêu cầu đặt Tính chống trộm thử nghiệm hiệu đòi hỏi người dùng phải nhập mật hệ thống sau khởi động xe thành cơng Tính chống cướp thử nghiệm hiệu quả, hệ thống phát có ngắt kết nối hệ thống điện thoại thông minh người người dùng hệ thống trở trạng thái khóa giúp xe máy khơng thể bị cướp lưu thông Các kết đạt Hệ thống hồn thành tính đề hoạt động ổn định thời gian dài Hệ thống thiết kế thi công, nhiên điều kiện thử nghiệm xe máy phức tạp nên nhóm định thử nghiệm với hệ thống lắp xe đạp mini mơ hình hóa tương tự xe máy (có cơng tắt nguồn mơ cho chìa khóa xe, nút nhấn mô cho nút khởi động xe máy, quạt mô cho động xe máy) Chưa đạt Tuy hệ thống hoàn thành đạt yêu cầu đề số điểm hạn chế cần khắc phục muốn phát triển hệ thống, số điểm hạn chế hệ thống sau: • Q trình khởi động hệ thống tốn nhiều thời gian nơi bị che khuất, bị che khuất việc thu tín hiệu từ vệ tinh module GPS khơng diễn • Phần cứng hoạt động ổn định, để lắp ráp vào xe máy thực tế khó khăn mạch thiết kế có kích thước cịn tương đối lớn • Ứng dụng di động đơn giản, chưa tương tác nhiều với người dùng • Chưa xử lý tình người xe máy bị cướp xe lẫn điện thoại 6.2 Hướng phát triển Để khắc phục cho phần chưa đạt được, nhóm đưa các hướng phát triển sau: • Phần cứng cho khối GPS sử dụng phần cứng cao cấp để đảm bảo hệ thống vận hành điều kiện khơng ổn định • Thiết kế mạch điện toàn hệ thống với tỉ lệ nhỏ để thực thực tế xe máy • Cần thiết kế lại ứng dụng di động hồn thiện hơn, tìm hiểu thiết kế ứng dụng thông minh cho điện thoại sử dụng hệ điều hành IOS • Thiết kế thêm điều khiển thay cho điện thoại thông minh 4 DANH MỤC TÀI LIỆU THAM KHẢO Tiếng Việt: [1] Phan Văn Ca – Trương Quang Phúc (2017), “Cơ sở ứng dụng Internet Of Things (Thiết kế hệ thống nhúng)”, Nhà xuất ĐHQG TP.Hồ Chí Minh Việt Nam [2] URL (Fox): https://ikybike.com/ [3] URL (iKY Bike): https://fox.pistore.asia/ Tiếng Anh [4] Kalman filter R G Brown and P Y C Hwang 1992 Introduction to Random Signals and Applied Kalman Filtering, 2nd Edition, John Wiley & Sons, Inc [5] Bluetooth Albert Huang and Larry Rudolph, 2005, Bluetooth for Programmers [6] SMS Daniel Treyer, 2000, Introduction to the Global System for Mobile Communications (GSM) [7] GPS Rand Corporation, 1995, The Global Positioning System, Assessing National Policies, Appendix B, GPS History, Chronology, and Budgets [8] Vikas J Desai1, Swati P Nawale2, and Sachin R.Kokane (2014) Design and Implementation of GSM and GPS Based Vehicle Accident Detection System 45 PHỤ LỤC Chương trình điều khiển toàn hệ thống sử dụng vi điều khiển ATmega2560 #include #include #include #include #include #include #include #include #include #include "TinyGPS.h" "Kalman.h" "Thread.h" "StaticThreadController.h" "DFRobot_sim808.h" "SerialCommand.h" "EepromUtil.h" #define TEST_GPS STD_ON //thu nghiem khong co song GPS #define CMD_SERIAL #define GPS_SERIAL #define SIM_SERIAL #define BLT_SERIAL #define LED_PIN #define BUZZER_PIN #define STATE_BLUE_PIN #define RELAY_PIN #define START_PIN /*khoang thoi gian ton tai cho #define GPS_INTERVAL #define CONSOLE_INTERVAL #define MPU_INTERVAL #define SIM_INTERVAL #define BG_INTERVAL Serial //UART giao tiep voi may tinh Serial1 //UART giao tiep module GPS Serial2 //UART giao tiep module SIM808 Serial3 //UART giao tiep Bluetooth 13 69 67 53 cac thread*/ #define MESSAGE_LENGTH String globalPassWord("default"); //mat khau mac dinh cua he thong /*su dung cho SIM808*/ const int MAXSIZE = 50; char message[MESSAGE_LENGTH]; int messageIndex = 0; char phone[16]; char datetime[24]; char gprsBuffer[64]; char *s = NULL; bool systemIsUnlocked = false; bool isMotorRunning = false; SerialCommand command(&BLT_SERIAL); DFRobot_SIM808 sim808(&SIM_SERIAL); TinyGPS gps; float globalFlat, globalFlon; int kalAngleX, kalAngleY; double accX, accY, accZ; 46 double gyroX, gyroY, gyroZ; unsigned int max = 0; unsigned int avg; /*cac trang thai cua may trang thai*/ enum state { IDLE, VIBRATION, RUNNING, CHECKSTOP, STOPPED, FALLEN }; /*trang thai chung cua he thong*/ enum commonState { ON, OFF, LOCK, UNLOCK }; /*struct quan ly du lieu mo hinh may trang thai*/ struct applicationData { uint8_t state; unsigned int preAccAvg; unsigned int accAvg; unsigned int deltaAccAvg; unsigned long startCheckingTime; } appData; Thread Thread Thread Thread Thread gpsThread = Thread(); consoleThread = Thread(); mpuThread = Thread(); simThread = Thread(); bgThread = Thread(); StaticThreadController threadPool ( &gpsThread, &consoleThread, &mpuThread, &simThread, &bgThread); //StaticThreadController threadPool ( &mpuThread, &consoleThread, &bgThread); void gpsDataThread() { bool newData = false; static bool isDataReceived = false; static byte counter = 0; #ifdef TEST_GPS static const uint16_t timesGpsEqualZero = millis(); if(millis()-timesGpsEqualZero >= 3000 && (int)globalFlat == && (int)globalFlon == ) { globalFlat = (float) 10.8517776; globalFlon = (float) 106.7711014; return; } #endif 47 byte times = 5000 / GPS_INTERVAL; if (++counter > times) { isDataReceived = false; counter = 0; } unsigned int loop = isDataReceived ? 100 : 200; if ((int)globalFlat == && (int)globalFlon == 0) { loop = 1000; } static bool isEventPrintedOut = false; if (!isEventPrintedOut && (int)globalFlat > && (int)globalFlon > 0) { Serial.println("GPS DATA AVAILABLE."); isEventPrintedOut = true; } } for (unsigned long start = millis(); millis() - start < loop;) { while (GPS_SERIAL.available()) { char c = GPS_SERIAL.read(); if (gps.encode(c)) newData = true; } } if (newData) { float flat, flon; unsigned long age; gps.f_get_position(&globalFlat, &globalFlon, &age); isDataReceived = true; } bool isPhoneNumberValid(const char* phone) { if (strstr(phone, "8880") || strstr(phone, "1865") ) { return true; } else { return false; } } void simCallBackLoopHandle() { if (sim808.readable()) { sim808_read_buffer(gprsBuffer, 32, DEFAULT_TIMEOUT); s = strstr(gprsBuffer, "+CMTI: \"SM\""); if (s) 48 { Serial.println("Sim808 received a new message"); messageIndex = atoi(s + 12); char phone[16]; char datetime[24]; if (sim808.readSMS(messageIndex, message, MESSAGE_LENGTH, phone, datetime)) { Serial.print("MSG: "); Serial.println(message); Serial.print("From: "); Serial.println(phone); if (!isPhoneNumberValid(phone)) { Serial.println("Unauthorized user - DO NOT PROVIDE GPS LOCATION"); globalFlon != 0) } else if (strstr(message, "?") && globalFlat != && { String mapUrl("http://maps.google.com/?q="); String lat(globalFlat, 6); String lon(globalFlon, 6); mapUrl += lat; mapUrl += ","; mapUrl += lon; char mapUrlArray[50]; sprintf(mapUrlArray, "%s", mapUrl.c_str()); sim808.sendSMS(phone, mapUrlArray); Serial.println(mapUrlArray); } } sim808.deleteSMS(messageIndex); } sim808_clean_buffer(gprsBuffer, 32); } } void sendSmsWithMapUrl(const char* phone) { String mapUrl("http://maps.google.com/?q="); String lat(globalFlat, 6); String lon(globalFlon, 6); mapUrl += lat; mapUrl += ","; mapUrl += lon; char mapUrlArray[50]; sprintf(mapUrlArray, "%s", mapUrl.c_str()); sim808.sendSMS(phone, mapUrlArray); Serial.println(mapUrlArray); } void system(uint8_t value) { if(value == LOCK) { Serial.println("SYSTEM IS LOCKED"); systemIsUnlocked = false; isMotorRunning = false; 49 } else if(value == UNLOCK) { Serial.println("SYSTEM IS UN-LOCKED"); systemIsUnlocked = true; } } void buzzer(uint8_t onoff) { if(onoff == ON) { digitalWrite(BUZZER_PIN, LOW); } else if (onoff == OFF) { digitalWrite(BUZZER_PIN, HIGH); } } void relay(bool onoff) { if(onoff == ON) { digitalWrite(RELAY_PIN, HIGH); } else if(onoff == OFF) { digitalWrite(RELAY_PIN, LOW); } } void led(bool onoff) { if(onoff == ON) { digitalWrite(LED_PIN, HIGH); } else if(onoff == OFF) { digitalWrite(LED_PIN, LOW); } } void applicationManager() { if(systemIsUnlocked == false) { appData.state = IDLE; buzzer(OFF); relay(OFF); return; } switch (appData.state) { case IDLE: buzzer(OFF); Serial.println("state: IDLE"); if (appData.accAvg > 5) { 50 appData.state = VIBRATION; appData.startCheckingTime = millis(); } break; case VIBRATION: buzzer(OFF); Serial.println("state: VIBRATION - before RUNNING"); if (appData.accAvg < 2) { appData.state = IDLE; } else if(millis() - appData.startCheckingTime > 1500) { appData.state = RUNNING; } break; case RUNNING: buzzer(OFF); Serial.println("state: RUNNING"); if (appData.accAvg < 5) { appData.state = CHECKSTOP; appData.startCheckingTime = millis(); } break; 10) case CHECKSTOP: buzzer(OFF); Serial.println("state: CHECKSTOP"); if (millis() - appData.startCheckingTime > 3000 && appData.accAvg < { appData.state = STOPPED; appData.startCheckingTime = millis(); } else if (appData.accAvg > 10) { appData.state = RUNNING; } break; case STOPPED: buzzer(OFF); Serial.print("state: STOPPED (X, Y) = "); Serial.print(abs(kalAngleX)); Serial.print(", "); Serial.println(abs(kalAngleY)); if (millis() - appData.startCheckingTime > 3000) { if ((abs(kalAngleX) + abs(kalAngleY)) / > 20) { appData.state = FALLEN; } } else if ((abs(kalAngleX) + abs(kalAngleY)) / < 20) { appData.state = IDLE; } 51 break; case FALLEN: Serial.println("####### FALLEN! PRAPARING TO SEND MSG #######"); buzzer(ON); sendSmsWithMapUrl("01656571865"); appData.state = IDLE; system(LOCK); led(OFF); break; } } default: break; void isButtonStartPressed() { if(isMotorRunning == true) { return; } if(digitalRead(START_PIN) == && systemIsUnlocked) { Serial.println("Button pressed "); isMotorRunning = true; } } void backGroundCallBack() { if((systemIsUnlocked)&&(!digitalRead(STATE_BLUE_PIN))) { led(OFF); system(LOCK); Serial.println("DISCONNECTED, SYSTEM WILL BE LOCKED "); } isButtonStartPressed(); if(isMotorRunning == true && systemIsUnlocked) { relay(ON); } else { relay(OFF); } command.readSerial(); wdt_reset(); } void printOutGps() { / Serial.print(globalFlat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : globalFlat, 6); / Serial.print(","); / Serial.print(globalFlon == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : globalFlon, 6); / Serial.print(" X="); / Serial.print(kalAngleX); 52 / / / Serial.print(" Y="); Serial.print(kalAngleY); Serial.println(); / Serial.print(accX); / Serial.print(", "); / Serial.print(accY); / Serial.print(", "); / Serial.println(accZ); unsigned int x = abs(gyroX / 100); unsigned int y = abs(gyroY / 100); unsigned int z = abs(gyroZ / 100); appData.preAccAvg = appData.accAvg; appData.accAvg = (x + y) / 2; applicationManager(); / / / / / / / Serial.print(x); Serial.print(", "); Serial.print(y); Serial.print(", "); Serial.print(z); Serial.print(" AVG= "); Serial.println(appData.accAvg); } void setUpEepromPassword() { //Serial.println("Saving string to eeprom "); //EepromUtil::eeprom_write_string(100, globalPassWord.c_str()); char buf[MAXSIZE]; EepromUtil::eeprom_read_string(100, buf, MAXSIZE); globalPassWord = String(buf); } void onOffBuzzerBeep(uint8_t times) { for(int i = 0;i

Ngày đăng: 21/12/2021, 09:08