ofxAutomobile is an openFrameworks add-on for communicating with vehicles using the OBD2 (On-Board Diagnostics) protocol. It provides a simple interface for connecting to OBD2 adapters (such as ELM327) over a serial connection and sending OBD2 commands to query various vehicle parameters, such as engine speed, coolant temperature, and throttle position.
Method | Description |
---|---|
bool setup(const std::string& port_name, int baud_rate = 115200) |
Initializes the OBD2 connection with the specified serial port and optional baud rate. Returns true on success, false otherwise. |
bool query(const std::string& command, std::string& response) |
Sends an OBD2 command and reads the response. Returns true on success, false otherwise. |
tools/obd2_simulator.py
simulates an OBD2 adapter using the ELM327 command set. It listens for OBD2 commands on a specified serial port and sends random responses for a few common OBD2 PIDs.
- Python 3.6 or higher
- pyserial
- Install the required
pyserial
library:
$ pip install pyserial
Run the OBD2 simulator by specifying the port and baud rate as command-line arguments:
$ python tools/obd2_simulator.py --port /dev/ttyVUSB2 --baudrate 115200
Replace /dev/ttyVUSB2
with the desired virtual serial port and 115200
with the desired baud rate.
-p, --port
: Required. Serial port for the OBD2 simulator.-b, --baudrate
: Optional. Baud rate for the OBD2 simulator (default: 115200).
The simulator currently supports the following OBD2 commands:
ATZ
: Reset command0105
: Engine Coolant Temperature010C
: Engine RPM010D
: Vehicle Speed0111
: Throttle Position
You can expand the handle_command
method in the obd2_simulator.py
script to support more OBD2 commands as needed.