OBD2-Diagnostic-UI is a premium, high-performance web interface designed for real-time vehicle diagnostics. Optimized for embedded web servers (ESP32, ESP8266, STM32), it provides a sleek, responsive, and professional dashboard for monitoring vehicle health, reading/clearing fault codes, and performance testing.
You can also see my other car projects:
- Тhis project is for BMW with I/K bus system.
- Тhis project is for Cars with CAN Bus.
- Тhis project is for Cars with ISO9141 and ISO14230 protocols.
- Тhis is my OBD2 CAN Bus Communication Library for Arduino IDE.
- Тhis is my OBD2 K-Line Communication Library for Arduino IDE.
- Тhis project is for VAG Cars with KW1281 protocol.
- This is Web based UI for OBD2 Diagnostic
- 📊 Real-Time Monitoring: Live visualization of PIDs (RPM, Speed, Load, etc.) with custom selection.
⚠️ DTC Management: Read and clear Diagnostic Trouble Codes (DTCs) with descriptive meanings.- ❄️ Freeze Frame: View engine sensor snapshots taken at the exact moment a fault occurred.
- ⏱️ Performance Test: Automated 0-100 KM/H timer with precision measurement.
- 🆔 Vehicle Information: Retrieve VIN, Calibration IDs, and supported protocol details.
- ⚙️ Advanced Configuration:
- Wireless Network Settings (SSID/Password/Static IP).
- OBD-II Protocol Selection (ISO9141, KWP2000, CAN 11/29bit).
- Dark Mode support for night-time diagnostics.
- 🚀 Embedded Optimization: Pre-minified and gzipped assets for extremely low memory footprint.
- Frontend: HTML5, CSS3 (Modern UI with Glassmorphism), Vanilla JavaScript (ES6+).
- Communication: WebSockets for low-latency live streaming & REST API for configuration.
- Backend Compatibility: Designed for ESP32/STM32 running ELM327-compatible firmware.
The UI operates as a standalone frontend communicating with the hardware via WebSockets.
The hardware (ESP32) should broadcast the following JSON periodically to update the UI:
{
"vehicleStatus": true,
"Voltage": 14.1,
"LiveData": {
"Engine RPM": { "value": 850, "unit": "RPM" },
"Coolant Temperature": { "value": 92, "unit": "°C" },
"Manifold Pressure": { "value": 34, "unit": "kPa" }
},
"DTCs": "P0101, P0300",
"FreezeFrame": {
"RPM": { "value": 2450, "unit": "RPM" },
"Vehicle Speed": { "value": 45, "unit": "km/h" }
},
"Speed": 0,
"VIN": "1ABCDEFG12345678",
"ID": "CALIB-ID-88220",
"IDNum": "V2.1.0",
"selectedProtocol": "Automatic",
"connectedProtocol": "11b500",
"SupportedLiveData": {
"Coolant": { "pid": "0105" },
"RPM": { "pid": "010C" }
},
"DesiredLiveData": ["0105", "010C"]
}Commands sent from the UI to the hardware:
page[0-6]: Notify hardware of the current active menu.clear_dtc: Request DTC memory clearance.beep: Trigger audible feedback on the device.
- Clone the repository.
- Ensure you have the
build_spiffs.batscript to generate the SPIFFS image. - Upload the contents of the
data/folder (minified and gzipped) to your ESP32's flash memory. - Implement a WebSocket server on the ESP32 that handles the JSON payload described above.
If you enjoy my projects and want to support me, you can do so through the links below:
For information, job offers, collaboration, sponsorship, or purchasing my devices, you can contact me via email.
📧 Email: muksin.muksin04@gmail.com