El punto de acceso para platicar con el auto es a través del conector OBD, para lo cual se requiere, primero, ponerse de acuerdo con la ECU en dos puntos: ponerse de acuerdo en la forma de representar unos y ceros digitales mediante señales eléctricas; algo parecido a decir que vamos a relacionar el símbolo “a” con el sonido “a”; en este caso, el “1” o el “0” puede ser voltaje alto, bajo, diferencia entre los dos, u otra manera. En OBD hay cinco maneras diferentes de hacerlo.
El siguiente punto es ponerse de acuerdo en los grupos de unos y ceros: ¿cuál será su significado? Así como el grupo de símbolos “g”, “a”, “t”, “o” juntos significan “gato” o animal felino, los símbolos 0000 0001 0000 0101 juntos significan el comando OBD para la temperatura (0x0105).
Los comandos OBD se manejan enviando bytes o grupos de ocho bits (uno o cero), utilizando alguna de las cinco maneras de codificar el voltaje. La mala noticia es que así tal cual estos voltajes no se pueden conectar a una PC o tablet; la buena, es que el circuito integrado ELM327 de ELM Electronics establece un puente entre el OBD y una comunicación serial que se puede utilizar. El integrado puede detectar solito el protocolo OBD y traducirlo a una salida serial tipo UART. Dicha salida permite conectarse a interfaces RS232, USB, bluetooth o directo a un arduino. Hasta los bytes son convertidos en números y letras, código conocido como ASC II hexadecimal.
Hay en el mercado varios dispositivos económicos OBD a bluetooth pensados para tablets o teléfonos. EL ELM327 es, prácticamente, la mitad de una herramienta de diagnóstico; sólo hace falta agregar un intérprete a los datos que entrega. La gran mayoría de los equipos están construidos con base en este IC o una versión clonada. Aunque este IC apoya todos los protocolos OBD II, no todos los equipos tienen completo el soporte para cualquier vehículo.
ECU (Electronic Control Unit.
Si se escuchara en español una plática entre un vehículo y un equipo de diagnóstico (llamado
la compu) sería algo así: “Hola auto, soy
la compu, ¿cómo está tu temperatura?”. Y el auto le contesta “hola
compu, soy el auto, mi temperatura es de 83 grados”. Realmente las
compus no hablan español (de hecho, ningún lenguaje humano), ellas se comunican intercambiando
bytes en forma de números y letras. Para este ejemplo, el mensaje en
bytes real es “41 6B 10 01 05”. Los primeros “41 6B 10” es el “hola auto, soy la
compu” con el que se inicia la plática
. Se llama encabezado e incluye datos como: a quién se está hablando (dirección destino) y quién habla (dirección fuente). Lo siguiente: “01 05” es la pregunta en sí (comando OBD).
Normalmente, al platicar no se repite en cada oración “hola amigo, soy fulano…”. Pero, en OBD se tiene que repetir en cada mensaje. Cuando se trata de diagnóstico, el diálogo siempre va a ser entre computadora y ECU, por lo que el ELM327 lo esconde y maneja sólo los datos como en el ejemplo “01 05”.
El primer
byte corresponde al modo y el segundo al PID; así, siguiendo el ejemplo anterior, el primero es el modo “01” y el segundo es el PID “05”. Los
bytes enviados y recibidos son:
- > 01 05 “la pregunta”
- > 41 05 7B “la respuesta”
La respuesta es “41”; luego, el mismo PID “05” y, después, el dato codificado de acuerdo con los estándares americanos normalizados por la SAE. En el ejemplo y siguiendo el estándar, 0x7B en hexadecimal es 123 decimales menos 40, lo que da la temperatura de 83 grados centígrados.
Para hacer una computadora casera con un arduino, el primer paso es platicar con el ECU a través de una interfaz. Se puede buscar en el integrado los pines UART y conectarse directo. Lo siguiente es crear por software un intérprete de OBD; es decir, hacer una lista de PID y un selector switch para que “interprete” cada uno. Así resulta fácil hacer un monitor de los parámetros del vehículo en tiempo real.