2.4.1 Giới thiệu chung
Có hai loại giắc cấm: loại A va loại B
Loại A Loại B
31
Loại A thì sữ dụng điện áp nguồn là 12V, trong khi đó loại B lại sữ dụng điện áp nguồn là 24V.
Hình 2.4 Chân của jack OBD
2.4.2 Cấu tạo của Jack OBD-II
Bảng 2.9 Bảng mô tả chân Jack OBD
Số chân Ý nghĩa Số chân Ý nghĩa
1 Nhà sản xuất qui định: _GM: J2411 GMLAN/ SWC/Single-Wire CAN _Ford, FIAT: Thông tin giải trí CAN High
9 Nhà sản xuất qui định:
_BMW: TD (Tachometer Display) tín hiệu RPM
_GM: 8192 bit/s ALDL được lắp đặt
2 SAE J1850 Bus + 10 SAE J1850 Bus -
3 Nhà sản xuất qui định: _GM: Phát hiện đối tượng CAN bus + _Ford: Tốc độ trung bình CAN-High _Chrysler: CCD Bus + _BMW: Ethernet RX+ 11 Nhà sản xuất qui định:
_GM: Phát hiện đối tượng CAN bus -
_Ford: Tốc độ trung bình CAN Low
_Chrysler: CCD Bus - _BMW: Ethernet RX - 4 Chassis 12 Nhà sản xuất qui định:
_GM: Chassis high-speed CAN bus +
_BMW: Ethernet TX+
32
_GM: Chassis high-speed CAN bus -
_BMW: Ethernet TX-
6 CAN High 14 CAN Low
7 K-Line theo ISO 9141-2 và ISO 14230-4
15 L-Line theo ISO 9141 và ISO 14230-4
8 Nhà sản xuất qui định: _Ford, FIAT: Thông tin giải trí CAN-Low
_BMW: Ethernet kích hoạt thông qua 510 Ohm, 0.6W
16 Nguồn
_Loại A: 12V/4A _Loại B: 24V/2A
2.5 TÌM HIỂU VỀ OBD-II PID
OBD-II PIDs ( chẩn đoán tham số IDs ) là mã được sử dụng để yêu cầu dữ liệu từ một chiếc xe, được sử dụng như một công cụ chẩn đoán.
Tiêu chuẩn SAE J / 1979 định nghĩa nhiều PID, nhưng các nhà sản xuất cũng xác định nhiều PID hơn cho xe của họ. Tất cả các loại xe tải nhẹ (tức là ít hơn 8.500 pounds) được bán ở Bắc Mỹ từ năm 1996, cũng như các loại xe tải hạng trung (tức là 8.500-14.000 bảng Anh) bắt đầu từ năm 2005 và các xe hạng nặng (lớn hơn 14.000 bảng Anh) bắt đầu từ năm 2010, [1] được yêu cầu hỗ trợ chẩn đoán OBD-II, sử dụng đầu nối liên kết dữ liệu tiêu chuẩn và một tập hợp con của các SAE J / 1979 được xác định PID (hoặc SAE J / 1939 áp dụng cho xe hạng trung / hạng nặng), kiểm tra khí thải.
Thông thường, một kỹ thuật viên ô tô sẽ sử dụng PID với một thiết bị chuẩn đoán được kết nối với đầu nối OBD-II của xe.
• Kỹ thuật viên nhập mã PID.
• Thiết bị chuẩn đoán sẽ gửi đến mạng bộ điều khiển của xe (CAN) -bus, VPW, PWM, ISO, KWP (sau năm 2008, chỉ CAN)
• Thiết bị trên xe nhận dạng PID và chịu trách nhiệm phản hồi lại giá trị PID đó tới xe
33
• Thiết bị chuẩn đoán đọc phản hồi và hiển thị nó cho kỹ thuật viên.
❖ Các chế độ của OBD-II PIDs
Có 10 chế độ hoạt động được mô tả trong tiêu chuẩn OBD-II SAE J1979 mới nhất. Bảng 2.10: Mô tả chế độ của OBD-II PIDs
Chế độ
(hex) Mô tả
01 Hiển thị dữ liệu hiện tại
02 Hiển thị dữ liệu khung cố định
03 Hiển thị mã lỗi chẩn đoán được lưu trữ
04 Xóa mã lỗi chẩn đoán và giá trị được lưu trữ
05 Kết quả kiểm tra, giám sát cảm biến oxy (không chỉ CAN)
06 Kết quả kiểm tra, giám sát thành phần / hệ thống khác (Kết quả kiểm tra, giám sát cảm biến oxy cho chỉ CAN)
07 Hiển thị mã lỗi chẩn đoán đang chờ xử lý (được phát hiện trong chu kỳ lái xe hiện tại hoặc cuối cùng)
08 Kiểm soát hoạt động của thành phần / hệ thống tích hợp
09 Yêu cầu thông tin xe
0A Thường chẩn đoán Rắc rối Codes (DTCs) (Xóa DTCs)
Các nhà sản xuất xe không bắt buộc phải hỗ trợ tất cả các chế độ. Mỗi nhà sản xuất có thể xác định các chế độ bổ sung trên # 9 (ví dụ: chế độ 22 như được xác định bởi SAE J2190 cho Ford / GM, chế độ 21 cho Toyota) cho các thông tin khác.
❖ Tìm hiểu về chế độ 01
Mục đích của việc tìm hiểu này là đọc và chuyển đổi được dữ liệu của xe từ ECU cụ thể ở đây là thông số độ cơ. Vì vậy chúng em sẻ tập trung tìm hiểu vào chế độ 01 của OBD- II PIDs
34
Khi gửi mã PIDs để lấy thông số thì dữ liệu trả về bao gồm 4 byte (A,B,C,D) có dạng: Bảng 2.11: Dữ liệu trả về khi gửi mã PIDs
A B
A7 A6 A5 A4 A3 A2 A1 A0 B7 B6 B5 B4 B3 B2 B1 B0
C D
C7 C6 C5 C4 C3 C2 C1 C0 D7 D6 D5 D4 D3 D2 D1 D0
Dưới đây là bảng giá trị PIDs của chế độ 01: Bảng 2.12: Bảng giá trị PIDs của chế độ 01
PID (hex) PID (tháng 12) Byte dữ liệu Sự miêu tả Giá trị nhỏ nhất Giá trị tối đa Các đơn vị Công thức 00 0 4 Hỗ trợ PID [01 - 20] Bit được mã hóa [A7..D0] 01 1 4 Theo dõi DTC bị xóa. (Bao gồm trạng thái đèn báo lỗi (MIL) và số lượng DTC.) Bit được mã hóa 02 2 2 Đóng băng DTC 03 3 2 Trạng thái nhiên liệu Bit được mã hóa 04 4 1 Tính toán tải động cơ 0 100 % 100. A 255 05 5 1 Nhiệt độ nước làm mát -40 215 ° C A - 40
35
0B 11 1 Áp suất tuyệt đối
họng ống nạp 0 255 kPa A 0C 12 2 RPM 0 16,383,75 vòng / phút 256. A + B 4 0D 13 1 Vận tốc xe 0 255 km / h A 0F 15 1 Nhiệt độ không khí nạp -40 215 ° C A - 40
10 16 2 Khối lượng không
khí MAF 0 655,35 gram / giây 256. A + B 4 11 17 1 Vị trí bướm ga 0 100 % 100. A 255
Bảng ở trên chỉ là một số mã PID thông dụng. Ví dụ: gửi mã 0105 để lấy dữ liệu nhiệt độ nước làm mát. Trong đó, 01 là chế độ 01, 05 là PID của nhiệt độ nước làm mát.
2.6 TÌM HIỂU VỀ WEB SERVER SỬ DỤNG NODEJS 2.6.1 Web server là gì: 2.6.1 Web server là gì:
Web server là một loại máy chủ có dung lượng lớn, tốc độ cao có công dụng lưu trữ các thông tin trên internet như một ngân hàng dữ liệu bao gồm các website đã được thiết kế và các thông tin, tài khoản… có liên quan. Xét ở mức độ cơ bản nhất, toàn bộ các website cần một chương trình máy tính, phân phối các trang web khi có yêu cầu từ người dùng. Chiếc máy tính chạy chương trình này là web server. Khi một người dùng sử dụng máy tính để truy cập một website, họ nhập và gửi yêu cầu tới internet về việc xem một trang web. Mỗi web server đều có một địa chỉ IP hoặc cũng có thể có một domain name. Bất kỳ máy tính nào cũng có thể trở thành web server bởi việc cài đặt lên nó một chương trình phần mềm server software và sau đó kết nối vào internet.
36
Hình 2.5 Tổng quan kết nối Web Server
2.6.2 Chuỗi JSON và web server:
❖ Chuỗi JSON là gì:
JavaScript Object Notation (thường được viết tắt là JSON) là một kiểu dữ liệu mở trong JavaScript. Kiểu dữ liệu này bao gồm chủ yếu là text, có thể đọc được theo dạng cặp "thuộc tính - giá trị". Về cấu trúc, nó mô tả một vật thể bằng cách bọc những vật thể con trong vật thể lớn hơn trong dấu ngoặc nhọn ({ }). JSON là một kiểu dữ liệu trung gian, chủ yếu được dùng để vận chuyển thông tin giữa các thành phần của một chương trình.
Ví dụ {
“Name” : “Su Pham Ky Thuat”, “Address” : “Thu Duc”,
“Age” : 60, }
❖ Ứng dụng chuỗi JSON trong đề tài:
Chuỗi JSON được dùng làm quy chuẩn để trao đổi dữ liệu từ web server đến xe và từ web server tới trình duyệt web để hiển thị thông tin. Lợi ích của chuỗi json là có thể kết nối với các thuộc tính của chuỗi một cách dễ dàng mà không cần phải tính toán vị trí từng thông tin của chuỗi.
37
Ví dụ: muốn gửi tốc độ động cơ và nhiệt độ nước làm mát của xe lên web server ta gửi chuỗi JSON theo mẫu sau:
{
“rpm” : 1000, “waterTemp”: 50 }
Từ phía server ta chỉ cần kiểm tra 2 thông số “rpm” và “waterTemp” là có thể có được thông số tốc độ động cơ và nhiệt độ nước làm mát của xe.
2.6.3 Giao thức TCP/IP
❖ Giao thức TCP/IP là gì:
Bộ giao thức TCP/IP, (tiếng Anh: Internet protocol suite hoặc IP suite hoặc TCP/IP protocol suite - bộ giao thức liên mạng), là một bộ các giao thức truyền thông cài đặt chồng giao thức mà Internet và hầu hết các mạng máy tính thương mại đang chạy trên đó. Bộ giao thức này được đặt tên theo hai giao thức chính của nó là TCP (Giao thức Điều khiển Giao vận) và IP (Giao thức Liên mạng). Chúng cũng là hai giao thức đầu tiên được định nghĩa.
Như nhiều bộ giao thức khác, bộ giao thức TCP/IP có thể được coi là một tập hợp các tầng, mỗi tầng giải quyết một tập các vấn đề có liên quan đến việc truyền dữ liệu, và cung cấp cho các giao thức tầng cấp trên một dịch vụ được định nghĩa rõ ràng dựa trên việc sử dụng các dịch vụ của các tầng thấp hơn. Về mặt lôgic, các tầng trên gần với người dùng hơn và làm việc với dữ liệu trừu tượng hơn, chúng dựa vào các giao thức tầng cấp dưới để biến đổi dữ liệu thành các dạng mà cuối cùng có thể được truyền đi một cách vật lý.
❖ Ứng dụng giao thức TCP/IP vào đề tài:
Giao thức TCP/IP được sử dụng để truyền thông tin từ module GPRS lên web server. Để làm được việc đó, ta sử dụng chức năng send TCP/IP của module A9G đề gửi một mẫu tin lên server. Ví dụ muốn gửi một mẫu tin “Hello world ” ta gửi một số tập lệnh sau:
AT+CIPSTART=\"TCP\",\"159.65.4.55\",1334 AT+CIPSEND
“Hello World” 0x1A
Bên phía server, ta sử dụng module “net” để lắng nghe dữ liệu và phân tích chuỗi dữ liệu đó thành dữ liệu để gửi đến cho trình duyệt web.
38
CHƯƠNG 3. LẤY DỮ LIỆU GPS VÀ THÔNG SỐ ĐỘNG CƠ
ĐƯA LÊN WEB 3.1 LẤY DỮ LIỆU GPS
3.1.1 Thiết lập và kích hoạt module A9G
Muốn thiết lập module A9G ta phải biết được sơ đồ chân của module.
Hình 3.1 Sơ đồ chân module A9G
Sau khi biết được chân của module A9G thì lắp mạch như hình vẽ:
39
Mô hình thực tế:
Hình 3.3 Mô hình thực tế kết nối với máy tính và modue A9G
❖ Thiết lập module
Lấy module và sẽ thấy chủ thẻ micro sim ở mặt sau của mô-đun. Lắp sim vào khay và khóa nó.
❖ Kích hoạt module
Đầu tiên mở phần mền AI-Thinker (không bật module A9G). Sau đó thiết lập tốc độ baud đến 115200, chọn PortNum cho phù hợp.
Sau đó, nhấn nút nguồn trong module A9G trong khoảng 2 giây và module này sẽ khởi động. Khi module được khởi động đúng cách, bạn sẽ thấy màn hình nối tiếp của bạn đang cho kết quả đầu ra. Gõ AT vào màn hình nối tiếp và nhấn Enter.
40
Hình 3.4 Gửi lệnh AT
Kết quả trả về khi gửi AT là “Ok”, tức là module đã được thiết lập thành công
3.1.2 Thiết lập chế độ GPS,GPRS
❖ Thiết lập GPS
Gửi các lệnh sau để thiết lập chế độ GPS
AT+GPS = 1 bắt đầu thiết lập chế độ GPS AT+GPS = 0 tắt chế độ GPS
AT+GPS? xem thữ GPS đang ở chế độ nào (0,1) AT+GPSRD=N : thời gian để module trả về giá trị tọa độ
41
Hình 3.5 Gửi lệnh AT+GPSRD = 5
❖ Thiết lập GPRS
Gửi các lệnh sau để thiết lập chế độ GPS At+CREG=1 : cho phép đăng kí mạng AT+CGATT=1 kích hoạt PDP
AT+CGDCONT=1,”IP”,”V-INTERNET” thiết lập tham số PDP của mạng Viettel
42
Hình 3.6 Tập lệnh thiết lập GPRS
3.1.3 Kết nối module A9G với Arduino Mega 2560
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℃.