

The OBD-II UART Adapter by Freematics is a versatile device designed to interface with a vehicle's On-Board Diagnostics (OBD-II) system. It connects to the OBD-II port of a vehicle and communicates with the onboard diagnostics system via a UART (Universal Asynchronous Receiver-Transmitter) interface. This adapter enables users to retrieve real-time vehicle data, perform diagnostics, and monitor performance metrics.








The following table outlines the key technical details of the Freematics OBD-II UART Adapter:
| Specification | Details |
|---|---|
| Input Voltage | 9V to 16V (powered via the OBD-II port) |
| Communication Interface | UART (3.3V logic level) |
| Supported Protocols | ISO 15765-4 (CAN), ISO 14230-4 (KWP2000), ISO 9141-2, SAE J1850 PWM/VPW |
| Baud Rate | Configurable (default: 9600 bps) |
| Operating Temperature | -40°C to 85°C |
| Dimensions | 48mm x 25mm x 15mm |
The adapter features a UART interface for communication. Below is the pinout for the UART connector:
| Pin | Name | Description |
|---|---|---|
| 1 | VCC | Power input for the UART interface (3.3V or 5V, depending on the microcontroller) |
| 2 | GND | Ground connection |
| 3 | TXD | Transmit data (output from the adapter) |
| 4 | RXD | Receive data (input to the adapter) |
Below is an example Arduino sketch to retrieve and display vehicle speed using the OBD-II UART Adapter:
#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 Serial Monitor
obdSerial.begin(9600); // Initialize OBD-II UART communication
// Send initialization command to the OBD-II adapter
obdSerial.println("ATZ"); // Reset the adapter
delay(1000); // Wait for the adapter to reset
// Set the protocol to automatic
obdSerial.println("ATSP0");
delay(1000);
Serial.println("OBD-II Adapter Initialized");
}
void loop() {
// Request vehicle speed (PID 0D)
obdSerial.println("010D");
delay(100); // Wait for the response
// Read the response from the adapter
while (obdSerial.available()) {
char c = obdSerial.read();
Serial.print(c); // Print the response to the Serial Monitor
}
delay(1000); // Wait before sending the next request
}
10 and 11 with the appropriate pins if using different connections.No Response from the Adapter:
Incorrect or Garbled Data:
Adapter Not Powering On:
Q: Can this adapter work with all vehicles?
A: The adapter supports most vehicles manufactured after 1996 that comply with OBD-II standards. However, compatibility depends on the specific protocol used by the vehicle.
Q: How do I change the baud rate of the adapter?
A: Use the ATBRx command, where x specifies the desired baud rate. Refer to the Freematics user manual for details.
Q: Can I use this adapter with a Raspberry Pi?
A: Yes, the adapter can be connected to a Raspberry Pi via its UART interface. Ensure proper voltage level conversion if needed.
Q: Is it safe to leave the adapter connected to the vehicle?
A: While the adapter has low power consumption, it is recommended to disconnect it when the vehicle is not in use to prevent battery drain.