- 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
65 lines
2.6 KiB
Markdown
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`.*
|
|
|