CAN BUS: Red de Arduinos

Hoy he hecho unas pruebas rápidas, ya que tengo ambas cosas trabajando por SPI sin problemas (controlador CAN + memoria 2 Mb):

  • He modificado la librería de la memoria para trabajar por SPI al igual que el controlador CAN SPI (8 Mhz).
  • Para el ejemplo, transmito mensages cada 1 ms con una velocidad de bus de 100 kbps.
  • Recibo los mensajes y grabo cuando he recibido un total de 30 (30x8=240 bytes).

Tiempo aprox en recibir + grabar en memoria= 15.4 ms aprox (los 240 bytes).

El ejemplo, una vez recibido los 30 mensajes, los vuelca por puerto serie.

No va nada mal!!

]:smiley:

estupendos numeros Igor !!

No sigas picandome que me veo comprando una en breve.

Necesitas un nuevo brick, asi puedes hacer pruebas sin irte al coche. Ya te haremos un precio especial... :wink:

El encapsulado de la memoria es bastante pequeño y se alimenta a de 3v3 (aunque sus pines son tolerantes a ttl). El brick dispone de un regulador para dicho voltaje.

:smiley:

Eduard nos ha mandado otro video de sus avances manejando el cluster de su Seat Leon. Lo que hace es enviar mensajes en el ID que usa la radio, aunque a veces pierde el control (por ejemplo al final del video). Sigue con sus pruebas, que no van nada mal!!

Una vez que tenga controlado de forma estable, su idea es conectarse al bus de tracción, es decir tener acceso a 2 bus CAN del coche. En uno es donde se comunica la radio, teléfono, etc (infortaiment) y luego al de tracción (rpm, acelerómetro, par, velocidad, etc).
También nos adjunta un link interesante => carPC steering wheel controls | Page 22 | GOLFMKV.com - VW GTI Forum / VW Rabbit Forum / VW R32 Forum / VW Golf Forum

]:slight_smile:

Hola.
Proximamente voy a comprar el brick de Igor R. para can bus y empezar a trastear con el coche(renault megane), y queria preguntaros que software usais para interpretar los datos del arduino en el pc, ya que leer las tramas con el hiperterminal de windows o similares me parece muy engorroso.
Un saludo y gracias.

lo primero es leer tramas en hiperterminal como tu dices.
luego ya es cuestion de hacerse algun programita en visual basic y con el programa que quieras para interpretar ya que no hay programas que hagan esto.
creas una trama en el arduino y que el programa lo reconozca.
velocidad;rpms;temp;presion; etc
120;2600;85;1.5;...

así puedes hacer que te lo grafique, te lo guarde en CSV, etc

Hola monitoreal una red can es muy bueno e interezante, yo parto de saber a que velocidad opera esa red, y si es modo standar o extendido y si tengo que usar o no resistencia terminal, luego de eso voy captando las trama pero igual no es nada facil saber que hace cada trama es algo complicado lo que si veo algo rapido de identificar son los ID pero luego el contenido de cada trama tiene un objetivo que es el que hay que estudiar y analizar para poder darle aplicacion y mas si es en el caso de los carros.

Saludos y estamos en linea.

Hola de nuevo.
Me refiero a si existe un soft que saque en pantalla las tramas desglosadas en sus campos identificador, bytes de datos, etc. pero en tiempo real y agrupadas.
Hace ya unos años estuve mirando el tema del can con un elm327 pero a la hora de monitorear las tramas, se amontonaban unas tras otras y en un segundo o menos tenia el buffer del elm327 lleno y la pantalla parada y me perdia muchisimas tramas, ademas de no poder ver los cambios en cada una de las tramas.
Yo se que renault usa la norma ISO 15765-4 a una velocidad de 500kBit/s y con identificador de 11 bits, e incluso se los identificadores de las ecus del coche, pero necesito ver los cambios en las tramas en tiempo real para poder identificar que es lo que hacen cada una de ellas.

