

The SparkFun OBD-II UART (Manufacturer Part ID: WIG-09555) is a compact interface module designed to facilitate communication with OBD-II compliant vehicles. It provides a UART interface, enabling users to access vehicle diagnostics, sensor data, and other critical information from the vehicle's onboard computer. This module is ideal for automotive diagnostics, data logging, and vehicle performance monitoring.








The following table outlines the key technical details of the SparkFun OBD-II UART module:
| Parameter | Specification |
|---|---|
| Supply Voltage | 5V (via UART interface or external power source) |
| Communication Protocol | UART (9600 bps default, configurable) |
| OBD-II Protocol Support | ISO15765-4 (CAN), ISO9141-2, ISO14230-4 (KWP2000), SAE J1850 VPW, SAE J1850 PWM |
| Operating Temperature | -40°C to +85°C |
| Dimensions | 1.8" x 1.2" (45.7mm x 30.5mm) |
| Connector Type | DB9 (OBD-II) and 6-pin UART header |
The module features a 6-pin UART header for interfacing with microcontrollers or other devices. The pin configuration is as follows:
| Pin | Name | Description |
|---|---|---|
| 1 | GND | Ground |
| 2 | VCC | Power supply input (5V) |
| 3 | TX | UART Transmit (data from module to host) |
| 4 | RX | UART Receive (data from host to module) |
| 5 | RTS | Request to Send (optional, for flow control) |
| 6 | CTS | Clear to Send (optional, for flow control) |
VCC pin to a 5V power source and the GND pin to ground.TX pin of the module to the RX pin of your microcontroller, and the RX pin of the module to the TX pin of your microcontroller.RTS and CTS pins for hardware flow control.The SparkFun OBD-II UART module can be easily interfaced with an Arduino UNO. Below is an example code snippet to read data from the module:
#include <SoftwareSerial.h>
// Define RX and TX pins for SoftwareSerial
SoftwareSerial obdSerial(10, 11); // RX = pin 10, TX = pin 11
void setup() {
Serial.begin(9600); // Initialize hardware serial for debugging
obdSerial.begin(9600); // Initialize OBD-II UART communication
Serial.println("Initializing OBD-II UART...");
delay(1000); // Allow time for initialization
}
void loop() {
// Check if data is available from the OBD-II module
if (obdSerial.available()) {
String obdData = ""; // Variable to store incoming data
// Read all available data from the module
while (obdSerial.available()) {
char c = obdSerial.read();
obdData += c;
}
// Print the received data to the Serial Monitor
Serial.println("OBD-II Data: " + obdData);
}
delay(500); // Delay to avoid flooding the Serial Monitor
}
No Data Received from the Module
TX and RX pins are correctly connected.Module Not Powering On
VCC pin is receiving a stable 5V supply.Unrecognized OBD-II Protocol
Data Corruption or Incomplete Data
RTS and CTS pins.Q: Can this module be used with a Raspberry Pi?
A: Yes, the module can be connected to a Raspberry Pi via its UART pins. Ensure proper voltage level shifting if required.
Q: How do I change the UART baud rate?
A: The baud rate can be configured by sending specific AT commands to the module. Refer to the manufacturer's datasheet for details.
Q: Is the module compatible with electric vehicles (EVs)?
A: The module can access OBD-II data from EVs if they support standard OBD-II protocols. However, some EVs may use proprietary protocols.
Q: Can I use this module for real-time data logging?
A: Yes, the module is suitable for real-time data logging when paired with a microcontroller or computer.
By following this documentation, users can effectively integrate the SparkFun OBD-II UART module into their projects and access valuable vehicle data.