231 líneas
6.9 KiB
Markdown
231 líneas
6.9 KiB
Markdown
# OBD2 Bluetooth - Vehicle Diagnostic Application
|
|
|
|
A modern Android application for communicating with OBD2 ELM327 Bluetooth adapters to read vehicle diagnostics and send custom commands.
|
|
|
|
## Features
|
|
|
|
### 🔌 Bluetooth Connection
|
|
- Scan and connect to paired ELM327 Bluetooth devices
|
|
- Real-time connection status indicator
|
|
- Automatic ELM327 initialization
|
|
- Connection management
|
|
|
|
### 🚗 Vehicle Database
|
|
- Comprehensive database of vehicles and OBD signals
|
|
- Browse signals by vehicle make and model
|
|
- Search functionality for quick access
|
|
- Signal details including command, unit, frequency, and description
|
|
|
|
### 🔍 Quick Diagnostic
|
|
- Safe, read-only diagnostic test suite
|
|
- Common diagnostic parameters:
|
|
- Engine RPM
|
|
- Vehicle Speed
|
|
- Coolant Temperature
|
|
- Throttle Position
|
|
- Fuel Level
|
|
- Intake Air Temperature
|
|
- MAF Air Flow Rate
|
|
- Engine Load
|
|
- Automatic response parsing
|
|
- Command history with timestamps
|
|
|
|
### ⌨️ Custom Commands
|
|
- Send custom OBD2 commands
|
|
- Command editing before sending
|
|
- Response history
|
|
- Raw and parsed response display
|
|
- Common command shortcuts
|
|
- Resend functionality
|
|
|
|
### ⚠️ Safety Features
|
|
- Warning dialogs before sending any command
|
|
- Clear responsibility notices
|
|
- Distinction between safe and potentially dangerous commands
|
|
- User must explicitly accept risks
|
|
|
|
## Architecture
|
|
|
|
### Technology Stack
|
|
- **Kotlin** - Modern programming language for Android
|
|
- **Jetpack Compose** - Modern declarative UI framework
|
|
- **Material Design 3** - Latest Material Design implementation
|
|
- **Room Database** - SQLite ORM for vehicle data
|
|
- **Coroutines & Flow** - Asynchronous programming
|
|
- **MVVM Architecture** - Clean architecture pattern
|
|
- **Navigation Component** - Type-safe navigation
|
|
|
|
### Project Structure
|
|
```
|
|
app/
|
|
├── data/
|
|
│ ├── bluetooth/
|
|
│ │ └── BluetoothService.kt # Bluetooth communication
|
|
│ ├── database/
|
|
│ │ ├── entities/ # Room entities
|
|
│ │ ├── dao/ # Data Access Objects
|
|
│ │ ├── dto/ # Data Transfer Objects
|
|
│ │ └── ObdDatabase.kt # Room database
|
|
│ ├── obd/
|
|
│ │ └── ObdCommands.kt # OBD2 command definitions
|
|
│ └── repository/
|
|
│ └── ObdRepository.kt # Data repository
|
|
├── ui/
|
|
│ ├── components/
|
|
│ │ └── CommonComponents.kt # Reusable UI components
|
|
│ ├── navigation/
|
|
│ │ └── Screen.kt # Navigation routes
|
|
│ ├── screens/
|
|
│ │ ├── HomeScreen.kt # Main dashboard
|
|
│ │ ├── BluetoothScreen.kt # Device connection
|
|
│ │ ├── VehicleSelectionScreen.kt # Vehicle browser
|
|
│ │ ├── DiagnosticScreen.kt # Quick diagnostic
|
|
│ │ └── CustomCommandScreen.kt # Custom commands
|
|
│ ├── theme/ # App theming
|
|
│ └── viewmodel/
|
|
│ ├── MainViewModel.kt # Main app state
|
|
│ └── VehicleViewModel.kt # Vehicle data state
|
|
└── MainActivity.kt # App entry point
|
|
```
|
|
|
|
## Database Schema
|
|
|
|
### Tables
|
|
- **brands** - Vehicle manufacturers
|
|
- **models** - Vehicle models
|
|
- **generations** - Vehicle generations
|
|
- **obd_signals** - OBD command signals
|
|
- **dtc_codes** - Diagnostic Trouble Codes
|
|
|
|
### Views
|
|
- **vehicles_view** - Vehicles with signal counts
|
|
- **generations_view** - Generations with vehicle info
|
|
- **signals_view** - Signals with vehicle info
|
|
- **database_stats** - Database statistics
|
|
|
|
## Bluetooth Communication
|
|
|
|
### ELM327 Protocol
|
|
The app communicates with ELM327 adapters using AT commands and OBD2 PIDs:
|
|
|
|
#### Initialization Commands
|
|
- `ATZ` - Reset device
|
|
- `ATE0` - Echo off
|
|
- `ATL0` - Line feeds off
|
|
- `ATS0` - Spaces off
|
|
- `ATSP0` - Set protocol to automatic
|
|
|
|
#### Common OBD2 PIDs
|
|
- `010C` - Engine RPM
|
|
- `010D` - Vehicle Speed
|
|
- `0105` - Coolant Temperature
|
|
- `0111` - Throttle Position
|
|
- `012F` - Fuel Level
|
|
- And many more...
|
|
|
|
### Response Parsing
|
|
The app automatically parses common PID responses into human-readable format with appropriate units.
|
|
|
|
## Permissions
|
|
|
|
### Required Permissions
|
|
- **BLUETOOTH** (API ≤ 30) - Bluetooth communication
|
|
- **BLUETOOTH_ADMIN** (API ≤ 30) - Bluetooth management
|
|
- **BLUETOOTH_CONNECT** (API ≥ 31) - Connect to devices
|
|
- **BLUETOOTH_SCAN** (API ≥ 31) - Scan for devices
|
|
|
|
## Setup & Installation
|
|
|
|
### Prerequisites
|
|
- Android Studio Hedgehog or newer
|
|
- Android SDK 24+ (Android 7.0+)
|
|
- ELM327 Bluetooth adapter
|
|
- Vehicle with OBD2 port
|
|
|
|
### Build Instructions
|
|
1. Clone the repository
|
|
2. Open project in Android Studio
|
|
3. Sync Gradle dependencies
|
|
4. Add your vehicle database to `app/src/main/assets/obd_database.db`
|
|
5. Build and run on device (Bluetooth requires physical device)
|
|
|
|
### Database Setup
|
|
Place your SQLite database file with the required schema in:
|
|
```
|
|
app/src/main/assets/obd_database.db
|
|
```
|
|
|
|
## Usage
|
|
|
|
### Connecting to Vehicle
|
|
1. Pair your ELM327 adapter in Android Bluetooth settings
|
|
2. Open the app and navigate to "Bluetooth Connection"
|
|
3. Select your ELM327 device from paired devices list
|
|
4. Wait for connection confirmation
|
|
|
|
### Running Diagnostics
|
|
1. Ensure Bluetooth connection is active
|
|
2. Navigate to "Quick Diagnostic"
|
|
3. Tap "Run Test" button
|
|
4. Review diagnostic results
|
|
|
|
### Sending Custom Commands
|
|
1. Ensure Bluetooth connection is active
|
|
2. Navigate to "Custom Commands"
|
|
3. Enter OBD2 command (e.g., "010C")
|
|
4. Read and accept warning dialog
|
|
5. View response
|
|
|
|
### Browsing Vehicle Database
|
|
1. Navigate to "Vehicle Database"
|
|
2. Search or browse for your vehicle
|
|
3. Select vehicle to view available signals
|
|
4. Tap "Send" on any signal to execute (requires connection)
|
|
|
|
## Safety & Disclaimer
|
|
|
|
⚠️ **IMPORTANT**: This application allows direct communication with your vehicle's systems.
|
|
|
|
### Warnings
|
|
- Incorrect commands can damage your vehicle
|
|
- Some commands may void warranties
|
|
- Users are fully responsible for any consequences
|
|
- Read-only commands are generally safe
|
|
- Write commands require expert knowledge
|
|
|
|
### Best Practices
|
|
- Start with the safe diagnostic test
|
|
- Research commands before sending
|
|
- Never send commands while driving
|
|
- Keep a record of sent commands
|
|
- Consult professional if unsure
|
|
|
|
## Contributing
|
|
|
|
Contributions are welcome! Please:
|
|
1. Fork the repository
|
|
2. Create a feature branch
|
|
3. Follow Kotlin coding conventions
|
|
4. Add documentation for new features
|
|
5. Submit a pull request
|
|
|
|
## License
|
|
|
|
This project is provided as-is for educational purposes. Use at your own risk.
|
|
|
|
## Support
|
|
|
|
For issues, questions, or contributions, please open an issue on the project repository.
|
|
|
|
## Acknowledgments
|
|
|
|
- ELM327 protocol documentation
|
|
- OBD2 standard specifications
|
|
- Android Jetpack Compose team
|
|
- Material Design team
|
|
|
|
---
|
|
|
|
**Note**: This application is designed for diagnostic and educational purposes. Always prioritize safety and consult professional mechanics for vehicle repairs.
|
|
|