Awesome
ESP32 OBD-II Emulator
Open-source OBD-II emulator based on an ESP32 + CAN transceiver IC, controllable via WiFi through a simple web UI (or via API).
Supported protocols
- ISO 15765-4 CAN (11 bit, 500 Kbps)
Supported modes & PIDs
Mode | PID | Description |
---|---|---|
0x01 | 0x0C | RPM |
0x01 | 0x0D | Vehicle speed |
0x01 | 0x11 | Throttle position |
0x09 | 0x02 | Vehicle Identification Number (VIN) |
Usage
- Connect to the WiFi network
ESP32-OBD2
(with password88888888
) - Navigate to
192.168.4.1
- Enjoy :)
Hardware
- ESP32-WROOM-32
- SN65HVD230 (or any other CAN transceiver IC)
- Serial->USB adapter
- Power supply (3.3V)
Connections
- IO 4 -> CAN RX
- IO 5 -> CAN TX
Flash / Install (via esptool)
- Download the latest release binaries
- Flash (app, bootloader, FAT filesystem):
esptool.py write_flash --flash_mode dio --flash_freq 40m --flash_size detect 0x1000 bootloader.bin 0x10000 obd2-emu.bin 0x8000 partitions.bin 0x110000 fatfs_image.img
Build
- Install the Espressif IoT Development Framework
- Clone this repo:
git clone ...
- (Optional) Configure:
make menuconfig
- Build:
make all
- Flash:
make flash
- Build & flash FAT image:
make flashfatfs
Note: You might want to change some config values, for example: serial flasher, baud rate, pins, etc.
API
PATCH /api/vehicle
- Content-Type: x-www-form-urlencoded
- Data:
name
- speed
- rpm
- throttle
- vin
value
- Example (CURL):
curl -XPATCH -H 'Content-Type: application/x-www-form-urlencoded' -d 'name=speed&value=50' '/api/vehicle'