(Đồ án HCMUTE) gậy thông minh hỗ trợ cho người khiếm thị

118 0 0
(Đồ án HCMUTE) gậy thông minh hỗ trợ cho người khiếm thị

Đ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 ĐIỆN TỬ - VIỄN THÔNG GẬY THÔNG MINH HỖ TRỢ NGƯỜI KHIẾM THỊ GVHD: NGUYỄN NGÔ LÂM SVTH: NGUYỄN QUANG DUY NGUYỄN ẢNH GIA PHÚ SKL009254 Tp Hồ Chí Minh, tháng 08/2022 i 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 KHOA ĐÀO TẠO CHẤT LƯỢNG CAO - ĐỒ ÁN TỐT NGHIỆP GẬY THÔNG MINH HỖ TRỢ NGƯỜI KHIẾM THỊ SVTH NGUYỄN QUANG DUY NGUYỄN ẢNH GIA PHÚ Khóa: 2018 Ngành: CNKT Điện tử - Viễn thơng GVHD: ThS NGUYỄN NGƠ LÂM MSSV 18161053 18161129 Tp Hồ Chí Minh, tháng 08 năm 2022 i 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 tháng năm 2022 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Nguyễn Quang Duy MSSV:18161053 Nguyễn Ảnh Gia Phú 18161129 Ngành: Công Nghệ Kỹ Thuật Điện tử - Viễn thông Lớp: 18161CLDT2B Giảng viên hướng dẫn: ThS Nguyễn Ngô Lâm Ngày nhận đề tài: 01/03/2022 Ngày nộp đề tài: 01/08/2022 Tên đề tài: GẬY THÔNG MINH HỖ TRỢ NGƯỜI KHIẾM THỊ Các số liệu, tài liệu ban đầu: Kiến thức môn Mạch điện, Điện tử bản, Vi xử lý, Arduino Nội dung thực đề tài: - Thiết kế hệ thống - Lập trình cho hệ thống - Chỉnh sửa kiểm tra mạch - Viết báo cáo Sản phẩm: mô hình GẬY THƠNG MINH HỖ TRỢ NGƯỜI KHIẾM THỊ TRƯỞNG NGÀNH GIẢNG VIÊN HƯỚNG DẪN i i CỘNG HÒA 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: Nguyễn Quang Duy MSSV: 18161053 Nguyễn Ảnh Gia Phú 18161129 Ngành: Công Nghệ Kỹ Thuật Điện tử - Viễn thơng Tên đề tài: GẬY THƠNG MINH HỖ TRỢ NGƯỜI KHIẾM THỊ Họ và tên Giáo viên hướng dẫn: ThS Nguyễn Ngô Lâm 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 2022 Giáo viên hướng dẫn ii i CỘNG HÒA 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: Nguyễn Quang Duy MSSV: 18161053 Nguyễn Ảnh Gia Phú 18161129 Ngành: Công Nghệ Kỹ Thuật Điện tử - Viễn thông Tên đề tài: GẬY THÔNG MINH HỖ TRỢ NGƯỜI KHIẾM THỊ 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 2022 Giáo viên phản biện iii i LỜI CẢM ƠN Cảm ơn cha mẹ có cơng ơn sinh và nuôi dưỡng, tạo điều kiện để chúng đạt thành ngày hơm Để hoàn thành báo cáo đồ án tốt nghiệp chuyên ngành Công nghệ Kỹ thuật Điện tử - Viễn thông nhóm xin gửi đến q Thầy/Cơ khoa Đào tạo Chất lượng cao, trường Đại học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh lời cảm ơn chân thành Đặc biệt, thầy Nguyễn Ngơ Lâm tận tình hướng dẫn, giúp đỡ tạo điều kiện thuận lợi cho nhóm suốt q trình thực đồ án Nhóm xin gửi đến thầy lời cảm ơn chân thành và sâu sắc Đồng thời, nhóm xin cảm ơn đến bạn bè hỗ trợ, đóng góp ý kiến chia sẻ kinh nghiệm để nhóm hồn thành tốt đề tài Mặc dù cố gắng hết sức, lượng kiến thức eo hẹp nên khơng tránh khỏi thiếu sót Do vậy, nhóm mong nhận sự góp ý q báu Thầy/Cơ để cải thiện tốt Sau cùng, nhóm kính chúc q thầy thật dồi sức khỏe, tràn đầy nhiệt huyết với thành công sự nghiệp cao quý Nhóm xin chân thành cảm ơn! iv i TÓM TẮT Đồ án tốt nghiệp “Gậy thông minh hỗ trợ người khiếm thị” xuất phát từ mong muốn ứng dụng kiến thức học vào đời sống thực tế, giúp đỡ cộng đồng Với mục tiêu mang ứng dụng công nghệ, hệ thống nhúng vào đời sống và giúp đỡ cộng đồng, xã hội đáp ứng yêu cầu độ an toàn, hoạt động ổn định tiện lợi Sau thời gian tìm hiểu, nghiên cứu, thử nghiệm thực nghiệm, hệ thống “Gậy thông minh hỗ trợ người khiếm thị” hoàn thành và đáp ứng chức năng, yêu cầu mà nhóm đề Hệ thống mang lại chức năng: phát vật cản phía trước và đưa cảnh báo cho người dùng; hỗ trợ người khiếm thị băng qua đường; định vị tọa độ người khiếm thị và đưa cảnh báo cho người thân; đưa cảnh báo người khiếm thị di chuyển vùng tối mà họ không nhận thức được; sử dụng nguồn pin sạc để hoạt động; cảnh báo rị rỉ khí gas Chi tiết hoạt động hệ thống mô tả đường link youtube sau: https://youtu.be/sbiLcUE6sjY v i 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 v MỤC LỤC vi DANH MỤC CÁC TỪ VIẾT TẮT ix DANH MỤC CÁC BẢNG BIỂU x DANH MỤC CÁC HÌNH ẢNH xi CHƯƠNG 1: TỔNG QUAN 1.1 GIỚI THIỆU 1.2 TÍNH CẤP THIẾT CỦA ĐỀ TÀI 1.3 MỤC TIÊU NGHIÊN CỨU 1.4 NHIỆM VỤ NGHIÊN CỨU 1.5 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 1.6 PHƯƠNG PHÁP NGHIÊN CỨU 1.7 BỐ CỤC ĐỒ ÁN CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 ARDUINO MEGA 2560 PRO 2.2 KHỐI ĐỊNH VỊ 2.2.1 Module GPRS GSM SIM800L 2.2.2 Mạch Định Vị GPS NEO-6M V2 10 2.3 CÁC LOẠI CẢM BIẾN 11 2.3.1 Cảm biến ánh sáng LM393 11 2.3.2 Cảm biến khoảng cách GP2Y0A02YK0F 15 2.4 KHỐI ÂM THANH 18 2.4.1 Mạch đọc thẻ nhớ DFPLAYER MINI 18 2.4.2 Mạch khuếch đại âm PAM8403 21 2.5 KHỐI HIỂN THỊ 23 2.5.1 OLED 23 2.5.2 LED RGB WS2812B 25 2.6 KHỐI NGUỒN 27 2.6.1 Mạch sạc pin Lithium TP5100 27 vi i 2.6.2 Mạch tăng áp SX1308 30 2.6.3 Mạch giảm áp MP2307DN 31 2.6.4 Module relay 5V với opto cách ly kích H/L 32 CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG 35 3.1 YÊU CẦU VÀ SƠ ĐỒ KHỐI HỆ THỐNG 35 3.1.1 Yêu cầu hệ thống 35 3.1.2 Sơ đồ khối hệ thống 36 3.1.2.1 Sơ đồ khối 36 3.1.2.2 Chức khối 36 3.1.3 Hoạt động hệ thống 37 3.2 THIẾT KẾ HỆ THỐNG PHẦN CỨNG 38 3.2.1 Khối hiển thị 38 3.2.1.1 OLED 38 3.2.1.2 Động rung 40 3.2.1.3 Module LED RGB WS2812B 41 3.2.2 Khối âm 43 3.2.3 Khối định vị 45 3.2.4 Khối cảm biến 46 3.2.4.1 Cảm biến ánh sáng LM393 46 3.2.4.2 Cảm biến khoảng cách GP2Y0A02YK0F 47 3.2.4.3 Cảm biến khí gas MQ-2 48 3.2.5 Khối nút nhấn 50 3.2.6 Khối xử lý 53 3.2.7 Khối nguồn 56 3.2.7.1 Pin sạc Panasonic 18650 57 3.2.7.2 Mạch sạc pin Lithium TP5100 58 3.2.7.3 Mạch xác định tín hiệu nguồn 59 3.2.7.4 Mạch đo pin 60 3.2.7.5 Mạch tăng áp 61 3.2.7.6 Mạch giảm áp 62 3.2.7.7 Module relay 5V với opto cách ly kích H/L 63 3.2.7.8 Mạch cách ly an toàn điện áp nguồn điện áp sạc 64 3.3 CHỨC NĂNG VÀ HOẠT ĐỘNG CỦA PHẦN MỀM 65 3.4 LƯU ĐỒ 69 vii i CHƯƠNG 4: KẾT QUẢ THỰC HIỆN 72 4.1 KẾT QUẢ TỪNG KHỐI 72 4.1.1 Thiết kế PCB 72 4.1.2 Thiết kế 3D 77 4.1.3 Khối hiển thị 80 4.1.4 Khối định vị 84 4.2 KẾT QUẢ HOẠT ĐỘNG CỦA TOÀN HỆ THỐNG 86 4.2.1 Mơ hình hệ thống 86 4.2.2 Hoạt động hệ thống 89 CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 90 5.1 KẾT LUẬN 90 5.2 HẠN CHẾ VÀ HƯỚNG PHÁT TRIỂN 91 5.2.1 Hạn chế 91 5.2.2 Hướng phát triển 91 TÀI LIỆU THAM KHẢO 92 PHỤ LỤC 93 viii i CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 5.1 KẾT LUẬN Sau thời gian nghiên cứu phát triển để tài, nhóm hoàn thành nhiệm vụ thiết kế thi công hệ thống “Gậy thông minh hỗ trợ người khiếm thị” với mục tiêu đề Tuy cịn nhiều sai sót hạn chế chưa khắc phục kịp thời có chức hỗ trợ cho người khiếm thị sử dụng hệ thống, giúp họ an tồn thuận tiện tham gia giao thơng đường tránh rủi ro, tai nạn không mong muốn Các chức hệ thống mà nhóm nghiên cứu thực thành công trực tiệp mơ hình “Gậy thơng minh hỗ trợ người khiếm thị” bao gồm:  Đo khoảng cách từ gậy vật cản và điều khiển cường độ động rung mạnh nhẹ dựa theo khoảng cách gần xa  Sử dụng nguồn pin rời sạc được, hiển thị phần trăm pin, cảnh báo tự động ngắt pin yếu  Loa phát âm từ thẻ nhớ Micro SD  Có chế độ cảnh báo nhường đường cho người khiếm thị loa  Tự động bật sáng đèn di chuyển vào vùng tối  Cảnh báo rị rỉ khí gas đề phòng cháy nổ cho người dùng  Định vị tọa độ người sử dụng cảnh báo người thân họ gặp tình nguy hiểm  Khi thực nghiệm tính định vị GPS hệ thống, cho kết tương đối xác so với định vị điện thoại di động, chênh lệch không lớn Khi thực nghiệm, độ ổn định hiệu mơ hình tương đối cao, khơng xảy lỗi không mong muốn tự reset Tuy nhiên, định vị GPS hệ thống hoạt động mơi trường kín, cụ thể phịng tầng nhà nhiều tầng nhiều thời gian để khởi động và tính tốn định vị người sử dụng hệ thống sóng yếu xun qua nhiều lớp tường, bê tơng Cịn lại, chức 90 i hoạt động sạc hệ thống chạy ổn định hệ thống không bị tác động khác gây thiệt hại 5.2 HẠN CHẾ VÀ HƯỚNG PHÁT TRIỂN 5.2.1 Hạn chế Cần thời gian để Module GPS GY-NEO 6M kết nối với vệ tinh phải kết nối từ vệ tinh trở lên tọa độ vị trí Trong thực nghiệm, module GPS khó bắt sóng vệ tinh thời tiết xấu (mưa, nhiều mây) Cảm biến khoảng cách nhận biết vật cản từ hướng Khi module SIM800L gọi gửi tin nhắn, loa phát âm bị nhiễu Mạch đo pin chưa thật sự xác sử dụng điện trở, loại linh kiện điện tử khơng có trở kháng xác so với lý thuyết Khi cần thay đổi SIM hay thẻ nhớ hệ thống, bắt buộc phải tháo board mạch khỏi hệ thống 5.2.2 Hướng phát triển Hướng phát triển hệ thống dựa chức trục trặc bất tiện, cụ thể sau: Nghiên cứu cải tiến hệ thống định vị GPS ổn định không nhiều thời gian để khởi động Nghiên cứu sử dụng lượng mặt trời để sạc pin Cải tiến sử dụng phương pháp đo dung lượng pin xác Cải tiến thêm nhiều cảm biến khoảng cách để nhận biết vật cản từ nhiều hướng Cải tiến phương pháp sạc pin nhanh Cải tiến thiết kế board mạch nhỏ gọn Cải tiến thiết kế 3D tiện lợi nhỏ gọn 91 i TÀI LIỆU THAM KHẢO [1] NGUYỄN ĐÌNH PHÚ – Giáo trình Vi điều khiển PIC16F887 – TPHCM 08/2016 [2] TS HUỲNH VĂN CHƯƠNG - Th.S PHẠM GIA TÙNG - BÀI GIẢNG HỆ THỐNG ĐỊNH VỊ TỒN CẦU - TRƯỜNG ĐẠI HỌC NƠNG LÂM HUẾ [3] NGUYỄN ĐÌNH PHÚ – NGUYỄN TRƯỜNG DUY – GIÁO TRÌNH KỸ THUẬT SỐ - TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TPHCM [4] NGUYỄN VIỆT HÙNG – NGUYỄN NGÔ LÂM – GIÁO TRÌNH KỸ THUẬT TRUYỀN SỐ LIỆU - TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TPHCM [5] Kênh youtube học vẽ mạch in phần mềm Altium: https://youtube.com/playlist?list=PLrnMw66MzybHfDWKNKCVMn9zJ6ksly2HK [6] Kênh youtube Green Technology: https://www.youtube.com/c/GreenTechnology_GreenGroup [7] Kênh youtube Veron Imeth: https://www.youtube.com/c/VeronImeth [8] Kênh youtube PADDLED https://www.youtube.com/channel/UCLhD5b7jmRIYHClzL9JyKPA [9] Video tham khảo: https://www.youtube.com/watch?v=s54nKUwjy3o https://www.youtube.com/watch?v=cnjw2_AwSdA https://www.youtube.com/watch?v=P3Fs7DfMBCE https://www.youtube.com/watch?v=8OqK9yA3aGQ https://www.youtube.com/watch?v=QeNxbqHO_MM https://www.youtube.com/watch?v=fk0GuvgAOqA https://www.youtube.com/watch?v=uSjRRC9Ew9I [10] Tham khảo lựa chọn linh kiện: https://www.thegioiic.com/ https://icdayroi.com/ 92 i PHỤ LỤC Sơ đồ nguyên lí hệ thống: 93 i Chương trình hệ thống: #include #include #include const String PHONE = "0938416881"; TinyGPSPlus gps; #include #include SoftwareSerial DF_Serial(11,13); // RX:11; TX:13 DFRobotDFPlayerMini myDFPlayer; #include #define sensorIR A0 #define model 20150 SharpIR IR_prox(sensorIR,model); #include #include Adafruit_SSD1306 oled(128,64, &Wire, -1); #include SimpleKalmanFilter noise_filter(2, 2, 0.01); SimpleKalmanFilter Light_filter(2, 2, 0.01); SimpleKalmanFilter MQ2_filter(2, 2, 0.01); #include #define LED_PIN 15 #define NUM_LEDS CRGB leds[NUM_LEDS]; #define #define #define #define #define #define #define #define #define #define MQ2_sensor A2 Light_sensor A4 battery A6 vibration_motor alert_button crosswalk_button buzzPin trigger 25 power_mode_pin 42 charge_mode_pin 23 #include "Button.h" #include "Display.h" #include "GPS_GSM.h" void setup() { Serial.begin(9600); Serial1.begin(9600); Serial2.begin(9600); pinMode(power_mode_pin,INPUT); pinMode(charge_mode_pin,INPUT); power_mode = digitalRead(power_mode_pin); charge_mode = digitalRead(charge_mode_pin); 94 i if(power_mode==0) //bật nguồn { pinMode(crosswalk_button,INPUT); pinMode(alert_button,INPUT); pinMode(MQ2_sensor,INPUT); pinMode(Light_sensor,INPUT); pinMode(battery,INPUT); pinMode(vibration_motor,OUTPUT); pinMode(buzzPin,OUTPUT); pinMode(trigger,OUTPUT); digitalWrite(trigger,HIGH); FastLED.addLeds(leds, NUM_LEDS); FastLED.setMaxPowerInVoltsAndMilliamps(5, 70); FastLED.clear(); FastLED.show(); DF_Serial.begin(9600); myDFPlayer.begin(DF_Serial); myDFPlayer.volume(30); oled.begin(SSD1306_SWITCHCAPVCC, 0x3C); oled.clearDisplay(); oled.setTextColor(SSD1306_WHITE); oled.setTextSize(1); oled.display(); display_setup_system(); } else //tắt nguồn { pinMode(buzzPin,OUTPUT); pinMode(trigger,OUTPUT); digitalWrite(trigger,LOW); oled.begin(SSD1306_SWITCHCAPVCC, 0x3C); oled.clearDisplay(); oled.setTextColor(SSD1306_WHITE); oled.setTextSize(1); oled.display(); } delay(5000); Serial2.write("ATE1\r");delay(200); if(Serial2.find("OK")==0) return; Serial2.write("AT\r");delay(200); if(Serial2.find("OK")==0) return; Serial2.write("AT+CMGF=1\r");delay(200); if(Serial2.find("OK")==0) return; Serial2.write("AT+CNMI=1,2,0,0,0\r");delay(200); if(Serial2.find("OK")==0) return; Serial2.write("AT+CMGd=1\r");delay(200); if(Serial2.find("OK")==0) return; Serial2.write("AT+COPS?\r");delay(200); if(Serial2.find("Mobifone")==1){data = "Mobifone";} else{data = " ";} } void loop() { power_mode = digitalRead(power_mode_pin); 95 i charge_mode = digitalRead(charge_mode_pin); ///////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////// /////////////////////////// if(power_mode==0) //bật nguồn { if((i==0)&&(MQ2_value < 600)&&(Light_value < 800)) { battery_value = analogRead(battery)*1.5; bat_filter_value = noise_filter.updateEstimate(battery_value); if(charge_mode==0) { batery_percent = map(bat_filter_value,138,234,0,100); } else { batery_percent = map(bat_filter_value,138,225,0,100); } } if(batery_percent < 0) { oled.clearDisplay(); a++;if(a==180){a=0;} if(a>=90) { oled.drawLine(0,23,127,23,WHITE); oled.setCursor(11,27);oled.print("Battery is too Low"); oled.drawLine(0,38,127,38,WHITE); oled.setCursor(7,52);oled.print("0% Please charge "); batery_pixels(52,5); oled.drawLine(63,5,67,5,BLACK); oled.drawLine(60,17,64,17,BLACK); oled.drawLine(63,5,60,17,WHITE); oled.drawLine(67,5,64,17,WHITE); } oled.display(); digitalWrite(trigger,LOW); digitalWrite(buzzPin,LOW); analogWrite(vibration_motor,0); GPS_GSM(); } else { a=0; digitalWrite(trigger,HIGH); dis_cm = IR_prox.distance(); MQ2_value = MQ2_filter.updateEstimate(analogRead(MQ2_sensor)); Light_value = Light_filter.updateEstimate(analogRead(Light_sensor)); PWM = map(dis_cm,40,130,255,0); if((dis_cm >= 40)&&(dis_cm 50){e=0;} if(e= 600) { if(reset == 0){reset=1;myDFPlayer.play(2);} if(myDFPlayer.available()){if(myDFPlayer.readType()==DFPlayerPlayFinished ){myDFPlayer.play(2);}} }else{reset=0;} if(Light_value >= 700) { d++;if(d==20){d=0;} if(d= 10)&&(batery_percent < 100)){oled.print(" ");oled.print(batery_percent);oled.print("%");} else{oled.print(" ");oled.print(batery_percent);oled.print("%");} if(batery_percent =15) { oled.drawLine(0,48,127,48,WHITE); oled.setCursor(22,52);oled.print("Battery is Low"); oled.drawLine(0,63,127,63,WHITE); if(count= 10)&&(batery_percent < 100)){oled.print(" ");oled.print(batery_percent);oled.print("%");} else{oled.print(" ");oled.print(batery_percent);oled.print("%");} if(batery_percent >= 99) { c=0; b++;if(b==30){b=0;count++;} if(b>=15) { oled.drawLine(0,48,127,48,WHITE); oled.setCursor(20,52);oled.print("Battery is Full"); 100 i oled.drawLine(0,63,127,63,WHITE); if(count=50) { oled.drawLine(0,48,127,48,WHITE); oled.setCursor(32,52);oled.print("Charging "); oled.drawLine(0,63,127,63,WHITE); } } } ///////////////////////////////////////////////////////////////////////// ////////////////////////// void display_batery_percent_3() { if(batery_percent >= 99) { c=0; b++;if(b==30){b=0;count++;} if(b>=15) { oled.drawLine(0,48,127,48,WHITE); oled.setCursor(20,52);oled.print("Battery is Full"); oled.drawLine(0,63,127,63,WHITE); if(count=50) { oled.drawLine(0,48,127,48,WHITE); oled.setCursor(18,52);oled.print("Charging "); oled.drawLine(0,63,127,63,WHITE); oled.setCursor(83,52); if(batery_percent = 100){batery_percent = 100;oled.print(batery_percent);oled.print("%");} else if((batery_percent >= 10)&&(batery_percent < 100)){oled.print(" ");oled.print(batery_percent);oled.print("%");} else{oled.print(" ");oled.print(batery_percent);oled.print("%");} } } } 101 i ///////////////////////////////////////////////////////////////////////// ////////////////////////// Chương trình Button.h: int PWM=0, reset=0, done=0, i=0, t=0, a=0, b=0, c=0, d=0, e=0, f=0, count=0; int bat_filter_value, PWM_battery, battery_value, batery_percent; int dis_cm, MQ2_value, Light_value; int power_mode=0, charge_mode=1; float vol_in, vol_out; String response; float latitude, longitude, speeds; String data=" "; String wave=""; String tmp=""; ///////////////////////////////////////////////////////////////////////// ////////////////////////// void crosswalk_mode_button() //nút chế độ qua đường { if(digitalRead(crosswalk_button)==LOW) { delay(20); if(digitalRead(crosswalk_button)==LOW) { tone(buzzPin,4000,100); i=!i; if(i==0){myDFPlayer.pause();} if(i==1){myDFPlayer.play(1);} } while(digitalRead(crosswalk_button)==LOW); } } ///////////////////////////////////////////////////////////////////////// ////////////////////////// void alert_mode_button() { if(digitalRead(alert_button)==LOW) { delay(20); if(digitalRead(alert_button)==LOW) { tone(buzzPin,4000,100); Serial2.println("AT+CMGd=1"); delay(100); Serial2.print("ATD");Serial2.print(PHONE);Serial2.println(';'); delay(100); Serial2.println("AT+CMGF=1"); delay(100); Serial2.println("AT+CMGS=\"" + PHONE + "\"\r"); delay(100); Serial2.println("HELP ME !!!"); Serial2.print("http://maps.google.com/maps?q=loc:"); Serial2.print(latitude, 6); Serial2.print(","); Serial2.println(longitude, 6); Serial2.println((char)26); delay(100); 102 i latitude = 0; longitude = 0; } while(digitalRead(alert_button)==LOW); } } ///////////////////////////////////////////////////////////////////////// ////////////////////////// Chương trình GPS_GSM.h: void reply() { Serial2.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode delay(100); // Delay of 1000 milli seconds or second Serial2.println("AT+CMGS=\"" + PHONE + "\"\r"); delay(100); Serial2.println("I'm Here !"); Serial2.print("http://maps.google.com/maps?q=loc:"); Serial2.print(latitude, 6); Serial2.print(","); Serial2.println(longitude, 6); Serial2.println((char)26);// ASCII code of CTRL+Z delay(100); Serial2.println("AT+CMGd=1"); delay(100); } void GPS_GSM() { while(Serial1.available()) { if (gps.encode(Serial1.read())) { if (gps.location.isUpdated()) { latitude = gps.location.lat(); longitude = gps.location.lng(); f=1; } if (gps.speed.isValid()) { speeds = gps.speed.kmph(); } } } while(Serial2.available()) { response = Serial2.readStringUntil('\n'); if(response == "Location\r") { reply(); latitude = 0; longitude = 0; } } } 103 i S i K L 0

Ngày đăng: 08/05/2023, 17:34

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan