Bối cảnh và vấn đề nghiên cứu

Trong xu thế hội nhập kinh tế quốc tế và chuyển đổi sang cơ chế thị trường, đặc biệt là sau khi Việt Nam gia nhập Tổ chức Thương mại Thế giới (WTO), nhu cầu vận chuyển hành khách và hàng hóa gia tăng mạnh mẽ. Vận tải đường bộ trở thành phương thức chủ lực, kéo theo sự tăng trưởng nhanh chóng về số lượng cũng như chủng loại ô tô lưu hành. Từ những năm 1980, vi mạch điện tử bắt đầu được ứng dụng sâu rộng trên ô tô để giám sát trạng thái vận hành và cảnh báo hư hỏng. Khi các hệ thống điều khiển điện tử ngày càng phức tạp, phương pháp chẩn đoán điện tử thông qua hệ thống chẩn đoán trên xe thế hệ thứ hai (OBD-II - On-Board Diagnostics II) đã trở thành tiêu chuẩn bắt buộc nhằm kiểm soát phát thải và tình trạng kỹ thuật của xe.

Hệ thống OBD-II cho phép kỹ thuật viên và người sử dụng truy cập trực tiếp vào mô-đun điều khiển động cơ (ECM) để đọc các thông số thời gian thực và mã lỗi chẩn đoán (DTC). Nhằm nâng cao tính tiện dụng và giảm chi phí thiết bị chẩn đoán chuyên dụng cồng kềnh, đề tài "Đọc mã lỗi chẩn đoán OBD-II trên điện thoại thông minh qua Bluetooth" được thực hiện bởi sinh viên Nguyễn Quang Tín dưới sự hướng dẫn của PGS.TS Đỗ Văn Dũng tại Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh.

Mục tiêu và nhiệm vụ của đề tài được xác định cụ thể:

  1. Nắm vững hệ thống cơ sở lý thuyết về chuẩn chẩn đoán OBD-II và giao thức truyền thông mạng Controller Area Network (CAN).
  2. Thiết kế và xây dựng ứng dụng chẩn đoán OBD-II hoàn chỉnh trên điện thoại thông minh chạy hệ điều hành Android, kết nối không dây qua Bluetooth với bộ chuyển đổi chẩn đoán ELM327.

Đối tượng nghiên cứu của đồ án bao gồm: tổng quan hệ thống OBD-II, chuẩn giao tiếp CAN, phương thức truyền nhận và mã hóa dữ liệu chẩn đoán OBD-II, cùng kỹ thuật lập trình ứng dụng trên nền tảng Android Studio. Phạm vi nghiên cứu giới hạn ở cơ sở lý thuyết hệ thống OBD-II sử dụng chuẩn giao tiếp CAN 11-bit và triển khai phần mềm giao tiếp với thiết bị phần cứng ELM327 Bluetooth để đọc, xóa mã lỗi và hiển thị dữ liệu hoạt động của động cơ.

Cơ sở lý thuyết và phương pháp

Đề tài vận dụng hệ thống lý thuyết chuẩn hóa quốc tế trong ngành công nghệ kỹ thuật ô tô và mạng truyền thông công nghiệp:

  • Khung tiêu chuẩn chẩn đoán ô tô: Lịch sử và quy chuẩn của Ban Quản lý Tài nguyên Không khí California (CARB), Cơ quan Bảo vệ Môi trường Hoa Kỳ (EPA), Hiệp hội Kỹ sư Ô tô (SAE) với các tiêu chuẩn cốt lõi: SAE J1962 (quy định giắc chẩn đoán DLC 16 chân), SAE J2012 (chuẩn định dạng mã lỗi DTC 5 ký tự), SAE J1979 (định nghĩa 10 dịch vụ/chế độ chẩn đoán OBD-II), cùng các biến thể khu vực như EOBD (Châu Âu), JOBD (Nhật Bản), ADR 79/01-79/02 (Úc), GB18352 (Trung Quốc) và HDOBD (xe thương mại hạng nặng).
  • Chuẩn truyền thông trên xe: Các giao thức tầng vật lý và liên kết dữ liệu gồm ISO 9141-2, SAE J1850 VPW (Variable Pulse Width), SAE J1850 PWM (Pulse Width Modulation), ISO 14230 KWP2000 (Keyword Protocol 2000) và chuẩn ISO 15765-4 CAN.
  • Lý thuyết mạng CAN (ISO 11898): Cấu trúc mạng vi sai hai dây (CAN-H và CAN-L), cơ chế phân xử bus không phá hủy (Non-destructive bitwise arbitration), định dạng 4 loại khung truyền (Data Frame, Remote Frame, Error Frame, Overload Frame), phương pháp mã hóa NRZ-L và quy tắc chèn bit (Bit Stuffing).

