sábado, 26 de febrero de 2011

Primeros mensajes CAN:

Ya tengo listo los primeros resultados del análisis del bus en estático, es decir dentro de un parking. Para acabar de mapear correctamente algunos valores tendré que hacer un análisis conduciendo. Tampoco he conseguido mapear algunas cosas como las luces, los elevalunas o la temperatura exterior, posiblemente porque esten en el bus de motor o no estén. La temperatura exterior debe estar en alguno de los mensajes, ahora que he localizado donde está el sensor (delante del radiador) podré calentarlo para ver que mensaje queda afectado.
 El funcionamiento del climatizador y los datos de consumos y velocidad media que se muestran en el ordenador de a bordo también están claros donde están, el consumo instantáneo falta ver que formato muestra. Otras cosas que no he comprobado simplemente porque ni me he acordado son los sensores de cinturón de seguridad y los retrovisores eléctricos.
Otro cosa que me hubiera gustado encontrar es la marcha que hay puesta, para poder diseñar un algoritmo que te recomiende cambiar de marcha en base a la velocidad, consumo instantáneo actual, revoluciones.. Y avisarte en el LCD que cambies a otra marcha. Quizás mas adelante conecte el bus de motor para poder hacer esto. Estos mensajes si están en el análisis que hizo Madox, seguramente porque su Mazda es mas nuevo, y al ser una versión americana marca las marchas automáticas (1,2,3, P, N, R). Otra diferencia muy importante es que él ve los mensajes 290 y 291 que son los códigos ascci de lo que hay que mostrar por el LCD. Esto es así porque en el reestilyng del Mazda el LCD tiene su propia centralita CAN y no depende directamente de la radio. Parece ser que en Mazda se dieron cuenta de que era una putada muy grande para quien quisiera cambiar la radio quedarse sin todas las funcionalidades del LCD. Esto le permitió a Madox y otros hacks que circulan por internet con este LCD interactuar con él simplemente lanzando los mensajes necesarios sobre el CAN Confort. Pero tiene un inconveniente, tienes que enviar los mensajes más rápido y en mayor cantidad de los que envia la radio a su vez para evitar el flickering al mostrar dos mensajes a la vez.
En mi caso va a ser algo más complicado. La comunicación con el LCD parece ser que es un SPI pero aún he de descubrir que señales son exactamente porque tengo 5 señales de datos/sincronismo y con el SPI solo serian 4. Bueno, aquí dejo el documento y unas fotillos de como he empezado a analizar las comunicaciones del LCD.

Mensajes CAN Mazda 3 2004 (google Docs)

 
Set de Hacking CAN y del LCD.
Comunicaciones SPI?

7 comentarios:

  1. Te felicito por tu proyecto
    Con una amiga estamos tratando de hacer algo similar, pero estamos con muchas dudas, nuestro trabajo se trata de la lectura de los códigos de fallas en la centralita y esto queremos q se vea en un lcd touch screen.
    La conexión del cable obd que maneja código can como le conectas al microprocesador?, es tal vez primero por el mcp 2551 y luego al elm 327 o directo al micro q soporte can. El cable obd II que manejamos es serial
    Nos puedes ayudar por favor y desde ya te agradecemos por tu ayuda.

    ResponderEliminar
  2. Hola, para conectar el bus CAN al microcontrolador pretendo usar el MCP2551 y un micro de Microchip que tien un periférico específico para CAN, pero necesita igualmente el driver MCP2551 para conectarse al bus.
    Otra opción sería usar un micro cualquiera y usar el MCP2515, que es como el periférico de control de CAN de Microchip pero externo, en combinación con el MCP2551 para acceder al bus. Esto te permitiría usar cualquier micro, simplemente programando el periférico para filtrar los mensajes que quieras.
    La opción de usar el ELM327 es la más sencilla pero la más cara. EL ELM no deja de ser un PIC con un código propietario, pero ya está todo implementado.
    AHora que pienso, para leer los códigos de error deberás usar mensajes OBD. funciona de otra manera a los mensajes CAN entre centralitas, el protocolo OBD es estandard para varios fabricantes y se basa en 'preguntar' a la centralita sobre ciertos estados del motor y sensores. Yo hasta ahora solo he escuchado mensajes CAN entre centralitas, pero con el ELM no hay problema para usar el OBD desde un terminal serie, solo hay que encontrar en el manual como usarlo.

    ResponderEliminar
  3. Hola, una pregunta ¿ accedes al bus por medio del terminal obd o por conexio directa a los buses internos?

    ResponderEliminar
  4. Accedo al bus CAN de confort mediante un interfaz OBD modificado. Esta entrada te lo explica: http://hackingmazda.blogspot.com/2011/01/comenzando-con-el-elm327.html
    Quizás te ha confundido el ver el osciloscopio en la foto, lo usé para ver las señales de la radio a la pantalla.

    ResponderEliminar
  5. Sisi, esque vi las conexiones al osciloscopio y me parecio raro, aun asi, tu coche no tendra gateway no? otra cosa, necesitas dar algun tipo de ack para comenzar a recibir por el OBD? o directamente comienzas a recibir datos?

    ResponderEliminar
  6. Ahh!!, a ver ahora que vuelvo a leer, tu as modificado tu conector obd, el de tu coche ya tenia salida para los 2 buses can del coche no? aun así sigo teniendo la duda del ACK.

    ResponderEliminar
  7. He usado un interfaz OBD que contiene un chip ELM327. Este chip permite interactuar con los buses mediante comandos y poder consultar los mensajes CAN que se envían las diversas centralitas por este bus.
    Te remito a la misma entrada del blog donde explico los comandos que usa el ELM327:
    http://hackingmazda.blogspot.com/2011/01/comenzando-con-el-elm327.html
    Sobre lo del ACK quizás te confundes con el protocolo OBD (standard común a varias marcas basado en peticiones a la centralita de motor) y el protocolo CAN (específico de cada marca) que son los mensajes que hay entre las centralitas. Los dos protocolos funcionan sobre el mismo bus.

    ResponderEliminar