Pages: [1]   Go Down
Author Topic: OBD2 Bluethood y Arduino (Nuevo Proyecto ya en Curso)  (Read 3710 times)
0 Members and 1 Guest are viewing this topic.
Collbató, Barcelona
Offline Offline
Full Member
***
Karma: 1
Posts: 115
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
http://www.youtube.com/embed/r8XKOyCwsl0
En cuanto Termine con el apartado de Arduino, comenzaré tambien una aplicación estilo "torque" aunque mucho menos profesional para Android.

Un Saludo
Jomagom
« Last Edit: September 28, 2012, 03:36:25 am by Jomagom » Logged

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Collbató, Barcelona
Offline Offline
Full Member
***
Karma: 1
Posts: 115
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

que modulo en concreto tienes?
Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Collbató, Barcelona
Offline Offline
Full Member
***
Karma: 1
Posts: 115
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

El módulo OBD2 es este:


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
Logged

Ann Arbor, Mi
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Collbató, Barcelona
Offline Offline
Full Member
***
Karma: 1
Posts: 115
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 13
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Orduña- Bizkaia
Offline Offline
Sr. Member
****
Karma: 0
Posts: 317
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
« Last Edit: October 01, 2013, 03:59:24 pm by riscking » Logged

Pages: [1]   Go Up
Jump to: