

On-Board Diagnostics II (OBDII) is a standardized system implemented in most vehicles manufactured after 1996. It is designed to monitor and report on the performance of the engine, emissions system, and other critical vehicle components. OBDII provides access to diagnostic trouble codes (DTCs) and real-time data, enabling mechanics and enthusiasts to identify and resolve issues efficiently.








The OBDII system communicates using a standardized connector and protocol. Below are the key technical details:
The OBDII connector is a 16-pin J1962 female connector, typically located under the dashboard of the vehicle. The pinout is as follows:
| Pin | Name | Description |
|---|---|---|
| 1 | Manufacturer Specific | Reserved for OEM-specific functions. |
| 2 | J1850 Bus+ | Positive line of the SAE J1850 communication protocol. |
| 3 | Manufacturer Specific | Reserved for OEM-specific functions. |
| 4 | Chassis Ground | Ground connection for the vehicle's chassis. |
| 5 | Signal Ground | Ground connection for signal reference. |
| 6 | CAN High (J-2284) | High line of the CAN bus communication protocol. |
| 7 | ISO 9141-2 K-Line | K-Line for ISO 9141-2 and ISO 14230-4 (KWP2000) communication protocols. |
| 8 | Manufacturer Specific | Reserved for OEM-specific functions. |
| 9 | Manufacturer Specific | Reserved for OEM-specific functions. |
| 10 | J1850 Bus- | Negative line of the SAE J1850 communication protocol. |
| 11 | Manufacturer Specific | Reserved for OEM-specific functions. |
| 12 | Manufacturer Specific | Reserved for OEM-specific functions. |
| 13 | Manufacturer Specific | Reserved for OEM-specific functions. |
| 14 | CAN Low (J-2284) | Low line of the CAN bus communication protocol. |
| 15 | ISO 9141-2 L-Line | L-Line for ISO 9141-2 and ISO 14230-4 (KWP2000) communication protocols. |
| 16 | Battery Power | Provides 12V power from the vehicle's battery. |
OBDII supports multiple communication protocols, depending on the vehicle manufacturer:
Below is an example of how to interface an OBDII adapter with an Arduino UNO using the ELM327 module:
#include <SoftwareSerial.h>
// Define RX and TX pins for SoftwareSerial
SoftwareSerial mySerial(10, 11); // RX, TX
void setup() {
Serial.begin(9600); // Initialize Serial Monitor
mySerial.begin(38400); // Initialize ELM327 communication
Serial.println("Initializing OBDII...");
mySerial.println("ATZ"); // Reset ELM327
delay(1000);
mySerial.println("ATE0"); // Disable echo
delay(1000);
mySerial.println("0100"); // Request supported PIDs
}
void loop() {
if (mySerial.available()) {
// Read data from ELM327 and print to Serial Monitor
while (mySerial.available()) {
char c = mySerial.read();
Serial.print(c);
}
Serial.println();
}
}
10 and 11 with the appropriate pins if using different connections.No Communication with Vehicle
No Data Received
Adapter Drains Battery
Can I use OBDII with any vehicle?
What software can I use with OBDII?
Is it safe to use OBDII while driving?
By following this documentation, users can effectively utilize the OBDII system for diagnostics, monitoring, and custom applications.