obd2_gauge/emulator/README.md
Sebastian Nieto d124d013ab feat(ui): transiciones fluidas de 4 pantallas, integracion GPS y buffer de transicion persistente sin fragmentacion de memoria
- Buffer de transicion persistente (sprTrans) de 25KB asignado una sola vez en setup() para evitar fallos de memoria heap contigua
- Eliminacion de carga y descarga dinamica de fuentes en renderPage2ToSprite durante las transiciones para evitar fugas de RAM
- Timeout de seguridad por hardware de 250ms en waitForTouchRelease() para prevenir bloqueos por ruido en la lamina resistiva
- Pantallas 2 y 3: Reloj atomico GPS con DSEG7 de 80pt y Telemetria satelital completa (rumbo, satelites, altitud, coordenadas)
- Documentacion de conexion y pines para modulo GPS N32+/U-blox
2026-10-11 18:33:03 -03:00

65 lines
2.6 KiB
Markdown

# Emulador Bluetooth OBD-II / ELM327 v1.5
Script en Python que emula un adaptador OBD-II Bluetooth ELM327 v1.5 completo y la ECU del vehículo para realizar pruebas en banco con la pantalla ESP32 CYD sin necesidad de conectarse a un auto real.
## Requisitos en Linux (Ubuntu/Debian)
- BlueZ (stack Bluetooth de Linux)
- Python 3 con soporte D-Bus y GLib:
```bash
sudo apt install python3-dbus python3-gi
```
## Uso
1. Configura el adaptador Bluetooth de la PC/notebook para que sea visible como `OBDII`:
```bash
sudo hciconfig hci0 name "OBDII"
sudo hciconfig hci0 piscan
```
2. Ejecuta el emulador:
```bash
# Modo normal (ciclo dinámico con fase ECO de 10s):
python3 emulator/obd2_emulator.py
# O modo ECO fijo permanente (RPM 2250, Carga 58%):
python3 emulator/obd2_emulator.py --eco
```
*Nota: En la terminal podés presionar 'e' + Enter para activar ECO fijo o 'c' + Enter para volver al ciclo.*
3. Enciende la pantalla ESP32 CYD. Se conectará automáticamente por Bluetooth SPP (Canal 1 RFCOMM).
4. El emulador responderá a los PIDs estándar de OBD2:
- `0105`: Temperatura de Refrigerante (ECT)
- `010C`: Revoluciones por minuto (RPM)
- `010D`: Velocidad (Speed)
- `0142`: Voltaje de batería PCM
- `010B`: Presión absoluta del múltiple (MAP)
- `0104`: Carga del motor (Engine Load)
- `221E1C` / `015C`: Temperatura de aceite y fluido de transmisión Ford
---
## Simulación de GPS NMEA por USB Serie (/dev/ttyUSB0)
La pantalla CYD recibe datos GPS a través de su puerto UART0 (`Serial` a 9600 bps), el cual está conectado internamente al conector USB (chip CH340). Esto permite simular un módulo GPS real directamente desde la PC **sin tocar ni una sola línea del firmware del ESP32**.
### Opción A: Simulador GPS Independiente (Solo GPS sin Bluetooth)
Ideal para probar las pantallas de telemetría GPS, reloj satelital, brújula y velocímetro sin necesidad de Bluetooth:
```bash
# Modo dinámico (aceleración, velocidad crucero y frenado automático):
python3 emulator/gps_emulator.py
# O con velocidad fija en km/h:
python3 emulator/gps_emulator.py --speed 75.0
```
### Opción B: Integrado con el Emulador OBD-II
Si ejecutas `emulator/obd2_emulator.py` con la CYD conectada por USB, detecta automáticamente `/dev/ttyUSB0` y transmite las tramas NMEA ($GPRMC, $GPGGA, $GPVTG) **sincronizadas exactamente con la velocidad del motor/ECU**:
```bash
python3 emulator/obd2_emulator.py
```
*Si deseas desactivar la simulación GPS al correr el emulador OBD-II, puedes usar `python3 emulator/obd2_emulator.py --no-gps`.*