Dani29: Para que no se te "amontonen" las tramas lo mejor es filtrar y leer solamente las que te interesen. Usar las máscaras y los filtros es básico para "entrar" en una red de un coche.

Hola,

No conozco ningún soft genérico para sniffer bus CAN.

El tema "tiempo real", tiene sus peros.... ¿Cual es la carga del bus? ¿Qué velocidad tienes? ¿Qué velocidad serie vas a usar para transmitir los datos al PC? Me refiero, si vas a sniffar un bus a 1Mbps y mandar los datos al PC a 9600 baudios.... pues ya sabes dónde tienes un cuello de botella enorme. (Por poner un ejemplo). Lo digo por recordar que estamos trabajando con un micro de 8bits, que el controlador CAN es externo por SPI y que mandas los datos por comunicación serie. Con ésto, tampoco quiero decir que no se puedan hacer muchas cosas.

En general, si te vas a concentrar en ciertas tramas, como bien te han aconsejado, el uso de filtros y mascaras te ayuda a liberar al micro y poder tener más rendimiento.

Me gustaría hacer una aplicación básica para hacer esto que comentas, pero nunca saco tiempo!! Es sencillo hacerlo.
De momento, para hacer cosas rápidas, sacando por puerto serie los datos en un formato tipo csv y grabandolos, luego con las típicas herramientas de linux, excel ó con algo como Log Parser, puedes empezar a hacer cosillas interesantes muy rápido.

ToloBCN, tienes que enseñarme algun video de lo que estas haciendo!! Tienes el FIS controlado 100% ?

:wink:

Hola buenos dias, Dani29: si quieres monitoreal el red can del carro seria ideal lo que ya te comentan los colegas hacer filtrado de los ID que te interezan, otra para no complicarte mucho la cosa puede hacer un codigo basico y con el mismo terminal de la plataforma arduino ver las tramas. Lo que si te recomiendo es que uses la comunicacion serial entre el arduino y la pc a la maxima velocidad asi en lo posibles evitar perdida de tramas por visualizar en tu terminal.

Saludos y tienes que tomar todas las consideracion ya expuestas por el colega Igor y ToloBCN y como ya se dijo lo importante y para liberar y trabajar mas comodo es el filtrado de las tramas que te interezan.

Nota: si usas interrupciones en la recepcion veras mejores resultados de las tramas.

IgorR: A la pregunta si tengo controlado el FIS, pues las dos lineas de la radio (2x8 carácteres)de mi Audi A4 B6: Sí.

Es fácil, al sacar la radio original las dos líneas quedan en negro. Enviando un mensaje "Estoy aquí" cada 4 seg. aprox. las lineas se activan, mejor dicho no se apagan :P.

"Estoy aqui": ID:661h rtr: 0 lenght:8 Msj:81 01 12 A0 00 00 00 00

Para escribir en la línea superior se envia un mensaje de 8 bytes con los carácteres ASCII al ID 261h para la línea superior y 263h para la línea inferior.