Phương pháp nghiên cứu thực hiện trong đồ án gồm:

  • Phương pháp phân tích - tổng hợp tài liệu: Thu thập, biên dịch và hệ thống hóa các tài liệu chuyên ngành về chuẩn OBD-II, tập lệnh giao tiếp của vi điều khiển ELM327, cấu trúc dữ liệu PIDs (Parameter IDs) và thông số kỹ thuật mạng CAN.
  • Phương pháp nghiên cứu thực nghiệm: Kiểm tra trực tiếp dạng sóng tín hiệu, phân tích quá trình truyền nhận dữ liệu giữa vi điều khiển, bộ thu phát CAN (Transceiver) và thiết bị đọc ELM327.
  • Phương pháp lập trình phần mềm: Sử dụng môi trường Android Studio để xây dựng giao diện người dùng (XML Layout), lập trình xử lý logic kết nối Bluetooth Socket (RFCOMM/SPP), truyền nhận chuỗi lệnh ASCII/Hex và giải mã công thức toán học của từng PID.

Thiết kế và triển khai

Hệ thống chẩn đoán được thiết kế theo mô hình 3 khối: Xe ô tô (cổng chẩn đoán DLC chuẩn SAE J1962) $\rightarrow$ Thiết bị chuyển đổi phần cứng ELM327 Bluetooth $\rightarrow$ Ứng dụng chẩn đoán trên điện thoại thông minh Android.

+------------------------------------+
|            XE Ô TÔ                 |
|  (Cổng DLC 16 chân - SAE J1962)    |
+-----------------+------------------+
                  |
                  | Giao thức ISO 15765-4 (CAN Bus)
                  v
+-----------------+------------------+
|     THIẾT BỊ ĐỌC ELM327           |
|  - CAN Transceiver & Controller    |
|  - Vi điều khiển dịch lệnh sang AT |
|  - Module phát sóng Bluetooth      |
+-----------------+------------------+
                  |
                  | Sóng Bluetooth SPP (Serial Port Profile)
                  v
+-----------------+------------------+
|   ĐIỆN THOẠI THÔNG MINH ANDROID    |
|  - Tầng giao tiếp: Bluetooth Socket|
|  - Tầng xử lý: Giải mã PIDs/DTCs   |
|  - Tầng giao diện: Android XML UI  |
+------------------------------------+

Hệ thống phần mềm trên Android Studio được cấu trúc theo các mô-đun chức năng tương ứng với các chế độ chẩn đoán tiêu chuẩn:

  • Mô-đun quản lý kết nối Bluetooth: Thực hiện kiểm tra phần cứng Bluetooth trên điện thoại, yêu cầu cấp quyền truy cập, quét danh sách các thiết bị khả dụng, thiết lập kết nối Socket với bộ chuyển đổi ELM327 và duy trì luồng truyền nhận dữ liệu (InputStream, OutputStream).
  • Mô-đun giao diện người dùng (UI Layouts): Thiết kế giao diện trực quan bằng các tệp XML trong thư mục layout, bao gồm màn hình chính (MainActivity), các màn hình chế độ chẩn đoán (Mod_1 đến Mod_9) và màn hình giao tiếp dòng lệnh (Terminal).
  • Mô-đun xử lý dữ liệu và công thức PIDs: Tiếp nhận chuỗi phản hồi từ ELM327, loại bỏ khoảng trắng và ký tự điều khiển, tách các byte dữ liệu (Byte A, Byte B, Byte C, Byte D) và áp dụng công thức giải mã (ví dụ: công thức tính tốc độ động cơ ENGINE_RPM = ((A * 256) + B) / 4).
  • Mô-đun đọc và xóa mã lỗi (DTCs): Gửi lệnh yêu cầu Mode 03 để nhận danh sách mã lỗi, giải mã 2 byte cho mỗi mã lỗi theo quy tắc chuẩn SAE J2012; thực hiện gửi lệnh Mode 04 để xóa mã lỗi lưu trữ và tắt đèn chỉ báo lỗi động cơ (MIL).

Nội dung chính theo từng chương

Chương 1: Lý do chọn đề tài, mục tiêu và phương pháp nghiên cứu

Chương 1 trình bày tính cấp thiết của việc tự động hóa và đơn giản hóa quá trình chẩn đoán kỹ thuật ô tô trong bối cảnh phương tiện giao thông gia tăng. Tác giả xác định rõ 2 mục tiêu cốt lõi, giới hạn không gian nghiên cứu trên nền tảng Android và chuẩn CAN, đồng thời vạch ra 3 phương pháp tiếp cận chính: tổng hợp lý thuyết, thực nghiệm phần cứng và lập trình ứng dụng di động.

Chương 2: Tổng quan về hệ thống OBD-II

Chương này cung cấp cái nhìn toàn diện về lịch sử tiến hóa của hệ thống chẩn đoán trên xe từ thập niên 1960 đến nay. Tác giả phân tích cấu tạo giắc chẩn đoán DLC 16 chân theo tiêu chuẩn SAE J1962 (quy định vị trí lắp đặt trong bán kính 16 inches quanh vô-lăng và sơ đồ chân nguồn: chân 4-5 nối mass, chân 16 cấp dương ắc-quy).

Chương 2 cũng phân tích ý nghĩa đèn báo lỗi MIL và cấu trúc mã lỗi DTC gồm 5 ký tự theo chuẩn SAE J2012:

  • Ký tự 1: Hệ thống phụ trách (P - Hệ thống động cơ và truyền lực, B - Thân xe, C - Khung gầm, U - Mạng giao tiếp).
  • Ký tự 2: Đơn vị định nghĩa (0 - Chuẩn SAE, 1 - Nhà sản xuất).
  • Ký tự 3: Phân nhóm hệ thống con (1 - Hòa khí, 2 - Cung cấp nhiên liệu, 3 - Đánh lửa/bỏ lửa, 4 - Kiểm soát khí thải, 5 - Tốc độ/cầm chừng, 6 - Máy tính/mạng điều khiển, 7 & 8 - Hệ thống truyền động).
  • Ký tự 4 và 5: Mã lỗi cụ thể kế thừa từ OBD-I.

Tác giả tổng hợp các giao thức truyền thông của OBD-II được phân loại theo SAE thành 3 nhóm tốc độ:

Nhóm giao thức (SAE) Tên chuẩn giao thức Tốc độ truyền dữ liệu Đặc điểm đường truyền vật lý
Loại A ISO 9141-2 10.4 kbps 2 dây: Dây K (hai chiều), Dây L (một chiều)
Loại B SAE J1850 VPW 10.4 kbps 1 dây tín hiệu hai chiều (General Motors sử dụng)
Loại B SAE J1850 PWM 41.6 kbps 2 dây tín hiệu vi sai Bus+ và Bus- (Ford sử dụng)
Loại B / C ISO 14230 KWP2000 1.4 kBaud – 1 Mbps 2 dây (K-Line, L-Line), gói tin chứa tới 255 bytes
Loại C ISO 15765 CAN 250 kbps / 500 kbps 2 dây vi sai CAN-H (chân 6) và CAN-L (chân 14)

Chương này cũng phân loại chi tiết 10 dịch vụ chẩn đoán tiêu chuẩn theo SAE J1979:

Chế độ (Mode) Chức năng chẩn đoán theo tiêu chuẩn SAE J1979
Mode 01 Hiển thị dữ liệu luồng hiện tại của động cơ (Current Data).
Mode 02 Hiển thị dữ liệu khung đóng băng khi lỗi xuất hiện (Freeze Frame Data).
Mode 03 Đọc các mã lỗi chẩn đoán đã được phát hiện và lưu trong bộ nhớ (Confirmed DTCs).
Mode 04 Xóa toàn bộ mã lỗi chẩn đoán và các giá trị dữ liệu đã lưu trữ.
Mode 05 Hiển thị kết quả kiểm tra, giám sát cảm biến oxy (áp dụng cho các chuẩn ngoài CAN).
Mode 06 Hiển thị kết quả kiểm tra giám sát thành phần/hệ thống khác (và cảm biến oxy trên CAN).
Mode 07 Hiển thị các mã lỗi chẩn đoán đang chờ xử lý (Pending DTCs phát hiện ở chu kỳ lái gần nhất).
Mode 08 Điều khiển kích hoạt hoạt động của các thành phần/hệ thống trên xe.
Mode 09 Hiển thị thông tin xe (VIN - Mã nhận dạng xe, CALID - Mã hiệu chuẩn, CVN - Mã xác minh hiệu chuẩn).
Mode 0A Hiển thị mã sự cố chẩn đoán vĩnh viễn (Permanent DTCs - các lỗi không thể xóa bằng lệnh Mode 04).

Chương 3: Chuẩn giao tiếp CAN - Controller Area Network

Nội dung chương 3 đi sâu vào nguyên lý hoạt động của mạng CAN (chuẩn ISO 11898 do Bosch phát triển). Tác giả trình bày mô hình phần cứng của một nút mạng (Node CAN) gồm: Vi điều khiển (MCU) thực hiện chức năng chính và cấu hình, Bộ điều khiển CAN (CAN Controller) xử lý đóng khung và tính toán thời gian bit, và Bộ thu phát CAN (CAN Transceiver) chuyển đổi mức logic số (Tx/Rx) sang tín hiệu điện áp tương tự trên hai dây vi sai CAN-H và CAN-L. Xác suất lỗi của một thông điệp CAN được chứng minh bằng công thức: $\rho < 4.7 \times 10^{-11} \times \text{error rate}$.

Bảng so sánh thông số kỹ thuật giữa hai chuẩn mạng CAN:

Thông số kỹ thuật Mạng CAN tốc độ thấp (CAN Low Speed) Mạng CAN tốc độ cao (CAN High Speed)
Tốc độ truyền dữ liệu Tối đa 125 kbps 125 kbps đến 1 Mbps
Số lượng Node tối đa trên bus Từ 2 đến 20 Nodes Từ 2 đến 30 Nodes
Điện áp CAN-H (Trạng thái Dominant) 4.0 V 3.25 V
Điện áp CAN-L (Trạng thái Dominant) 1.0 V 1.5 V
Điện áp CAN-L (Trạng thái Recessive) 3.5 V 2.5 V
Mức điện áp cấp nguồn 5.0 V 5.0 V

Chương này phân tích 4 loại khung truyền:

  1. Khung dữ liệu (Data Frame): Gồm 7 trường:
    • Trường bắt đầu khung (SOF - 1 bit Dominant).
    • Trường phân xử (Arbitration Field): Khung chuẩn 11-bit Identifier + 1 bit RTR; Khung mở rộng 29-bit Identifier + 1 bit SRR + 1 bit IDE + 1 bit RTR.
    • Trường điều khiển (Control Field): Gồm các bit dự trữ ($r_0, r_1$) và mã độ dài dữ liệu (DLC - Data Length Code 4 bit, giá trị từ 0 đến 8 byte).
    • Trường dữ liệu (Data Field): Chứa từ 0 đến 8 bytes dữ liệu.
    • Trường kiểm tra lỗi (CRC Field): Gồm 15 bit mã CRC và 1 bit phân cách (CRC Delimiter).
    • Trường xác nhận (ACK Field): Gồm 1 bit ACK slot và 1 bit ACK Delimiter.
    • Trường kết thúc khung (End of Frame): Gồm 7 bit Recessive liên tiếp.
  2. Khung yêu cầu (Remote Frame): Có cấu trúc tương tự khung dữ liệu nhưng không chứa trường Data Field và có bit RTR ở mức Recessive.
  3. Khung báo lỗi (Error Frame): Gồm cờ báo lỗi (Error Flag: 6 bit Dominant cho lỗi chủ động, 6 bit Recessive cho lỗi bị động) và phần phân cách (Error Delimiter: 8 bit Recessive).
  4. Khung báo quá tải (Overload Frame): Tạo khoảng trễ giữa các khung truyền nhằm tránh nghẽn bus.

