Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 63 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
63
Dung lượng
4,72 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÀ RỊA VŨNG TÀU BÁO CÁO ĐỀ TÀI KHOA HỌC VÀ CÔNG NGHỆ CẤP TRƯỜNG Đề tài: HỆ THỐNG GIÁM SÁT BÁO TRỘM CHO XE MÁY - GVHD : ThS Phan Thanh Hồng Anh - : Dương Chí Hùng SVTH Vũng Tàu, tháng 06 năm 2020 LỜI CẢM ƠN Trong thời gian thực đề tài, em giúp đỡ gia đình, q thầy bạn bè nên đề tài hoàn thành Em xin chân thành gửi lời cảm ơn đến: Thầy ThS Phan Thanh Hoàng Anh giảng viên trường Đại Học Bà rịa Vũng Tàu trực tiếp hướng dẫn tận tình giúp đỡ tạo điều kiện e hồn thành tốt đề tài Em xin chân thành cám ơn đến thầy cô khoa Điện Điện tử trường Đại Học Bà Rịa Vũng Tàu tận tình dạy dỗ, bảo, cung cấp cho người thực kiến thức nền, chuyên môn làm sở để hoàn thành đề tài Cảm ơn gia đình động viên ln ln bên cạnh lúc khó khăn Xin gửi lời cảm ơn đến người bạn sinh viên khoa Điện-Điện tử giúp đỡ em để hồn thành tốt đề tài Xin chân thành cảm ơn! Người thực đề tài TRƯỜNG ĐH BÀ RỊA VŨNG TÀU KHOA CNKT – NNCNC CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc o0o - NHIỆM VỤ NGHIÊN CỨU ĐỀ TÀI KHOA HỌC CẤP TRƯỜNG NĂM 2019 - 2020 Họ tên sinh viên thực chính: DƯƠNG CHÍ HÙNG - MSSV: 16031555- Ngày, tháng, năm sinh: 12/04/1998 - Nơi sinh: BÀ RIẠ-VŨNG TÀU - Chuyên ngành: Điện công nghiệp Dân dụng I TÊN ĐỀ TÀI: HỆ THỐNG GIÁM SÁT BÁO TRỘM CHO XE MÁY II NHIỆM VỤ VÀ NỘI DUNG: Các số liệu ban đầu: - Kit Arduino UNO ngơn ngữ lập trình - Tài liệu nghiên cứu Arduino UNO Tài liệu nghiên cứu cảm biến Cảm biến rung HDX-01 Cảm biến gia tốc MPU Nội dung thực hiện: - Kết nối cảm biến, mạch đo dòng lưu lượng S201 vào mạch Arduino - Lập trình cho kit Arduino - Thiết kế mơ hình hộp chứa mạch điều khiển - Xây dựng giao diện lập trình trang giám sát từ xa - Chạy thử nghiệm III NGÀY GIAO NHIỆM VỤ ĐỀ TÀI: 31/12/2018 IV NGÀY HOÀN THÀNH ĐỀ TÀI: 10/06/2019 V HỌ TÊN CÁN BỘ HƯỚNG DẪN: ThS Phan Thanh Hoàng Anh CÁN BỘ HƯỚNG DẪN (Ký ghi rõ họ tên) Bà Rịa - Vũng Tàu, ngày 10 tháng 06 năm 2020 SINH VIÊN THỰC HIỆN CHÍNH (Ký ghi rõ họ tên) ThS Phan Thanh Hồng Anh Dương Chí Hùng PHÒNG ĐÀO TẠO - KHCN (Ký ghi rõ họ tên) TRƯỞNG KHOA (Ký ghi rõ họ tên) LỜI NĨI ĐẦU Cuộc “Cách mạng Cơng nghiệp 4.0” dần diễn nhiều nước phát triển phát triển tồn giới Cơng nghệ điều khiển thông minh phát triển theo, chúng ứng dụng nhiều lĩnh vực đời sống Đặc biệt, hệ thống chống trộm, cảnh báo phát triển mạnh mẽ ngày trở nên phổ biến Tiểu lận thiết kế, thi cơng mơ hình hệ thống cảnh báo chống trộm tai nạn cho người dùng gắn xe máy Các cảnh báo giá trị vị trí GPS cập nhật gửi tới điện thoại người dùng Người dùng điều khiển mạch điện thoại MỤC LỤC LỜI CẢM ƠN ĐÁNH GIÁ CỦA GIÁO VIÊN HƯỚNG DẪN LỜI NÓI ĐẦU MỤC LỤC 1.1 ĐẶT VẤN ĐỀ 1.2 MỤC ĐÍCH NGHIÊN CỨU 1.3 NỘI DUNG NGHIÊN CỨU 1.4 GIỚI HẠN ĐỀ TÀI 2.1 TỔNG QUAN VỀ GPS 2.2 ard Arduino 10 2.2.1 Module sim 808a 11 2.2.2 Cảm biến rung HDX-01 13 2.2.3 Cảm biến gia tốc MPU-6050 13 2.3 CÁC CHUẨN GIAO TIẾP 14 2.3.1 Chuẩn giao tiếp uart 14 2.3.2 Chuẩn giao tiếp I2C 15 3.1 GIỚI THIỆU 16 3.2 TÍNH TỐN VÀ THIẾT KẾ HỆ THỐNG 16 3.2.1 Thiết kế sơ đồ khối hệ thống 16 3.2.2 Tính tốn thiết kế mạch 17 3.2.3 Sơ đồ nguyên lý toàn mạch 23 4.1 GIỚI THIỆU 25 4.2 THI CÔNG HỆ THỐNG 25 4.2.1 Thi công bo mạch hệ thống 25 4.2.2 Lắp ráp kiểm tra bo mạch hệ thống 26 4.3 LẬP TRÌNH HỆ THỐNG 27 4.3.1 Lưu đồ 27 4.3.2 Phần mềm lập trình cho vi điều khiển Error! Bookmark not defined 4.4 VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC 30 5.1 KẾT LUẬN – HƯỚNG PHÁT TRIỂN ĐỀ TÀI Error! Bookmark not defined TÀI LIỆU THAM KHẢO CHƯƠNG TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ Với phát triển mạnh mẽ khoa học công nghệ ngày với công cơng nghiệp hóa - đại hóa đất nước thúc đẩy công nghiệp sản xuất nước nhà phát triển Các phương tiện giao thông xe máy,ô tô chế tạo ngày tinh tế mang tính đại mà cịn thơng minh tăng tính tự động hóa nhằm nâng cao chất lượng sống Theo quy hoạch phát triển ngành công nghiệp xe máy Việt Nam giai đoạn 2006 - 2015 có xét đến 2020, Bộ Cơng Thương ước tính lượng xe máy lưu thơng tồn thị trường đến năm 2015 đạt 31 triệu xe tăng lên 33 triệu xe vào 2020 Trong tăng bình qn hàng năm từ 2010-2020 đạt từ 1,8 đến 2,2 triệu xe năm Số lượng xe máy lớn kèm với phận ý thức người dân thấp dẫn đến mối nguy tai nạn giao thông ngày tăng cao Với đất nước mà xe máy phương tiện di chuyển cịn tài sản quý giá người, gia đình ngồi việc đảm bảo cho xe khỏi dịm ngó tên trộm hệ thống chống trộm, cần địi hỏi xe có tính thơng minh, hàm lượng tự động hóa cao, đảm bảo an toàn cho người điều khiển phương tiện tránh khỏi rủi ro đáng tiếc va quẹt hay tai nạn kịp thời cứu chữa xảy tai nạn hệ thống thông báo tới người thân, bệnh viện nhằm đưa số lượng vụ tai nạn, số lượng người chết giảm xuống mức tối đa Ngày nay, công nghệ kỹ thuật phát triển mạnh mẽ, phương pháp lập trình đa dạng lập trình nhúng hướng xu Trong lập trình nhúng ngơn ngữ lập trình với Arduino phương pháp sử dụng nhiều Arduino bo mạch xử lý hay gọi vi điều khiển dùng để lập trình tương tác với thiết bị phần cứng cảm biến, động cơ, hình, bluetooth, GPS Tuy bo mạch nhỏ gọn, chi phí thấp bo thi cơng sẵn, nhiên Arduino ứng dụng vào nhiều lĩnh vực khác nhau, ta đo đạc nhiệt độ để điều khiển tưới tiêu nhà vườn, dùng để điều khiển xe cân phổ biến nay, hay ứng dụng vào việc điều khiển cánh tay Robot Ngoài lợi ích to lớn } else { digitalWrite(led_xe, LOW); xe_ok = 0; } ////////////////// byte button1 = digitalRead(bat_coi); if (button1 == LOW) { digitalWrite(coi, HIGH); } else { digitalWrite(coi, LOW); } } void dkien1() // ching trinh kiem tra cuoc goi den gui dia xhi xe ve { if (dk1 == 0) { while (modemSerial.available() > 0) { ch = modemSerial.read(); Serial.print(ch); if (ch == '9') { digitalWrite (led_xe, LOW); digitalWrite (coi, HIGH); delay(5000); digitalWrite (coi, LOW); delay(5000); gui_tin(); dk1 = 1; nga = 1; } delay(3); } } } void display_gps() { char float_str[10]; if (g_gps_data.State_gps == true) { dtostrf(g_gps_data.Lat, 10, 6, float_str); if (gps_ok == 0) { Serial.println(float_str); dtostrf(g_gps_data.Lng, 10, 6, float_str); Serial.println( float_str); digitalWrite(led_gps, HIGH); delay(1000); digitalWrite(led_gps, LOW); delay(700); digitalWrite(led_gps, HIGH); delay(1000); digitalWrite(led_gps, LOW); delay(700); digitalWrite(led_gps, HIGH); delay(1000); digitalWrite(led_gps, LOW); delay(700); gps_ok = 1; } } } void gui_tin() // chuong trinh gui tin nhan di { char data_to_send_sms[160]; char tmp_str1[20], tmp_str2[20]; dtostrf(g_gps_data.Lat, 10, 6, tmp_str1); dtostrf(g_gps_data.Lng, 10, 6, tmp_str2); sprintf(data_to_send_sms, " Xe Ban Hien Tai O : https://maps.google.com/maps?q=%s,%s", tmp_str1, tmp_str2); SendSMS(phone_number_to_send, data_to_send_sms); Serial.println("send_ok_ok"); } void goi () // chuong trinh thuc hien cuoc goi { modemSerial.write("AT+CLIP=1\r"); modemSerial.write("ATD0968987377;\r"); Serial.write("ATD0968987377x`;\r"); delay(15000); modemSerial.write("ATH\r"); Serial.write("ATH\r"); } void update_gps() { static unsigned long previousMillis; unsigned long currentMillis; / Update GPS data currentMillis = millis(); if (currentMillis - previousMillis >= 2000) { modemSerial.write("AT+CGNSINF\r"); if (readSerialFrame(respond) > 0) { if (strncmp(respond, "\r\n+CGNSINF: ", 12) == 0) { NMEA_GPRMC_Decoder(&g_gps_data, respond + 12); } } previousMillis = currentMillis; } / End Update GPS data } /* Read input serial */ int readSerial(char result[], int time_out) { int i = 0; unsigned long currentMillis, previousMillis; previousMillis = millis(); currentMillis = previousMillis; while (1) { if (currentMillis - previousMillis >= time_out) { return 0; } else { while (modemSerial.available() > 0) { char inChar = modemSerial.read(); if (inChar == '\r') { result[i] = '\0'; modemSerial.flush(); return i; } if (inChar != '*') { result[i] = inChar; i++; } } } currentMillis = millis(); } } bool SendSMS(char *phone_num, char *data) { unsigned long currentMillis, previousMillis; char sms_cmd[50]; char respond[30]; char command_en[2] = {0x1A, 0}; sprintf(sms_cmd, "AT+CMGS=\"%s\"\r", phone_num); modemSerial.write(sms_cmd); if (readSerialFrame(respond) > 0) { Serial.println(respond); if (strcmp(respond, "\r\n>") != 0) { modemSerial.write(data); } } modemSerial.write(command_en); modemSerial.write(0X1A); Serial.println("send ok"); previousMillis = millis(); currentMillis = previousMillis; while (currentMillis - previousMillis < 12000) // timeout 5s { currentMillis = millis(); if (readSerialFrame(respond) > 0) { Serial.println(respond); if (strcmp(respond, "\r\nOK\r\n") != 0) { digitalWrite (led_xinhan, HIGH); delay (3000); digitalWrite (led_xinhan, LOW); return false; } } } delay (2000); return false; } void ModemInit(void) // chuong trinh thiet lap giao tiep giua arduino voi sim808 { static bool is_modem_init_ok = false; int status_pin_level = 0; // to detect modem has been turn-on / Turnon modem: try_on: status_pin_level = analogRead(STATUS_PIN); if (status_pin_level < 500) // Check module on ? if not turn-off { is_modem_init_ok = false; Serial.write("No Sim808"); digitalWrite(PWK_PIN, HIGH); delay(2000); digitalWrite(PWK_PIN, LOW); delay(2000); goto try_on; // We try turn-on until module SIM ready too use } if (is_modem_init_ok == false) { Serial.write("Initting "); modemSerial.write("ATE0\r"); if (readSerialFrame(respond) > 0) { if (strcmp(respond, "\r\nOK\r\n") != 0) { goto try_on; } } else { goto try_on; } modemSerial.write("AT+CMGF=1\r"); if (readSerialFrame(respond) > 0) { if (strcmp(respond, "\r\nOK\r\n") != 0) { goto try_on; } } else { goto try_on; } modemSerial.write("AT+CGNSPWR=1\r"); if (readSerialFrame(respond) > 0) { if (strcmp(respond, "\r\nOK\r\n") != 0) { goto try_on; } } else { goto try_on; } modemSerial.write("AT+CGNSSEQ=\"RMC\"\r"); if (readSerialFrame(respond) > 0) { if (strcmp(respond, "\r\nOK\r\n") != 0) { goto try_on; } } else { goto try_on; } modemSerial.write("AT+CMGF=1\r"); if (readSerialFrame(respond) > 0) { if (strcmp(respond, "\r\nOK\r\n") != 0) { goto try_on; } } else { goto try_on; } modemSerial.write("AT+CNMI=2,2,0,0,0\r"); if (readSerialFrame(respond) > 0) { if (strcmp(respond, "\r\nOK\r\n") != 0) { goto try_on; } } else { goto try_on; } modemSerial.write("AT+CMGDA=DEL ALL\r"); if (readSerialFrame(respond) > 0) { if (strcmp(respond, "\r\nOK\r\n") != 0) { goto try_on; } } else { goto try_on; } is_modem_init_ok = true; Serial.write("Initted"); delay(2000); kt_ok = 1; } } int readSerialFrame(char result[]) { int i = 0; unsigned long currentMillis, previousMillis; previousMillis = millis(); currentMillis = previousMillis; while (1) { if (currentMillis - previousMillis >= 100) { return i; } else { if (modemSerial.available() > 0) { previousMillis = currentMillis; char inChar = modemSerial.read(); result[i] = inChar; i++; result[i] = 0; } } currentMillis = millis(); } } static int GetMessageFeilds(unsigned char **message_feildls, unsigned char *msg, unsigned char separate_char, int max_feild_get) { int count_feild = 0; *message_feildls = msg; message_feildls++; count_feild++; while (*msg != '\0') { if (*msg == separate_char) { *msg = '\0'; *message_feildls = msg + 1; message_feildls++; count_feild++; if (count_feild >= max_feild_get) return count_feild; } msg++; } return count_feild; } static void NMEA_GPRMC_Decoder(GPS_T *gps_data, char *data_bytes) { //Get data char *message_field[13]; if (GetMessageFeilds(message_field, data_bytes, ',', 13) == 13) { Serial.write(message_field[GPS_FSTS]); Serial.write(message_field[GPS_SPEED]); Serial.write(message_field[GPS_ORG]); Serial.write(message_field[GPS_LON]); Serial.write(message_field[GPS_TIME]); if (strcmp(message_field[GPS_FSTS], "1") == 0) { gps_data->State_gps = true; gps_data->State_gps = true; gps_data->SpeedGPS = atof(message_field[GPS_SPEED]); gps_data->OrGPS = atof(message_field[GPS_ORG]); gps_data->Lat = atof(message_field[GPS_LAT]); gps_data>Lng = atof(message_field[GPS_LON]); } else { gps_data->State_gps = false; gps_data->Lat = 0; gps_data->Lng = 0; gps_data->SpeedGPS = 0; } gps_data->time_gps.time.sec = message_field[GPS_TIME][13] - '0' + 10 * (message_field[GPS_TIME][12] - '0'); gps_data->time_gps.time.minute = message_field[GPS_TIME][11] - '0' + 10 * (message_field[GPS_TIME][10] - '0'); gps_data->time_gps.time.hour = message_field[GPS_TIME][9] - '0' + 10 * (message_field[GPS_TIME][8] - '0'); gps_data->time_gps.time.date = message_field[GPS_TIME][7] - '0' + 10 * (message_field[GPS_TIME][6] - '0'); gps_data->time_gps.time.month = message_field[GPS_TIME][5] - '0' + 10 * (message_field[GPS_TIME][4] - '0'); gps_data->time_gps.time.year = message_field[GPS_TIME][3] - '0' + 10 * (message_field[GPS_TIME][2] - '0') + 100 * (message_field[GPS_TIME][1] - '0') + 1000 * (message_field[GPS_TIME][0] - '0'); } } ... lý trung tâm cho việc “HỆ THỐNG GIÁM SÁT BÁO TRỘM CHO XE MÁY” 1.2 MỤC ĐÍCH NGHIÊN CỨU Thiết kế hệ thống thông minh cảnh báo cho xe máy để hệ thống cảnh báo chạy ổn định, báo vị trí người dùng... TRIỂN Từ đề tài ? ?hệ thống giám sát báo trộm cho xe máy? ?? ta phát triển theo hướng nhằm đảm bảo ổn định, độ bền tính thực tế cho sản phẩm sau: - Hệ thống xe máy chống trộm cảnh báo tai nạn mở rộng... Dân dụng I TÊN ĐỀ TÀI: HỆ THỐNG GIÁM SÁT BÁO TRỘM CHO XE MÁY II NHIỆM VỤ VÀ NỘI DUNG: Các số liệu ban đầu: - Kit Arduino UNO ngôn ngữ lập trình - Tài liệu nghiên cứu Arduino UNO Tài liệu nghiên