obd2_gauge/emulator
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
..
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): transiciones fluidas de 4 pantallas, integracion GPS y buffer de transicion persistente sin fragmentacion de memoria 2026-10-11 18:33:03 -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.