Ngoài ra, chương 3 giải thích chi tiết phương thức mã hóa NRZ-L và cơ chế Bit Stuffing: khi có 5 bit liên tiếp cùng mức logic (0 hoặc 1), bộ truyền sẽ tự động chèn thêm 1 bit có mức logic đảo ngược để tạo sườn xung cho các nút trên bus thực hiện quá trình tái đồng bộ (Resynchronization). Luật chèn bit không áp dụng cho khung báo lỗi và khung báo quá tải.

Chương 4: Phương pháp mã hóa dữ liệu chuẩn OBD-II

Chương 4 làm rõ cấu trúc của các tham số định danh PIDs (Parameter IDs) và tiến trình truyền nhận dữ liệu chẩn đoán sử dụng khung CAN 11-bit:

  • Cấu trúc gói tin truyền (Request): Máy chẩn đoán gửi gói dữ liệu gồm 8 bytes qua ID chẩn đoán chuẩn (0x7DF cho chế độ phát quảng bá Functional Addressing hoặc 0x7E0 cho ECM). Byte đầu tiên quy định số lượng byte dữ liệu hữu ích, byte tiếp theo chứa mã chế độ (Mode ID), byte thứ ba chứa mã tham số (PID ID), các byte còn lại được chèn giá trị mặc định (0xAA hoặc 0x55).
  • Cấu trúc gói tin nhận (Response): ECM phản hồi từ địa chỉ 0x7E8. Byte đầu tiên là độ dài, byte thứ hai là Mode + 0x40 (xác nhận phản hồi tích cực), byte thứ ba là PID, và các byte tiếp theo (Byte A, B, C, D) chứa giá trị đo thực tế.
  • Quy tắc giải mã DTCs trong Mode 03: Mỗi mã lỗi được đóng gói trong 2 bytes (Byte A và Byte B). Hai bit cao nhất của Byte A ($A_7, A_6$) xác định tiền tố hệ thống ($00 \rightarrow P$, $01 \rightarrow C$, $10 \rightarrow B$, $11 \rightarrow U$). Hai bit tiếp theo ($A_5, A_4$) xác định mã chuẩn hay mã nhà sản xuất. Bốn bit thấp ($A_3, A_2, A_1, A_0$) kết hợp với Byte B xác định các chữ số thập lục phân còn lại của mã lỗi.

Chương 5: Thiết kế ứng dụng đọc mã lỗi chẩn đoán OBD-II trên điện thoại thông minh qua Bluetooth bằng thiết bị ELM327

Chương cuối cùng trình bày quá trình hiện thực hóa đồ án:

  • Phần cứng ELM327 Bluetooth: Hoạt động như một bộ cầu nối (Bridge) chuyển đổi các giao thức chẩn đoán ô tô phức tạp thành tập lệnh AT đơn giản giao tiếp qua cổng nối tiếp không dây (Bluetooth SPP).
  • Quy trình phát triển trên Android Studio: Thiết lập cấu trúc dự án, cấu hình tệp AndroidManifest.xml với các quyền BLUETOOTH, BLUETOOTH_ADMIN và ACCESS_FINE_LOCATION.
  • Hiện thực hóa các Activity chức năng:
    • MainActivity: Quản lý danh sách kết nối và điều hướng chức năng.
    • Mod_1 Activity: Hiển thị thông số động cơ thời gian thực (tốc độ vòng tua động cơ, tốc độ xe, nhiệt độ nước làm mát...).
    • Mod_2 Activity: Đọc dữ liệu Freeze Frame khi lỗi được kích hoạt.
    • Mod_3 Activity: Quét và hiển thị danh sách các mã lỗi DTC đang lưu trong ECM.
    • Mod_4 Activity: Gửi lệnh xóa mã lỗi và xóa đèn Check Engine.
    • Mod_5, Mod_6, Mod_7 Activity: Đọc kết quả giám sát cảm biến oxy và các cảm biến thành phần.
    • Mod_9 Activity: Đọc các thông tin định danh của xe (VIN, CALID, CVN).
    • Terminal Activity: Cho phép người dùng gửi trực tiếp các chuỗi lệnh AT và OBD tùy biến để gỡ lỗi truyền thông.
  • Thử nghiệm chương trình: Tiến hành kết nối thực tế với module ELM327, kiểm tra độ ổn định của luồng dữ liệu, khả năng đọc và giải mã chính xác các mã lỗi mô phỏng trên xe.

