Lắp mạch như hình vẽ:
49 3.3 GỬI DỮ LIỆU BẰNG GIAO THỨC TCP, ĐÓNG GÓI KIỂU JSON
3.3.1 Thiết lập giao thức TCP
Gửi các lệnh sau để đưa dữ liệu theo gói TCP lên web
• AT+CIPSTART=”TCP”,”52.200.142.198”,80 thiết lập kiểu kết nối TCP và địa chỉ trang web cần giao tiếp. ”52.200.142.198” là địa chỉ của trang web: fast-anchorage-66763.herokuapp.com
• AT+CIPSEND=N,”n” : gữi dữ liệu với 1 dòng , N ứng với số kí tự của n • AT+CIPSEND : gữi dữ liệu nhiều dòng
• AT+CIPCLOSE : đóng thiết lập TCP
50
Kết quả cuối cùng nhận được là “+TCPCLOSE: 0” tức là đã gửi dữ liệu lên web thành công.
3.3.2 Đóng gói kiểu Json
❖ Kiểu chuỗi Json gửi dữ liệu lên web có định dạng như sau:
Bảng 3.1: Định dạng chuổi Json
TT Key Giá trị Đơn
vị
Phạm vi dữ liệu
Mô tả Min Max
1 dtc_numb 2 Số lỗi động cơ
2 DTCs 1 P0102 Mã lỗi 2 P0113 ………… 3 ID 76-D11234 Biển số xe 4 GPS 0.Latitude 10.91464 ° (độ) 8 24 Tọa độ GPS 1.Longitude 106.014863 ° (độ) 102 110 5 a 1000 rpm 0 16,383.75 Tốc độ động cơ 6 b 30 % 0 100 Vị trí bướm ga 7 c 40 °C -40 215 Nhiệt độ không khí nạp 8 d 10 °C -40 215 Nhiệt độ nước làm mát 9 e 10 V 0 30 Điện áp ắc quy 10 f 10 Grams /sec 0 655.35 Lưu lượng khí nạp 11 g 10 ° (độ) -64 63.5 Góc đánh lửa sớm 12 h 10 ° (độ) -210 302
Thời gian phun nhiên liệu
13 j 10 °C -40 210
Nhiệt độ dầu động cơ
51
❖ Kiểu chuổi Json tương ứng:
{"GPS":["10.914640","106.014863"]," ID ": 76-D11234, "a":1000, "b":30, "c":40, "d":10, "e":10, "f":10, "g":10, "h":10, " dtc_numb ":2, " DTCs ":["P0102","P0113"], "j":29011}.
3.4 GIAO DIỆN CỦA WEB 3.4.1 Đăng nhập vào địa chỉ 3.4.1 Đăng nhập vào địa chỉ
Ta đăng nhập vào địa chỉ: http://159.65.4.55:1333/bằng phần mền duyệt trình web. Sau đó hiện ra giao diện chính của web
Hình 3.16 Giao diện chính của Web
Sau khi giao diện chính của web hiện ra, ta thấy có 3 tiêu đề: Live update, Chart, Map
3.4.2 Giao diện Live Update
Tiêu đề này có mục đích là hiện thị tọa độ GPS, các thông số của xe và biểu đồ thông số của xe theo thời gian.
52
Sau khi click chuột ta có giao diện như sau
Hình 3.17 Giao diện của Live Update
Bên trái là cột thông số của xe còn bên phải mà bản đồ để hiện tọa độ
Hình 3.18 Biểu đồ thông số của xe
3.4.3 Giao diện Chart
Tiêu đề này có mục đích hiện thị lại các thông số của xe theo dạng biểu đồ theo ngày giờ.
Ta click chuột vào ô “Chart” để vào giao diện Sau khi click chuột ta có giao diện như sau
53
Hình 3.19 Giao diệp của Chart
Chọn ngày giờ muốn biết nhiệt độ nước làm mát vào ngày đó. VD: chọn từ 4:20 PM đến 4:30 PM ngày 21/07/2018, và thông số muốn chọn xem là Nhiệt độ nước làm mát.
54 3.4.4 Giao diện Map
Tiêu đề này có mục đích hiện thị lại tọa độ GPS theo ngày và theo thời gian
❖ Theo ngày
Ta click chuột vào “Theo ngày” ở phía dưới tiêu để vào giao diện Sau khi click chuột ta có giao diện như sau
Hình 3.21 Giao diện của Map theo ngày
Ta chọn ngày muốn xem lại bản đồ. VD: ngày 30/06/2018
55
❖ Theo thời gian
Ta click chuột vào “Theo thời gian” ở phía dưới tiêu để vào giao diện Sau khi click chuột ta có giao diện như sau
Hình 3.23 Giao diện của Map theo thời gian
Ta chọn thời gian muốn xem lại bản đồ. VD: ngày 30/06/2018 từ 10:00 AM đến 02:00 PM.
56
CHƯƠNG 4. THI CÔNG MÔ HÌNH VÀ KẾT QUẢ MÔ
PHỎNG 4.1 NHỮNG THIẾT BỊ LÀM MÔ HÌNH
Dưới đây là một số thiết bị để làm mô hình: • ECU Toyota Yaris
Hình 4.1 ECU Toyota Yaris • Đầu Jack OBD
57 • Cáp kết nối OBD-II Hình 4.3 Cáp kết nối OBD-II • Mạch giảm áp DC-DC Hình 4.4 Mạch giảm áp • Mạch OBD-II URAT • Module A9G • Arduino Mega 2560 • Nguồn 12V
58 4.2 SƠ ĐỒ KẾT NỐI MÔ HÌNH
Hình 4.5 Sơ đồ kết nối mô hình
4.3 MÔ HÌNH THỬ NGHIỆM THỰC TẾ
59
Hình 4.7 Mô hình kết nối module A9G, OBD-II, Mega 2560,Giảm áp
4.4 KẾT QUẢ CHẠY MÔ HÌNH
❖ Thông số động cơ
60
Thay đổi biến trở để giả lập tín hiệu nhiệt nước làm mát và nhiệt độ không khí nạp
Hình 4.9 Thay đổi thông số THW, THA
Khi ta thay đổi biến trở để giả lập tín hiệu nhiệt độ nước làm mát và nhiệt độ không khí nạp thì thấy 2 tín hiệu này thay đổi. Ở hình 4.7 thì 2 tín hiệu có giá trị là 8℃. Còn hình 4.8 thì 2 giả trị đã thay đổi. THW: 46, THA: 63.
❖ Tọa độ GPS
61
CHƯƠNG 5. QUY TRÌNH VÀ KẾT QUẢ THỰC NGHIỆM
5.1 THIẾT LẬP THIẾT BỊ
❖ Mô hình tổng quan của hệ thống
Hình 5.1 Mô hình tổng quan của hệ thống
❖ Thiết lập mô hình
Cắm 1 đầu của cáp OBD-II vào jack chuẩn đoán trong xe, đầu còn lại cấm mô hình.
62
Khởi động giao diện web
Hình 5.3 Khởi động web
5.2 KẾT QUẢ CHẠY THỰC NGHIỆM
❖ Thông số động cơ
Khi chìa khóa xe ở chế độ IG thì máy đã chạy ở tốc độ cầm chừng
Hình 5.4 Thông số khi xe nổ máy
Lúc này, xe đã khỏi động và chạy ở chết độ cầm chừng nên tốc độ động cơ đã có. Khoảng 733 vòng/phút.
63
Đập bàn đạp ga để thay đổi vị trí bướm ga và tốc độ động cơ
Hình 5.5 Thông số khi xe tăng tốc
Khi ta đập bàn đạp ga để thay đổi vị trí bướm ga và tốc độ động cơ thì thấy 2 tín hiệu này thay đổi. Ở hình 5.3 thì 2 tín hiệu có giá trị lần lượt là VTA: 16, RPM: 733. Còn hình 5.4 thì 2 giả trị đã thay đổi. VTA: 20, RPM: 2439.
❖ Tọa độ GPS
64
❖ Đọc mã lỗi
Đầu tiên ta tạo lỗi cho xe bằng cách rút cảm biến đo lưu lượng không khí nạp. Sau đó vào khởi động động cơ. Sẻ thấy đèn Check Engine sáng.
Hình 5.7 Hiện thị mã lỗi
Sau khi đọc được mã lỗi ta bắt đầu sửa lỗi bằng cách gắn cảm biến lưu lượng không khí nạp vào. Sau đó rút cọc âm của bình ắc quy, chờ khoảng 5-10s rồi gắn cọc âm lại vào bình ắc quy. Vào xe khởi động lại máy. Sẻ thấy đèn Check Engine tắt.
Hình 5.8 Sửa mã lỗi
Lúc này đã hiện thông số nhiệt độ không khí nạp, lưu lượng không khí nạp và lỗi cũng đã biến mất.
65
CHƯƠNG 6. KẾT LUẬN VÀ ĐỊNH HƯỚNG PHÁT TRIỂN
6.1 NHỮNG KẾT QUẢ ĐẠT ĐƯỢC
• Nắm được một số hàm cơ bản khi lập trình với Arduino và Javascript • Nắm được lý thuyết của chuẩn giao tiếp UART
• Nắm được cơ sở lý thuyết xây dựng web server
• Nắm được lý thuyết về module GPS cũng như cách xác định vị trí
• Nắm được lý thuyết về OBD-II cũng như vai trò của OBD đối với nghành công nghệ ô tô
• Hoàn thành mô hình để lấy và truyền dữ liệu từ từ xe lên web server thông qua kết nối GPRS
• Kết nối các module GPRS và OBD-II UART để có thể truyền và nhận dữ liệu lên web server
6.2 HẠN CHẾ CỦA ĐỀ TÀI
• Chưa hoàn thành hộp đựng khi gắn lên xe
• Lập trình điều khiển nhận và lấy tín hiệu chưa được tối ưu. • Việc lấy dữ liệu GPS đôi lúc còn sai số nhiều khi ở trong nhà. • Chưa xử lý được những trường hợp lỗi không xác định
• Chưa tối ưu khi xe tắt máy module vẫn chạy làm tổn hao pin.
6.3 HƯỚNG PHÁT TRIỂN ĐỀ TÀI
• Đưa hình ảnh từ xe về web server.
• Đưa module về chế độ ngủ khi xe không hoạt động. • Hỗ trợ update phiên bản mới vào module từ xa.
66 PHỤ LỤC
❖ Hướng dẫn thêm thư viện Json vào Arduino
Bước 1: Vào trang https://github.com/bblanchon/ArduinoJson để tải thư viện Arduino
Json về.
Hình 7.1 Tải thư viện Arduino Json
Bước 2: Sau khi tải thư viện Arduino Json về, khởi động phần mền Arduino IDE vào
Sketch/Include Library/Add .ZIP Library rồi chọn file ArduinoJson-master.Zip
67 Bước 3: Vào lại Sketch/Include Library/Add .ZIP Library xem thư viện có được thêm
vào chưa. Nếu thấy xuất hiện thì đã thêm vào thành công.
68 TÀI LIỆU THAM KHẢO
[1] https://learn.sparkfun.com/tutorials/obd-ii-uart-hookup-guide [2] https://vi.wikipedia.org/wiki/H%E1%BB%87_th%E1%BB%91ng_%C4%90%E1%BB% 8Bnh_v%E1%BB%8B_To%C3%A0n_c%E1%BA%A7u [3] https://vi.wikipedia.org/wiki/H%E1%BB%87_th%E1%BB%91ng_th%C3%B4ng_tin_di _%C4%91%E1%BB%99ng_to%C3%A0n_c%E1%BA%A7u [4] https://www.thegioididong.com/tin-tuc/hieu-ro-hon-ve-gprs-canh-cong-internet-cho-di- don-590218 [5] https://www.w3schools.com/nodejs/default.asp [6] http://aprs.gids.nl/nmea/ [7] https://en.wikipedia.org/wiki/OBD-II_PIDs [8] https://longvan.net/web-server.html [9] https://randomnerdtutorials.com/decoding-and-encoding-json-with-arduino-or-esp8266 [10] https://vi.wikipedia.org/wiki/TCP/IP