Kết nối module A9G với Arduino Mega 2560

Một phần của tài liệu Nghiên cứu, thiết kế, chế tạo thiết bị thu thập và giám sát trên ô tô đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 50)

Lắp mạch như hình vẽ:

43 3.2 LẤY VÀ CHUYỂN ĐỔI THÔNG SỐ ĐỘNG CƠ

3.2.1 Thiết lập OBD-II URAT

Một khi đã kết nối với máy board OBD-II UART chúng ta sử dụng lệnh AT để giao tiếp với board. Những câu lệnh này thường bắt đầu với “AT”. Sau câu lệnh “AT” những chữ cái tiếp theo gửi tới board sẽ là những chỉ thị để board thực hiện.

Để bắt đầu kết nối với board, gõ “ATZ” và nhấn enter vào terminal. Thao tác này sẽ gửi tập lệnh để reset board OBD-II UART. Thông thường sẽ có một số LEDs trên board nhấp nháy trên board và tín hiệu trả về của board sẽ được hiển thị trên terminal.

44

Nếu nhận về những kí tự không có ý nghĩa. Chúng ta cần kiểm tra lại đường dây dẫn có đúng không và sau đó gửi lại lệnh “ATZ”. Một khi đã kết nối với board thành công. Ta đọc điện áp của hệ thống bằng cách gửi lệnh “ATRV” vào terminal và gõ enter. Board sẽ tự động gửi về giá trị điện áp của hệ thống như hình:

Hình 3.9 Gửi lệnh ATRV đến board OBD-II UART

Giá trị điện áp này sẽ tương đương với điện áp của ắc quy gắn trong xe. Nhưng trên hình giá trị điện áp này là 12.1V.

Để đọc những thông số tiếp theo của động cơ, board OBD-II UART phải được cấu hình về đúng chuẩn của giao thức OBD. Có một vài chuẩn giao thức OBD khác nhau, vì vậy sẽ gặp rắc rối để tìm giao thức đúng. Tuy nhiên, board OBD này có thể tự động tìm và nhận dạng giao thức đúng. Để sử dụng tính năng tự động tìm kiếm này. Mở chìa khóa xe

45

ở chế độ ON. Một khi xe đã ở chế độ ON, gửi dòng lệnh “ATSP0”. Board OBD-II UART sẽ tự động gửi lại “OK” nếu đã tìm ra giao thức đúng để giao tiếp với xe.

Hình 3.10 Gửi lệnh ATSP0 đến board OBD-II UART

3.2.2 Lấy thông số động cơ trong qua OBD-II UART

Chúng ta sẽ tập trung vào chế độ số 1 (Mode 01) của OBD để lấy các dữ liệu hiện hành của xe như là : tốc độ động cơ, nhiệt độ nước làm mát, nhiệt độ khí nạp, vị trí bướm ga, góc đánh lửa sớm, …

Ở Mode 01, thông số quan trọng nhất là 00. Thông số này sẽ cho chúng ta biết xe sẽ hỗ trợ những chế độ nào, những thông tin nào sẽ được hỗ trợ hiển thị. Ở cửa sổ terminal gõ “0100”. Tập lệnh này được truyền với board OBD-II UART sẽ được hiểu là người dùng đang muốn lấy dữ liệu ở chế độ “01”, PID “00”.

46

Hình 3.11 Gửi lệnh 0100 đến board OBD-II UART

Ở tập lệnh trả về này : “0100SEARCHING...41 00 BE 1F B8 13”, “41” là byte xác nhận mode đã yêu cầu tới tập lệnh. “00” là PID chúng ta đã gửi tới. “BE 1F B8 13” là dữ liệu trả về và sau khi phân tích chúng ta sẽ tìm ra những PID được hỗ trợ ở mode 01 này.

47

Ví dụ: Để lấy được nhiệt độ nước làm mát ta gửi lệnh “0105” theo tiêu chuẩn OBD.

Hình 3.12 Gửi lệnh 0105 đến board OBD-II UART

Dữ liệu nhận về là “010541 05 5A >” Sau khi phân tích ta sẽ có nhiệt độ nước làm mát hiện tại của động cơ là 50°C.

3.2.3 Chuyển đổi thông số động cơ

Sau khi lấy dữ liệu nhiệt độ nước là mát về ta được: “0105 41 05 5A”. Trong đó:

• 0105 là mã PIDs (01 là chế độ mode, 05 là mã PID) • 41 là mã kiểm tra của chế độ 01

• 05 là mã PID của nhiệt độ nước làm mát • 5A là thông số của nhiệt độ nước làm mát

48

5A là thông số theo cơ số 16 vậy nên muốn áp dụng công thức thì ta phải chuyển sang cơ số 10. Vậy 5A chuyển sang cơ số 10 là: 90. Sau đó ta tra bảng công thức

Hình 3.13 Bảng mã PID mode 01

Vậy giá trị A=90 nên nhiệt độ nước làm mát có giá trị là: 50℃.

3.2.4 Kết nối module OBD-II UART với Arduino Mega 2560

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

Một phần của tài liệu Nghiên cứu, thiết kế, chế tạo thiết bị thu thập và giám sát trên ô tô đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 50)

Tải bản đầy đủ (PDF)

(76 trang)