Kết quả và đóng góp

Đồ án đã đạt được các kết quả kỹ thuật cụ thể sau:

  • Xây dựng thành công ứng dụng di động trên hệ điều hành Android có khả năng kết nối không dây ổn định với thiết bị ELM327 qua chuẩn Bluetooth.
  • Triển khai hoàn chỉnh giao diện và thuật toán giải mã dữ liệu cho hầu hết các chế độ chẩn đoán tiêu chuẩn theo SAE J1979: hiển thị thông số thời gian thực (Mode 01), đọc mã lỗi hiện diện (Mode 03), gửi lệnh xóa mã lỗi và tắt đèn MIL (Mode 04), đọc thông tin xe VIN/CALID/CVN (Mode 09) và màn hình giao tiếp dòng lệnh Terminal.
  • Hệ thống hóa chi tiết bảng tính toán thời gian bit, cấu trúc trường dữ liệu mạng CAN và phương pháp mã hóa/giải mã bit đối với các mã lỗi chẩn đoán DTC theo chuẩn SAE J2012.

Về mặt giải pháp, đồ án chứng minh tính khả thi của việc thay thế các máy chẩn đoán cầm tay chuyên dụng đắt tiền bằng sự kết hợp giữa thiết bị chuyển đổi ELM327 giá thành thấp và điện thoại thông minh cá nhân, giúp người dùng và kỹ thuật viên nhanh chóng kiểm tra tình trạng xe.

So với các nghiên cứu lý thuyết đơn thuần, đồ án đã tự thiết kế được phần mềm thực tế với giao diện chia tách tường minh theo từng Mode chẩn đoán của tiêu chuẩn quốc tế, cung cấp công cụ Terminal phục vụ công tác nghiên cứu sâu về các dòng lệnh AT của ELM327.

Hạn chế và hướng nghiên cứu tiếp

Dựa trên phạm vi và nội dung thực tế của đồ án, các hạn chế và hướng mở rộng được xác định:

  • Hạn chế:
    • Ứng dụng tập trung chủ yếu vào giao thức truyền thông ISO 15765-4 CAN 11-bit, chưa mở rộng kiểm thử toàn diện trên tất cả các chuẩn cũ hơn như ISO 9141-2, SAE J1850 PWM/VPW trên các dòng xe đời cũ.
    • Tốc độ làm tươi dữ liệu (Refresh rate) trong Mode 01 phụ thuộc vào tốc độ xử lý của chip ELM327 và giới hạn băng thông kết nối Bluetooth SPP.
    • Chưa tích hợp cơ sở dữ liệu mô tả chi tiết nguyên nhân và hướng dẫn sửa chữa mã lỗi bằng tiếng Việt chuyên sâu cho từng hãng xe cụ thể (mới dừng ở mức giải mã ký tự chuẩn SAE).
  • Hướng nghiên cứu tiếp:
    • Phát triển tính năng vẽ đồ thị dạng sóng (Graphing) theo thời gian thực cho các thông số động cơ trong Mode 01.
    • Mở rộng hỗ trợ định dạng khung truyền CAN mở rộng 29-bit (Extended ID) và các giao thức nâng cao của nhà sản xuất (OEM Enhanced PIDs).
    • Tích hợp tính năng lưu vết dữ liệu (Data Logging) ra tệp tin và phát triển hệ thống tra cứu nguyên nhân hư hỏng tự động.

Giá trị tham khảo

