CHƯƠNG 4 : QUY TRÌNH THIẾT KẾ
4.5 THIẾT KẾ MƠ HÌNH
4.5.4 MƠ PHỎNG VỊ TRÍ LẮP ĐẶT HỆ THỐNG CẢNH BÁO QUÊN TRẺ
EM TRÊN Ô TÔ
4.5.4.1 MƠ PHỎNG VỊ TRÍ LẮP ĐẶT MẠCH ĐIỀU KHIỂN HỆ THỐNG CẢNH BÁO QUÊN TRẺ EM TRÊN Ô TÔ
48
Hệ thống được đặt ở vị trí hộp để đồ bên cạnh vị trí tài xế. Đây là nơi gần với các cảm biến được bố trí trên xe, nhằm giảm thiểu tối đa độ trễ tín hiệu truyền đi giữa mạch xử lý Arduino Uno với các thiết bị, và có thể đảm bảo an tồn cho hệ thống xử lý khi xe vận hành.
4.5.4.2 MƠ PHỎNG VỊ TRÍ LẮP ĐẶT CẢM BIẾN FSR402 TRÊN Ơ TƠ
Cảm biến lực FSR402 được đặt âm xuống dưới lớp đệm của ghế tài xế. Với mục đích xác định tài xế có cịn bên trong xe hay khơng.
Cảm biến lực có giá trị tối đa 10 kg tương đương 100 N, đủ để phân biệt được lực tác động từ người ngồi hay của các đồ vật đặt dưới ghế.
Hình 4. 35: Vị trí lắp đặt cảm biến FSR402 trên ô tô
1: Cảm biến lực FSR402; 2: Ghế tài xế 1
49
4.5.4.3 MƠ PHỎNG VỊ TRÍ LẮP ĐẶT CẢM BIẾN HỒNG NGOẠI PIR HC- SR501 TRÊN Ô TÔ
Cảm biến hồng ngoại được đặt dưới điều hịa để có góc chiếu xuống vị trí ghế hành khách phù hợp với thông số của cảm biến. Với vị trí này cảm biến có thể nhận biết được chính xác thân nhiệt mà tránh trường hợp bị cản trở.
Hình 4. 36: Vị trí lắp đặt cảm biến PIR trên ô tô
1: Cảm biến PIR HC-SR04; 2: Cửa điều hịa; 3: Vị trí ghê hành khách 1
2
50
4.5.4.4 MƠ PHỎNG VỊ TRÍ LẮP ĐẶT CẢM BIẾN SĨNG SIÊU ÂM HC-SR04 TRÊN Ơ TƠ TRÊN Ơ TƠ
Cảm biến sóng siêu âm được đặt trên trần xe, có góc chiếu vuống góc với đệm ngồi của của ghê hành khách, để xác định được đúng khoảng cách từ trần đến ghế ngồi tránh các vật cản.
Hình 4. 37: Vị trí lắp đặt cảm biến sóng siêu âm HC-SR04
1: Cảm biến sóng siêu âm HC-SR04; 2: Ghế hành khách 1
51
CHƯƠNG 5: MÔ PHỎNG,THI CÔNG, LẮP ĐẶT HỆ THỐNG CẢNH BÁO QUÊN TRẺ EM TRÊN Ô TÔ
5.1 HOẠT ĐỘNG CỦA HỆ THỐNG MÔ PHỎNG BẰNG PHẦN MỀM PROTEUS PROTEUS
5.1.1 CHƯƠNG TRÌNH ARDUINO CHO MƠ PHỎNG PROTEUS
Để hệ thống mơ phỏng trên phần mềm Proteus không chỉ cần thiết lập các linh kiện hoạt động đúng với mục đích, chức năng, thông số của các linh kiện module, cảm biến, mà còn cần phải nạp code Arduino được suất dưới dạng file .HEX.
Hình 5. 1: Lấy file .hex của chương trình Arduino
File hex được viết tắt của từ Hexadecimal gọi là hệ thập lục phân được tạo ra từ mã và trình biên dịch. File hex sau khi lấy từ Arduino IDE sẽ nạp vào Proteus 8. Quá trình này giống như cắm dây thực tế trên Arduino, code trên máy tính. Sau khi nhấn nút "Verify", Arduino IDE sẽ tạo ra file hex rồi nạp vào mạch.
52
Hình 5. 2: Nạp chương trình Arduino cho phần mềm Proteus
5.1.2 HOẠT ĐỘNG CỦA MƠ HÌNH MƠ PHỎNG
Sau khi code đã được nạp, ấn nút “Run the simulation” để hệ thống trên Proteus sẽ bắt đầu hoạt động:
Trường hợp 1:
Cảm biến lực chịu lực tác động tương ứng khi có tài xế cịn ở trong xe. Cảm biến PIR khơng được cấp nguồn hoạt động. Vì vậy các cơ cấu cảnh báo khơng hoạt động.
53
Hình 5. 3: Mơ hình mơ phỏng bằng Proteus hoạt động theo TH1
Trường hợp 2:
Cảm biến lực không chịu lực tác động. Vì vậy cảm biến PIR được cấp nguồn. Khi cảm biến PIR phát hiện được thân nhiệt cuộn dây của relay 1 được cấp nguồn.
Cảm biến sóng siêu âm khi phát hiện có sự thay đổi khoảng cách giữa trần ơ tô và ghế ngồi sẽ tiếp mass cho cịi ơ tơ.
Cả 2 tín hiệu của cảm biến PIR và HC-SR04 đồng thời sẽ cho Module sim gửi tin nhắn và gọi đến số điện thoại đã cài đặt, hệ thống motor hạ kính và hệ thống chiếu sáng hoạt động.
54
Hình 5. 4: Tồn bộ hệ thống mô phỏng bằng Proteus hoạt động
5.2 MƠ HÌNH VẬT LÝ
5.2.1 CODE ARDUINO CHO MƠ HÌNH VẬT LÝ
Tương tự như chương trình mơ phỏng bằng phần mềm Proteus, mơ hình vật lý khi hoạt động cũng cần phải nạp code arduino bằng Arduino IDE cho board Arduino Uno.
55
Sau khi kết nối board Arduino Uno với máy tính bằng cáp USB, ấn vào nút “Upload” trên phần mềm Arduino IDE. “Done uploading” là phần mềm đã được cập nhật cho hệ thống xong.
Hình 5. 6: Kết nối board Arduino Uno với máy tính
5.2.2 HỆ THỐNG HOẠT ĐỘNG
56
Trường hợp 1: Khi tiếp điểm khóa ở vị trí OFF, tài xế ngồi tại vị trí của mình,
giá trị analog của cảm biến FSR402 được Arduino nhận, nên hệ thống cảnh báo khơng hoạt động.
Hình 5. 8: Giá trị analog của cảm biến FSR402
Trường hợp 2:
57
Khi cảm biến FSR402 khơng có lực tác dụng, và cảm biến PIR phát hiện được thân nhiệt, cảm biến sóng siêu âm HC-SR04 phát hiện được thay đổi khoảng cách hệ thống cảnh báo sẽ hoạt động.
Hình 5. 10: Hệ thống hoạt động
Module Sim800L hoạt động và gửi tin nhắn để số điện thoại đã được cài đặt trong phần code.
58
Còi báo động của hệ thống cũng hoạt động cho đến khi tài xế quay trở lại và tắt hệ thống.
59
CHƯƠNG 6: ĐÁNH GIÁ KẾT QUẢ KẾT LUẬN 6.1 KẾT QUẢ ĐẠT ĐƯỢC CỦA ĐỒ ÁN 6.1 KẾT QUẢ ĐẠT ĐƯỢC CỦA ĐỒ ÁN
6.1.1 KẾT QUẢ CỦA ĐỒ ÁN THỰC HIỆN
Vì những lý do khách quan, nên mơ hình vật lý khơng được hồn thành theo đúng kế hoạch, tuy chưa phải là sản phẩm có thể đưa vào sử dụng, nhưng thiết bị vẫn đảm bảo được hoạt động đúng theo nguyên lý hoạt động, các tín hiệu của cảm biến, module phù hợp theo code đã lập trình.
Kết quả thu được khi tiến hành nạp code vào mạch và khảo sát hoạt động thực tế của thiết bị:
Cảm biến lực FSR402 hoạt động ổn định và nhạy, không bị lỗi, bật tắt relay đúng theo quy định.
Cảm biến siêu âm HC-SR04 và cảm biến PIR HC-SR501 hoạt động đúng tín hiệu, hoạt động đúng như điều kiện “and” trong code được lập trình.
Cơ cấu cảnh báo: gửi tin nhắn bằng Module sim, âm thanh phát ra từ còi buzzer hoạt động tốt, liên tục khi nhận được thông tin phù hợp.
6.1.2 KIẾN THỨC THU ĐƯỢC
Sau thời gian nghiên cứu và thực hiện đề tài, q trình làm việc chúng tơi đã trau dồi và biết thêm những kiến thức mới, hiểu sâu hơn những kiến thức đa học:
Biết được cách lập trình Arduino, tổng hợp được chương trình phức tạp từ những chương trình đơn giản, tài liệu từ nhiều nguồn từ các ngôn ngữ khác nhau, giao tiếp Arduino với máy tính nhanh và sử dụng được đa số chức năng của Arudino IDE.
Hiểu được và áp dụng của một số linh kiện qua trọng trong lĩnh vực tự động như transistor NPN, PNP, diode, relay. Biết được nguyên lý hoạt động của các loại cảm biến với các tín hiệu khác nhau như: hồng ngoại, sóng siêu âm, lực
Làm quen với các ứng dụng của IoT vào đời sống, các cách thức nhận và truyền dữ liệu không dây thông qua Module sim.
60
Nâng cao các kỹ năng mềm: làm việc nhóm, phân chia nhiệm vụ, xây dựng kế hoạch, tìm kiếm tài liệu…
6.2 KẾT LUẬN
Với những mục tiêu đã đưa ra, đề tài đã giải quyết được phần lớn những yêu cầu là lập trình điều khiển được bộ phận điều khiển của “Hệ thống cảnh báo quên trẻ em trên ô tô”. Cảnh báo khi trường hợp trẻ em bị bỏ lại trên ô tô bằng các hệ thống chiếu sáng, cịi, tin nhắn sms và hạ kính ơ tơ nâng cao khiến cho khả năng trẻ bị ngộp, sốc nhiệt là 0%.
6.2.1 ƯU ĐIỂM
Giải quyết được yêu cầu đặt ra của đề tài.
Phần cứng được thiết kế đơn giản, dễ sử dụng.
Các thông số đo đạc được sát với thực tế.
Chi phí của thiết bị khá hợp lý và đáp ứng được đầy đủ các tính năng.
6.2.2 NHƯỢC ĐIỂM
Dù nhóm nghiên cứu đã rất cố gắng hoàn thành đề tài một cách tốt nhất có thể tuy nhiên hệ thống vẫn cịn một vài khuyết điểm sau:
Vì đây là đề tài nguyên cứu nên các hoạt động của các cảm biến chưa phải là tốt nhất.
Thiết bị thực tế chưa thực sự gọn gàn, chưa thuận tiện cho việc áp dụng trên ơ tơ.
Vì kiến thức, thời gian cũng như kinh phí hạn chế nên mơ hình khơng được tối ưu 100%.
6.3 HƯỚNG PHÁT TRIỂN ĐỀ TÀI
Với mong muốn hệ thống do nhóm nghiên cứu có thể ứng dụng tốt và rộng rãi trong thực tế. Nhóm đưa ra một số hướng phát triển cho để tài dựa trên khuyết điểm hiện có của hệ thống do nhóm thiết kế. Dưới đây là một số hướng phát triển:
61
Sử dụng các cảm biến cơng nghiệp có độ chính xác cao để cải thiện tính chính xác của hệ thống.
Sử dụng các phương thức giao tiếp tiên tiến để giao thực hiện việc giao tiếp giữa bộ xử lý Arduino với xe ô tô và module sim.
Cải tiến mơ hình thành các module tích hợp để giảm kích thước của hệ thống, giúp đơn giản cho việc lắp đặt và đem lại tính thẩm mĩ cho hệ thống.
62
TÀI LIỆU THAM KHẢO
1. Phạm Hùng Kim Khánh. Giáo Trình Vi Điều Khiển. NXB Đại học Cơng nghệ Tp.HCM.2008
2. Nguyễn Văn Nhanh, Nguyễn Văn Bản. Giáo Trình Hệ thống điện-điện tử ô tô. NXB Đại học Công nghệ Tp.HCM.2017
3. Nguyễn Ngọc Anh, Võ Ngọc Bích. Giáo Trình Kỹ Thuật Điện Tử. NXB Đại học Cơng nghệ Tp.HCM.2015
4. Phạm Quang Huy, Nguyễn Trọng Hiếu, Vi điều khiển và ứng dụng Arduino dành cho người tự học, NXB Bách Khoa Hà Nội.2018
5. Phạm Quang Huy, Lê Cảnh Trung, Lập trình điều khiển với Arduino, NXB Khoa học và Kỹ Thuật.2016
6. TS.Trương Đình Nhơn, KS.Phạm Quang Huy, Hướng Dẫn Sử Dụng Arduino, NXB Đại học Quốc gia TP.HCM.2017
1. https://www.hyundainews.com/en-us/releases/2383 2. http://arduino.vn/reference 3. https://www.youtube.com/watch?v=dfGScD0UKZM 4. https://github.com/Chams123456/FSR/blob/main/fsr_arduino_1.ino 5. https://www.arduinoplatform.com/ 6. https://www.tinkercad.com/things/38yTXjxY4x3-exquisite-lahdi- kasi/editel?tenant=circuits 7. https://espace.edu.vn/module-arduino-va-thu-vien/sim800l-module-gsm- nhan-tin-va-goi-dien-gia-re/ 8. https://components101.com/sensors/fsr400-force-sensor 9. https://datasheetspdf.com/pdf/1380136/ETC/HC-SR04/1 10. https://mlab.vn/index.php?_route_=18496-huong-dan-su-dung-module- cam-bien-chuyen-dong-hc-sr501.html 11. https://www.thegioiic.com/
63
PHỤ LỤC PHỤ LỤC CODE ARDUINO
Bộ xử lý Arduino của hệ thống cảnh báo qn trẻ em trên ơ tơ có thể hoạt động được là nhờ vào chương trình lập trình. Chương trình Arduino được viết bằng C hoặc C++ của phần mềm Arduino IDE. Sau đây là chương trình Arduino của hệ thống:
1. #include<Sim800l.h> 2. #include <SoftwareSerial.h> 3. SoftwareSerial sim(5, 4); 4. int _timeout; 5. String _buffer; 6. int gtcb; 7. #define buzzer 10 8. #define ir 2 9. Sim800l Sim800l; 10. String textSms; 11. String number = "+84338499472"; 12. uint8_t index1; 13. int demSms = 0; 14. int trigPin = 6; 15. int echoPin = 7; 16. int buzzernegative = 8; 17. int value = 0;
18. int fsrPin = A0; 19. int relaypin = 11; 20. int motor = 13;
21. long duration, distance;
22. //........................................................... 23. void setup() {
64 25. pinMode(trigPin,OUTPUT); 26. pinMode(echoPin,INPUT); 27. pinMode(buzzernegative,OUTPUT); 28. pinMode(relaypin, OUTPUT); 29. pinMode(fsrPin, INPUT); 30. pinMode(motor, OUTPUT); 31. _buffer.reserve(50); 32. sim.begin(9600); 33. Sim800l.begin(); 34. pinMode(buzzer, OUTPUT); 35. pinMode(ir, INPUT); 36. delay(1000); 37. Sim800l.delAllSms(); 38. Serial.println("<<Connected>>");} 39. //........................................................... 40. void loop() { 41. value = analogRead(fsrPin); 42. if (value == 0) { 43. digitalWrite(relaypin, LOW);} 44. else{ 45. digitalWrite(relaypin, HIGH);}
46. Serial.print("Analog reading from FSR: "); 47. Serial.println(value); 48. delay(10000); 49. digitalWrite(trigPin,LOW); 50. delayMicroseconds(5); 51. digitalWrite(trigPin,HIGH); 52. delayMicroseconds(10); 53. digitalWrite(trigPin, LOW);
65 54. digitalWrite(echoPin,LOW); 55. duration = pulseIn(echoPin,HIGH); 56. distance = duration*0.0343/2; 57. Serial.print(distance); 58. Serial.print("cm"); 59. Serial.println(); 60. if(distance<100) 61. {digitalWrite(buzzernegative, HIGH); 62. }else 63. {digitalWrite(buzzernegative, LOW);} 64. delay(250); 65. if (digitalRead(ir) == 0){ 66. Serial.println("normal");} 67. if (digitalRead(ir) == 1){ 68. digitalWrite(buzzer, HIGH); 69. Serial.println("WARNING"); 70. Serial.println(number); 71. Serial.println("send meggase"); 72. Serial.println("Calling to phone"); 73. callNumberr(); 74. SendMessage(); 75. while (1) { 76. textSms = Sim800l.readSms(1); 77. Serial.println("OFF system"); 78. if (textSms.indexOf("OFF") != -1){ 79. digitalWrite(buzzer, LOW); 80. Serial.println("off system"); 81. Sim800l.delAllSms(); 82. Serial.println("delete");
66 83. goto endd; 84. }}} 85. endd:;} 86. //........................................................... 87. void SendMessage(){
88. Serial.println ("Sending Message");
89. sim.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode 90. delay(1000); 91. sim.println("AT+CMGS=\"" + number + "\"\r"); 92. delay(1000); 93. String SMS = "WARNING"; 94. sim.println(SMS); 95. delay(100);
96. sim.println((char)26);// ASCII code of CTRL+Z 97. delay(20000);} 98. //...................................................... 99. void callNumberr() { 100. sim.println("AT"); 101. updateSerial(); 102. sim.println("ATD+ " + number + ';'); 103. updateSerial(); 104. Serial.println("calling");
105. delay(20000); // wait for 20 seconds... 106. sim.println("ATH"); 107. updateSerial();} 108. void updateSerial(){ 109. delay(500); 110. while (Serial.available()) 111. {sim.write(Serial.read());}
67 112. while (sim.available()){