Gracias ToloBCN por la info. ¿Tienes desinstalada del completo la radio? Yo en mi coche no tengo ese tipo de FIS, asi que nada.... =(
Pero por curiosidad, ¿has hecho pruebas de tener la radio y a la vez intentar sobreescribir los mensajes sobre el FIS?

¿Qué tal llevas el tema con el bus de tracción? ¿le has metido mano?

Yo ahora estoy liado con la memoria de 2Mb para tener adquisición de datos.

Saludos

:wink:

Si estoy a tope con el bus tracción, realmente el interesante :astonished:

Si tienes la radio instalada pues tienes que estar "luchando" sobreescribir lo que la radio escribe, nada recomendable. Otra opción es codificar que tienes teléfono(yo lo tengo) y emular al teléfono.

Hola buenas noches, oye nose a que se refieren con eso de FIS pero veo que es relacionado a la radio de los coche aplicando el can bus, hoy me propusieron liberar un equipo de radio con pantalla tactil que lo usan las chrysler grand cherokee modelo nuevo el cual el radio tiene un sistema de proteccion que bloquea el video si el carro esta en marcha y segun es controlado por can bus y solo el video se activa cuando el carro esta en pare eso es un sistema de proteccion para que el conductor no este viendo la pantalla mientras esta en marcha.

Saludos y nose si esto que planteo tiene que ver con eso que ustedes comentan de FIS. ojo el bloqueo del video es controlado via can bus es decir el readio dispone de la red can y segun este el carro en marcha se da una orden para bloquear el video y se restaura cuando el carro esta en pare.

El FIS es la pantalla entre los dos relojes, yo uso las dos líneas superiores para mostar la marcha, la velocidad y en la linea inferior voy mostrando datos como temp. refrigerante, temp. admisión, voltaje de la batería, temp. aceite, ... La Radio original muestra la emisora de radio o la pista del CD. Al cambiar la radio se quedan las dos lineas apagadas.

Veo dificultoso el tema de la Chrysler, añadir información al CAN Bus es fácil quitarla no tanto.

Me han planteado antes este tema, hacer una especie de filtro pero solamente se me ocurre con dos MCP2515, algo asi como "aislar" el aparato en cuestión de la red creando una red nueva, un pseudo CAN Bus para conectar el aparato en cuestión.

Leer el Bus original, discriminar la info que no interese y "reflejar" el resto en el Bus "falso". Es un complicación que ni he intentado. Pero lo veo factible.

Por ejemplo el mensaje de "velocidad" que llega a la radio: Si falseamos el mensaje y le mandamos "0" la radio creerá que el auto está parado.

Ya os digo no lo he probado.

Hola buen dia, Aun no experimento en el carro pèro lo que se me ocurre es analizar las tramas que entran al reproductor y ver cual es la que habilita el video estando el carro es pare y ver la trama que bloquea el video estando el carro en marcha, logicamente eso lo haria con un analizador can bus, luego de tener bien claro las tramas con su PID; aislar el CAN BUS del reproductor y colocar un nodo de mi fabricacion que emule esas trama pero la de habilidacion de video y conectarla a la red CAN de reproductor de esa manera el reproductor siempre asumira que el carro esta en pare.

Saludos y estamos en contacto.

Hola,

Para los que tienen una Industrial brick con memoria SPI (AT45DB161D), he puesto en el repositorio (carpeta R+D) la librería (es la que se puede encontrar aquí, pero con unas pequeñas modificaciones. También he subido unos ejemplos.

Como referencia la memoria es de 2 megas, y contiene 2 buffers del tamaño de las páginas en que se divide (512/528 bytes) la misma. [Páginas=4096].
Cuando llenas uno de los buffer y lo transfieres para grabar (borrar+grabar ó tiene que estar previamente borrado), que es la operación más lenta, puedes seguir enviando al segundo buffer mientras se está realizando la reprogramación de la flash.

]:smiley:

Hola,
Yo lo que quiero es mandar información de varios sensores de un coche y visualizarlos en una LCD. Se me presenta un problema que es el siguiente: Cuando mando mas de 7 bits por CAN utilizando la librería canduino que se puede descargar de internet, todo el rato me lee solo los 7 bits de menor peso.

1.- Alguien sabe porque al utilizar la libreria de canduino que hay en internet para bajarse para comunicar por can con el CAN-BUS shield cuando mandas mas de 7 bits solo lee tpdp el rato los 7 bits de menor peso y los otros no???.
Mi intención es mandar 8 bytes, alguien podría decirme como se hace???. Podría ser culpa de la libreria SPI o de alguna otra libreria que me este limitando la lectura de datos por CAN.

Gracias!

Hola Igor y compañía. Tremendamente interesante el trabajo que estais realizando.
Tengo previsto, en el momento que tenga algo de tiempo (recurso escaso donde los haya, pardiez..) en meterme con el toyota príus. Si alguien sabe algo (velocidades, mapa de direcciones, etc etc) agradecería feedback.

Saludos,

Luis