obd2_gauge/emulator
sebastian 674c044dd1 feat(ui,theme): soporte completo de temas y colores individuales en modo Yapa
- Reemplazo de tipografías por renderizado anti-aliased suave y sin parpadeo (DSEG7 y bitmaps AA)
- Títulos, unidades y guiones ('---') adaptados dinámicamente al tema de color activo
- Modo Yapa con color pastel distintivo por cada letra, dígito y símbolo en velocímetro y temperaturas
- Indicador ECO sobre RPM e icono GPS dinámico en velocímetro según origen de datos
- Temperaturas interior y exterior redondeadas a números enteros
2026-10-14 16:25:30 -03:00
..
gps_emulator.py feat(ui): transiciones fluidas de 4 pantallas, integracion GPS y buffer de transicion persistente sin fragmentacion de memoria 2026-10-11 18:33:03 -03:00
obd2_emulator.py feat(ui,theme): soporte completo de temas y colores individuales en modo Yapa 2026-10-14 16:25:30 -03:00
README.md feat(ui): transiciones fluidas de 4 pantallas, integracion GPS y buffer de transicion persistente sin fragmentacion de memoria 2026-10-11 18:33:03 -03:00

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:
    sudo apt install python3-dbus python3-gi
    

Uso

  1. Configura el adaptador Bluetooth de la PC/notebook para que sea visible como OBDII:

    sudo hciconfig hci0 name "OBDII"
    sudo hciconfig hci0 piscan
    
  2. Ejecuta el emulador:

    # 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:

# 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:

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.