OBD2 Bluethood y Arduino (Nuevo Proyecto ya en Curso)

Como siempre ando liado en nuevos proyectos.
Me acabo de comprar un modulo OBD2 Bluethood para mi coche y así poder leer todo los datos de la Centralita en una pantalla, como siempre mi intencion es ayudarme del Arduino para leer dichos datos.
Mientras me llega el módulo OBD2 me he puesto a pensar en como desarrollar la aplicación para arduino.
La pantalla que quiero utilizar es la integrada en mi coche (7") en la cual tengo una etrada de video Compuesto.
He utilizado la libreria de TVout para arduino.
Estoy diseñando la pantalla menú etc... ya que también lo colocaré unos sensores extras para ller diversa información todo en la misma pantalla.
Ahora vienen los problemas:
No se como emparejar el arduino al módulo OBD2 automaticamente, es decir que cuando alimente el arduino se conecte automaticamente al módulo, este módulo dispone de un pass para poder conectarse a el.
Utilizaré la librería ODB que tambien está para Arduino para leer los datos, ese no es el problema.
Espero vuestras respuestas y comentarios.
En las pruebas en vez de leer los datos del OBD2 (que no me ha llegado) utlizo las entradas del arduino para simular los resultados.

En cuanto Termine con el apartado de Arduino, comenzaré tambien una aplicación estilo "torque" aunque mucho menos profesional para Android.

Un Saludo
Jomagom

hay proyectos por internet explicando como comunicar estos obd bluetooths con arduino.
creo que hay que puentear la salida hacia el modulo bluetooth y leerlo por serial.

OK gracias, he buscado mucho y no encuentro info, pero bueno seguiré buscando.
Un saludo
Jomagom

que modulo en concreto tienes?

El módulo OBD2 es este:

![](http://i.ebayimg.com/t/Mini-ELM327-Interface-V1-5-Bluetooth-OBD-II-OBD2-Auto-Car-Diagnostic-Scan-Tool-/00/s/MTAwMFgxMDAw/$(KGrHqF,!lcFBK0Jot!jBQYrP8b0hw~~60_57.JPG)
y el módulo blethood es donde está el problema ya que ahora me he dado cuenta de que es esclavo por lo que no se podrá comunicar con el módulo ya que este tambien es esclavo.
Un Saludo
Jomagom

La manera más fácil que encontré es desarmando el OBD2, vas a ver que tiene soldado un módulo bluetooth como los que se usan en el arduino. Fijate que los 2 primeros pins son serial in y serial out. (tenes que cortarle el trazo al bluetooth y usarlo por cable)

Luego tenés que fijarte que frecuenca usa, el mío anda a 38400.

Saluts
Juan

*perdón por la resucitada!, pero me di cuenta cuando ya lo había escrito

Bueno, muchas gracias por responder pero al final lo he dejado con el bluetooth, ya está solucionado la comunicacion con el arduino por medio del bluetooth.
Un Saludo
Jomagom

Jomagom:
Bueno, muchas gracias por responder pero al final lo he dejado con el bluetooth, ya está solucionado la comunicacion con el arduino por medio del bluetooth.
Un Saludo
Jomagom

¿Y cómo lo solucionaste? Me interesa mucho.

Un saludo.

Hola, yo estoy intentando un proyecto similar con un Arduino Uno, un modulo LCD 1604, un modulo bluetoth serie con firmware HC05 (master/slave) y un OBD por Bluetooth. La conexión entre el módulo serie BT conectado a Arduino y el OBD BT del coche es relativamente sencilla con el firmware HC05 ya que permite acceder a los comandos AT del modulo serial para activar el modo Master, añadir la MAC del OBD BT que se puede averiguar fácilmente con cualquier emparejamiento con un móvil, y activar en el modulo serial BT el modo de conexión automática con otro comando AT. Todos los comandos AT se pueden enviar al modulo serial BT a través de su conexión con un módulo USB serial a un ordenador, y el uso de un programa de terminal. El modo de recepción de comandos AT se obtiene logrando en el PIN34 un estado HIGH al unirlo a VCC en el momento de conectarlo (uso una resistencia de 470 Ohm para ello), por defecto el módulo responde a 32800bps,1,0, Ninguna. Una vez hecho esto el modulo seral BT conectado a Arduino se empareja automaticamente al encender el Arduino, con el OBD BT del coche. Mi problema es que no tengo ni idea programación C y estoy a expensas de los programas que pillo por la red, y su adaptación a mi entorno de hardware. Me pongo a vuestra disposición en lo que os pueda aclarar y ayudar y así todos conseguiremos un final feliz.

Hola a todos, con permiso de Jomagom me uno a este hilo para informar de los progresos que hago con la biblioteca OBD y el programa dashboard_1602 de Stanley Huang. Tras probar la biblioteca y el programa, he visto que tiene muchos puntos que pulir para ser un verdadero presentador-lector de PID en una LCD de 16x02. Os comento que he corregido los sistemas de cálculo de PID de la biblioteca obd.cpp, así como la asignación de PID en obd.h para adaptarlo a los PID legibles en mi vehículo. Asimismo he corregido el sistema de lectura del PID 1F (tiempo de motor encendido) en obd.cpp ajustandolo con una división por 60, ya que no era capaz de reflejar un valor superior al minuto (presentaba mm:ss), ahora refleja un valor hh:mm. Sigo trabajando en la presentación de datos en el LCD, ya que tiene bastante tendencia a corromperse y ocupar posiciones de escritura de datos anómalas, produciendo una presentación de datos ilegible. Animo a todos los que estéis interesados en utilizar arduino y los OBD2, a participar en este hilo. Para pulir los datos en el dashboard_1602 utilizo una suerte de emulador de datos de OBD2 usando un programa de terminal que permite el envio repetitivo de los comandos que alimentan al programa a traves del puerto com de arduino.
Mis próximos retos serán el utilizar los PID leidos para cáculos de Consumo instantáneo,
consumo promedio y velocidad promedio. Ofrezco todo lo que he realizado a quien me lo pida en este hilo.

estoy interesado en los calculos para consumos. Informanos si lo consigues. gracias

Al hilo del dashboard_1602 os comento que el programa comete errores en la lectura del PID 10 MAF, ya que a partir del valor hexadecimal 7f ff del MAF, no es capaz de leer correctamente el valor y presenta datos erróneos. Este error está en la libreria OBD.cpp , se define el parámetro para leer de este modo:

case PID_MAF_FLOW:
result = GetLargeValue(data) / 100;
break;

Pero al llegar al valor de MAF en hexadecimal 80 00, da error de datos interpretando FF 00. Lo he corregido eliminando la división por 100:
case PID_MAF_FLOW:
result = GetLargeValue(data);
break;
E incorporando una sentencia en dashboard_1602.ino que recalcula el valor:

if (pid == PID_MAF_FLOW) {
sprintf(buf, modeFmts[mode], (unsigned int)value / 100);
} else {
sprintf(buf, modeFmts[mode], value) / 100;
}
Seguiré investigando para pulir totalmente de fallos el programa y crear la base de lectura de PIDs, básica antes de entrar en las ecuaciones de manejo de PIDs para obtener datos de Consumo, Velocidades Medias, Alertas de Exceso de Temperatura,...
Como siempre, abierto a todos los que quieran colaborar conmigo.

Hola aestrada,
yo tambien llevo un tiempo embarcado en hacer un pequeño proyecto con mi ELM337 bluetooth de DX y estoy algo desesperado ya que he probado distintas versiones de librerias y codigo, y no soy capaz de leer ni un solo dato, bueno, uno si, el voltage.

La idea es dar la info de los datos tipicos que te da los coches modernos, como, tiempo del viajes, km recorridos, consumo media y tiempo real, autonomia, etc. en un lcd de 16x2.

aestrada, si quieres o necesitas colaboración, cuenta conmigo.

Saludos

Interesante hilo, yo tengo el opcom que es para los opeles pero es un trasto enorme, me gustaria almo mas pequeño como el bluethoot o el elm337 casero que he visto por ahi que no ocupa mucho, el caso es q ya que tengo el opcom a ver si destripandolo y mientras leyendo lo q sea desde el pc a ver si se podria espiar con el bluethoot para saber los comandos o lo q sea con el arduino.

Lo he destripado y dentro hay un pic18f458 con un eftdi para el usb, se podria leer de los pines rx y tx?? mientras este conectado al pc por usb?? Decir que no tengo ni idea de este tema pero ya que lo tengo se podria hacer algo chulo.
Tengo un Opel astra H por si se podrian compartir trabajos.