Tài liệu đồ án là nguồn tư liệu học thuật và kỹ thuật giá trị dành cho:

  • Sinh viên ngành Công nghệ Kỹ thuật Ô tô: Tham khảo cơ sở lý thuyết chuẩn hóa về hệ thống OBD-II, 10 chế độ chẩn đoán SAE J1979, cấu trúc giắc DLC SAE J1962 và phân loại mã lỗi SAE J2012.
  • Sinh viên và kỹ sư ngành Cơ điện tử / Điều khiển & Tự động hóa: Nghiên cứu sâu về tầng vật lý và tầng liên kết dữ liệu của mạng CAN Bus (ISO 11898), cấu trúc khung truyền (Data/Remote/Error/Overload Frame), cơ chế phân xử bus và quy tắc chèn bit (Bit Stuffing).
  • Người phát triển ứng dụng chẩn đoán di động: Tham khảo kiến trúc kết nối Bluetooth SPP trên Android Studio, quy trình xử lý chuỗi ký tự Hex từ module ELM327 và các công thức toán học giải mã dữ liệu PIDs.

Câu hỏi thường gặp

1. Mã lỗi chẩn đoán (DTC) theo chuẩn SAE J2012 gồm bao nhiêu ký tự và ký tự đầu tiên có ý nghĩa gì?
Mã lỗi DTC gồm 5 ký tự chữ và số. Ký tự đầu tiên quy định hệ thống gặp sự cố trên xe: chữ P (Powertrain) biểu thị hệ thống động cơ và truyền động, chữ B (Body) biểu thị hệ thống thân xe, chữ C (Chassis) biểu thị hệ thống khung gầm, và chữ U (Network Communication) biểu thị hệ thống mạng giao tiếp trên xe.

2. Mạng CAN High Speed và CAN Low Speed khác nhau như thế nào về tốc độ và mức điện áp trạng thái Dominant?
Theo số liệu trong đồ án, CAN Low Speed đạt tốc độ tối đa 125 kbps, hỗ trợ từ 2 đến 20 nodes; ở trạng thái Dominant, điện áp CAN-H là 4.0V và CAN-L là 1.0V. Trong khi đó, CAN High Speed đạt tốc độ từ 125 kbps đến 1 Mbps, hỗ trợ từ 2 đến 30 nodes; ở trạng thái Dominant, điện áp CAN-H là 3.25V và CAN-L là 1.5V.

3. Quy tắc chèn bit (Bit Stuffing) trong giao thức CAN hoạt động theo nguyên lý nào và không áp dụng cho các loại khung nào?
Theo giao thức CAN sử dụng mã hóa NRZ-L, khi bộ truyền phát hiện một chuỗi 5 bit liên tiếp có cùng mức logic, nó sẽ tự động chèn thêm 1 bit có mức logic đảo ngược vào dòng dữ liệu để tạo sườn chuyển mức giúp các nút nhận tái đồng bộ. Quy tắc Bit Stuffing không được áp dụng trong khung báo lỗi (Error Frame) và khung báo quá tải (Overload Frame).

4. Hai chế độ Mode 03 và Mode 04 trong tiêu chuẩn SAE J1979 thực hiện chức năng gì?
Mode 03 có chức năng đọc và hiển thị danh sách các mã lỗi chẩn đoán (DTCs) đã được xác nhận và lưu trữ trong bộ nhớ của ECM. Mode 04 thực hiện chức năng gửi lệnh xóa toàn bộ các mã lỗi chẩn đoán đã lưu trữ, xóa dữ liệu khung đóng băng (Freeze Frame) và tắt đèn chỉ báo lỗi động cơ (MIL/Check Engine).

Kết luận

Đồ án "Đọc mã lỗi chẩn đoán OBD-II trên điện thoại thông minh qua Bluetooth" của tác giả Nguyễn Quang Tín đã hệ thống hóa toàn diện cơ sở lý thuyết về hệ thống chẩn đoán ô tô OBD-II và chuẩn truyền thông mạng CAN ISO 11898. Tác giả đã thiết kế và triển khai thành công ứng dụng trên nền tảng Android Studio kết nối với thiết bị ELM327 qua Bluetooth, đáp ứng đầy đủ các chức năng đọc thông số thời gian thực, quét mã lỗi, xóa lỗi và truy vấn thông tin xe. Công trình mang tính thực tiễn cao, đóng góp một giải pháp chẩn đoán ô tô tiện lợi, chi phí thấp và là tài liệu tham khảo kỹ thuật hữu ích cho sinh viên chuyên ngành kỹ thuật ô tô và lập trình nhúng.