- Revertir dibujo bitmap digital 7-segmentos de °C a la tipografia original (fuente 2 en 0xC618) - Restaurar posicion exacta original de los valores de temperatura (x: cardX + 262, y: cardY + 22) - Liberar 1.5KB de memoria SRAM eliminando s_unitRenderBuf y tabla s_dsegUnitAlpha |
||
|---|---|---|
| .github | ||
| emulator | ||
| hardware | ||
| sketch/obd2_gauge | ||
| .gitignore | ||
| diagrama_conexion_ds18b20.png | ||
| gps_icon.jpg | ||
| gps_icon.svg | ||
| gps_pinout.jpg | ||
| pinout_gps.png | ||
| pinout_gps_foto_anotada.png | ||
| README.md | ||
Cluster Digital OBD-II ESP32 CYD (Ford Ka Endura 1.3)
Instrumento digital automotriz de alta precisión basado en la placa ESP32 CYD (ESP32-2432S028) con pantalla táctil resistiva TFT de 2.8" (320x240). Se comunica de forma inalámbrica vía Bluetooth SPP con un escáner ELM327 v1.5 conectado al puerto OBD-II del vehículo.
El sistema fue diseñado y calibrado a medida para el motor Ford Ka Endura-E 1.3 (y es compatible con instalaciones de GNC).
Características Principales
1. Cuadrante de 4 Instrumentos Simultáneos
- Temperatura de Refrigerante (PID 0105): Rango 60°C a 120°C. Color dinámico (verde en rango normal, amarillo de advertencia y rojo a partir de 110°C con alarma sonora y visual).
- Velocidad del Vehículo (Cálculo GPS Satelital + Fallback OBD-II): Velocidad real de avance medida por satélite con precisión milimétrica (
gps.speed.kmph()). Muestra el distintivo[ GPS ]en el cuadrante. Si se pierde señal (túnel o estacionamiento subterráneo), conmuta de forma transparente al sensor del vehículo (PID 010D). - Revoluciones por Minuto (PID 010C): Rango 0 a 6.000 RPM.
- Voltaje de Batería (Comando ATRV): Rango 10.0V a 16.0V en tiempo real directo del borne del ELM327.
2. Modo Pantalla Completa (Full Screen)
- Tocando cualquier cuadrante, la pantalla se expande a vista completa para ese parámetro.
- Escala curvada de 20 bloques con antialiasing de subpíxel para bordes ultra suaves sin efecto serrucho.
- Tipografía digital retrofuturista DSEG7 Modern 80pt con coma decimal integrada y actualización veloz sin parpadeo (flicker-free).
- Alarma visual sincronizada: el icono, el arco y el título parpadean en rojo de forma simultánea ante sobretemperatura o sobretensión.
3. Badge Táctico de Máxima Eficiencia [ ECO ]
- Calcula en tiempo real el punto óptimo de funcionamiento y entrega de torque (Sweet Spot) para el Ford Ka Endura 1.3:
- RPM: Entre 1.900 y 2.550 RPM (pico de par motor y mejor rendimiento volumétrico).
- Carga de Motor (PID 0104 en segundo plano): Entre 45% y 82% (apertura de mariposa con mínimas pérdidas por bombeo, antes del enriquecimiento a plena carga).
- Diseño táctico: Pastilla rectangular con bordes redondeados en verde esmeralda brillante (
[ ECO ]) que se ilumina en el cuadrante de RPM y en el encabezado de pantalla completa. - Al salir del rango óptimo, se apaga de inmediato restaurando de forma invisible el degradado del fondo.
4. Pantalla Tri-Temperatura (Página 2)
- Tres tarjetas tácticas con barra de progreso y lectura numérica digital:
- Refrigerante: Lectura en vivo de ECU OBD-II.
- Habitáculo (Interior): Sensor digital Dallas DS18B20 #1 en bus 1-Wire (GPIO 22).
- Ambiente (Exterior): Sensor digital Dallas DS18B20 #2 en bus 1-Wire (GPIO 22).
5. Pantalla Reloj Digital GPS & Fecha (Página 3)
- Hora Satelital Atómica: Dígitos gigantes en tipografía DSEG7 Modern 80pt perfectamente centrados en la tarjeta superior, sincronizados con satélites GPS en huso horario UTC-3 (Argentina).
- Dos Puntos Parpadeantes: Pulso rítmico continuo entre horas y minutos.
- Badge Calendario y Fecha: Estructurado en dos bloques:
- Badge Calendario (Izquierda): Cabecera en color de tema con el mes abreviado a 3 letras (
SEP,OCT,NOV...) y número del día en 34pt 7 segmentos. - Información Textual (Derecha): Día de la semana completo en mayúsculas (
VIERNES), línea divisoria bitono y año (2026).
- Badge Calendario (Izquierda): Cabecera en color de tema con el mes abreviado a 3 letras (
6. Pantalla de Telemetría GPS y Navegación (Página 4)
- Altitud (msnm): Elevación respecto al nivel del mar en metros con lectura digital en 34pt.
- Rumbo y Brújula: Dirección de avance en grados (0° a 359°) y punto cardinal completo en tiempo real (
NORTE,NORESTE,ESTE,SURESTE,SUR,SUROESTE,OESTE,NOROESTE). - Satélites GPS en Grande: Icono satelital vectorizado a gran escala, número de satélites en seguimiento en 34pt, índice de precisión HDOP y diagnóstico de señal.
- Coordenadas Geográficas: Latitud y Longitud con precisión de 5 decimales.
- Transiciones Fluidas: Navegación táctil deslizante (Swipe) o desvanecida (Fade) entre las 4 pantallas mediante indicador de páginas
[● ○ ○ ○],[○ ● ○ ○],[○ ○ ● ○],[○ ○ ○ ●].
7. Gestión Inteligente de Energía para GPS (Comandos UBX)
- Integración total con el sistema de Auto-Sleep:
- Al suspender el sistema por inactividad o parada de motor, transmite la trama binaria
UBX-RXM-PMREQpara apagar la etapa de radiofrecuencia del módulo GPS (consumo inferior a 0.5 mA). - Al reactivarse por toque en pantalla o botón, envía una ráfaga serie Wake-on-UART para reanudar el seguimiento satelital de inmediato.
- Al suspender el sistema por inactividad o parada de motor, transmite la trama binaria
7. Audio y Melodías de Alarma
- Control de volumen independiente: Silencio, Ultra Bajo, Bajo (Casio suave), Medio y Alto.
- Selector de sonidos y tonos de alarma:
- Chime BMW (doble tono sincronizado).
- Casio Digital (doble chirp suave no invasivo).
- Tono bitonal clásico.
- Alarma continua urgente.
8. Menú de Configuración Táctil
- Gestión de Alarmas: Conmutadores táctiles independientes ON/OFF para cada parámetro con guardado persistente en NVS (Preferences).
- Temas Visuales: 6 paletas de color con degradados ambientales de fondo (Cyan, Emerald, Amber, Violet, Ice Blue, Graphite).
- Brillo Automático: Regulación inteligente mediante sensor de luz ambiente (LDR) integrado en la placa, o selección manual (5% a 100%).
- Auto-Sleep: Apagado automático de pantalla y suspensión ligera al detener el motor (RPM <= 300) tras el tiempo configurado (30s, 1m, 2m, 5m u OFF).
Hardware Requerido
- Placa ESP32 CYD 2.8" (ESP32-2432S028):
- Pantalla TFT 320x240 con controlador ILI9341 / ST7789.
- Pantalla táctil resistiva con controlador XPT2046.
- Sensor de luz LDR en pin analógico.
- LED RGB integrado.
- Módulo GPS Satelital N32+ / U-blox NEO-7M / NEO-6M:
- Conexión: Ficha de 4 pines al conector rotulado UART (o P1).
- Pin 1 (Vin 5V), Pin 2 (GPIO 1 TX0 hacia RX GPS), Pin 3 (GPIO 3 RX0 desde TX GPS), Pin 4 (GND).
- Comunicación: UART0 Hardware Serial nativo a 9600 bps (8N1).
- Nota para programación: Al flashear por cable USB, desconectar la ficha de 4 pines del GPS para evitar colisión con el grabador USB.
- Escáner OBD-II Bluetooth:
- Adaptador ELM327 v1.5 (muy recomendado con chip PIC18F25K80, evitar clones v2.1 de baja calidad).
- Sensores de Temperatura Digitales DS18B20:
- Hasta 2 sensores en bus 1-Wire conectado a Pin 3 del conector CN1 (
GPIO 22).
- Hasta 2 sensores en bus 1-Wire conectado a Pin 3 del conector CN1 (
- Buzzer / Parlante:
- Parlantito o buzzer pasivo de 8 ohms conectado al pin de audio del CYD (controlado por canal PWM con modulación de volumen).
- Alimentación:
- Módulo convertidor 12V a 5V USB (conectado a positivo bajo llave o directo si se utiliza auto-sleep).
Compilación y Carga de Firmware
El proyecto se encuentra preparado para compilarse tanto con arduino-cli como con Arduino IDE:
Requisitos de Software
- ESP32 Arduino Core: Versión 2.0.17 (las ramas 3.x no son compatibles con el esquema de partición).
- Librería TFT_eSPI: 2.5.43 o superior con la configuración de pines del CYD.
- Esquema de Partición:
huge_app(3MB APP / No OTA / LittleFS).
Compilación desde Terminal
arduino-cli compile -b esp32:esp32:esp32:PartitionScheme=huge_app sketch/obd2_gauge
Carga al Dispositivo
arduino-cli upload -p /dev/ttyUSB0 --fqbn esp32:esp32:esp32:PartitionScheme=huge_app sketch/obd2_gauge
Emulador de Pruebas Bluetooth en Banco
En la carpeta emulator/ se incluye el script obd2_emulator.py para simular un adaptador ELM327 v1.5 y la ECU del auto en Linux vía Bluetooth SPP:
Modo ECO Fijo (Recomendado para calibración visual)
Mantiene los parámetros fijados en el punto dulce (2.250 RPM, 58% carga, 14.2V, 90°C) con el badge [ ECO ] permanentemente encendido:
python3 emulator/obd2_emulator.py --eco
Modo Ciclo de Demostración
Ejecuta un ciclo dinámico de 36 segundos que incluye batería baja, ralentí, 10 segundos continuos en crucero ECO, aceleración exigida y fondo de escala con alarmas:
python3 emulator/obd2_emulator.py
Nota: Mientras el emulador corre en la terminal, podés presionar e + Enter para activar el modo ECO fijo o c + Enter para volver al ciclo dinámico.