Go Down

Topic: CAN BUS: Red de Arduinos (Read 40236 times) previous topic - next topic

Igor R

Feb 27, 2011, 08:34 pm Last Edit: Feb 27, 2011, 09:07 pm by Igor R Reason: 1
Hola,

Aunque en algún post ya he puesto la dirección de la web, este finde ya se ha ampliado un poco más, y ya empieza a estar más "presentable" para una presentación oficial...  ;)

En las últimas semanas hemos estado trabajando en este proyecto: http://secuduino.blogspot.com/
Se trata de un "brick" + librería para disponer de bus CAN en nuestros Arduinos. La idea de no usar shield, es para que sea compatible con todas las placas oficiales y no oficiales de Arduino.

La conexión se realiza mediante SPI a a la placa de tipo brick, siendo configurable el chip select y el pin de recepción de mensaje, para tener máxima flexibilidad si se está usando alguna otra shield/componente que necesite SPI.






Los primeros montajes de ejemplo de uso han sido:

HELLO WORLD!! (usando un MEGA y un Diecimila/UNO):
http://www.youtube.com/watch?v=3P4nZnrv9mM

ALARMA:
http://www.youtube.com/watch?v=f34TJ1MoNPc&feature=player_embedded

SERVO:
http://www.youtube.com/watch?v=fanymVjG4U4


En la página se puede encontrar más información, así como los programas, que resultan muy directos gracias a la librería.
Resulta más fácil de implementar una red CAN que una RS485, ya que el controlador hardware hace toda la tarea "sucia" por nosotros, como son los mensajes,timing,CRC,reglas,errores,.. En RS485 el usuario tiene que crearse todo ésto via soft, ya que sólo define la capa física.
La velocidad alcanzable es hasta de 1 Mbps.
En el FAQ de la página, se puede encontrar información muy útil acerca del bus CAN, que muchas veces es dificil de conseguir.
Se trata de un bus muy utilizado y muy estable para sistemas de control en "tiempo real". Las aplicaciones son domótica, control distribuido, automoción, automatización, alarmas,....

El próximo ejemplo será algun "hack" para el coche!!!   ]:D



Saludos




Igor R.








Sergegsx

Impresionante Igor !!!

Estoy deseando ver el hack para coche, cuando tenga tiempo (dentro de un mes) quiero ver si pudo conectar mi arduino UNO a mi Ford Focus y coger velocidad, consumo, rpms, etc...

estoy muy interesado en tu trabajo asi que estare atento.

No tengo mucha experiencia con Arduino asi que espero poder conseguirlo gracias a tus manuales.

Igor R

#2
Feb 27, 2011, 10:29 pm Last Edit: Feb 27, 2011, 10:35 pm by Igor R Reason: 1
Igual para el Focus tienes suerte y puedes sacar los datos via CAN por el OBD.... :D
Los del grupo Volkswagen, la CAN del OBD esta protegida y hay que habilitarla mediante la la linea K (otro protocolo). Pero si tienes suerte, igual para tu coche es inmediato!!!
Tienes que hacer un poco de investigación.....;)

http://www.aim-sportline.com/download/ecu/stock/ford/Ford_Focus_OBDII_connection_100_eng.pdf

jnogues

Hola Igor.

Es impresionante tu trabajo. Gracias por compartirlo. Acabo de empezar con Arduino
para realizar una red domótica educativa con RS485, pero me has convencido para
que me plantee CAN. ¿Hago bien?

Jaume N.

Igor R

#4
Feb 27, 2011, 10:51 pm Last Edit: Feb 27, 2011, 10:53 pm by Igor R Reason: 1
Hola Jaume,

El RS485 resulta casi inmediato y fácil de implementar con Arduino, ya que tan sólo hay que añadirle el transceiver y usar la UART del micro.
Por otro lado, viene la dificultad con el soft, ya que te tienes que crear todo un protocolo con mensaje, reglas, checksum o crc, ...
El RS485 sólo define la capa física (señales), y todo lo demás es el diseñador. En el ambito industrial, Profibus, Modbus, DMX,... son algunos de los protocolos que se usan sobre RS485.

Con CAN bus, esto es transparente para el usuario, ya que el controlador hardware lo hace por ti. Y te aseguras de tener un protocolo seguro, que los mensajes se entreguen, robusto, y fácil de implementar, ya que sólo tienes que preocuparte del ID y de los bytes de datos, todo lo demás es transparente.
Como Arduino no lo tiene integrado, necesitas un controlador hardware externo + transceiver, por lo que hace un poco más "dificil" el hardware, pero muchísimo más sencillo el soft.

Ahora ya, elección de cada uno..... Yo me quedo con CAN!!  ;)


Salu2



Igor R.

Sergegsx

mil gracias por ese enlace !!

entonces necesito el Can-bus que vendes en tu pagina? u otra cosa para conectar al arduino?
no quiero precipitarme antes de tu proximo tutorial, pero como has dicho que mi caso podria ser tan sencillo, me has picado a investigar antes de tiempo.

yo pensaba que para conectar via CAN seria siempre a traves del OBD-II, y que lo que me hace falta es el shield CAN (o el tuyo) y saber leer los codigos, me equivoco?

he encontrado esto, pero creo que es mejor un shield para arduino directamente,no?
http://cgi.ebay.es/ELM327-ELM-327-V-1-3A-OBD2-USB-DIAGNOSTIC-TOOLS-/180631685672?pt=LH_DefaultDomain_186&hash=item2a0e7cca28

Igor R

#6
Feb 27, 2011, 11:04 pm Last Edit: Mar 19, 2011, 09:19 pm by Igor R Reason: 1
El ELM 327 o sus otras versiones, es un chip que viene integrados casi todos los protocolos de diagnosis que existen.
http://elmelectronics.com/index.html  (PWM, ISO, VPW,...)
El que has puesto tu, es directamente una aplicación de ese chip para conectarlo al PC y usar un programa de ordenador.

Cada fabricante usa diferentes cosas para diagnosis, aunque casi todos estan empezando a usar CAN.
Pero no hay que confundir la CAN de diagnosis, con la red interna CAN que existe en el coche. La de diagnosis puede llegar a ser más o menos estandard.
http://en.wikipedia.org/wiki/OBD-II_PIDs

Por ejemplo, en un coche podrías tener:

  • CAN de tracción (ecu motor, abs, airbag,...)

  • CAN de confort (clima, puertas,..)

  • CAN de infotainment

  • CAN de diagnosis.



Es decir, aunque no tuvieras por el OBD, siempre puedes "conectarte" a las otras redes CAN existentes. Por supuesto, hay que ser "manitas", buscar donde estan los cables a conectarse,... Por otro lado, necesitas saber que ID te interesan, y cómo esta codificada la información en dichos mensajes. Cosa que no es fácil de conseguir. Eso si, es mucho más interesante que la de diagnosis... ]:D

No sé muy bien el tema de focus, entonces tampoco puedo asegurarte que vaya por CAN y si usan el estandar que puedes ver en WIKI dentro de los mensajes CAN y dichos PID. Tengo un cable con conector OBD para conectar al "brick" CAN que tengo en mi página....ummmm, no sé si conozco a alguien con un Focus para probar....y que se deje!!! je,je,je

Siempre se pueden encontrar cosas interesantes por la red (Volkswagen) ....http://es.scribd.com/doc/7305401/CANBus-ion-Del-Instructor


Saludos


Igor R.



Valen

Hola Igor,
he remitido tu web a una persona que pudiera interesarle tu producto.
Me encanta tu proyecto. Gracias por las explicaciones.

Sergegsx



No sé muy bien el tema de focus, entonces tampoco puedo asegurarte que vaya por CAN y si usan el estandar que puedes ver en WIKI dentro de los mensajes CAN y dichos PID. Tengo un cable con conector OBD para conectar al "brick" CAN que tengo en mi página....ummmm, no sé si conozco a alguien con un Focus para probar....y que se deje!!! je,je,je

Igor R.



yo te dejo el mio !!! jajaja

buff cualquier ayuda q puedas darme para que algun dia consiga conectarme a mi OBD y leer datos con el arduino, estaria super agradecido !!!

un saludo.

Igor R

#9
Mar 13, 2011, 04:45 pm Last Edit: Mar 13, 2011, 05:00 pm by Igor R Reason: 1
He ampliado un poco más el FAQ, para entender bien lo sencillo que resulta usar bus CAN, y las tramas sofisticadas que son generadas transparentemente para el usuario en el bus gracias a los controladores hardware. A lo contrario de RS485, en el que hay que realizar todo ésto via soft.

Para ello, he conectado mi analizador lógico que me autoregalé para reyes :D  en el bus CAN entre dos Arduinos.
FAQ 14: http://secuduino.blogspot.com/2011/02/faq.html



He explicado cada uno de los campos del mensaje, así como más imagenes de cada uno de los campos de un mensaje CAN estandar.

Espero que sea de utilidad.

Saludos


Igor R.

flico

Gracias Igor. R por la info aportada.

Cual es el analizador logico que usas?

Un abrizo.
Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida


Igor R

#12
Mar 19, 2011, 08:49 pm Last Edit: Mar 19, 2011, 09:16 pm by Igor R Reason: 1
Hola,

Esta tarde, el amigo Gixxer ha conseguido comunicarse con su Focus (año 2007) a través de OBD usando el brick CAN Bus + librería.
Depués de unos cuantos intentos (yo haciendo de asistencia como podía desde internet), tiene un sketch funcional recibiendo las rpm del coche cada 10 milisegundos!!

Ha prometido grabar un video!!!

Pronto más información en http://secuduino.blogspot.com/


;)

flico

Enorabuena por haberlo conseguido.

Salu2
Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

Igor R

Gracias!!   ;)

Por otro lado, m.alverman tiene su montaje con dos bricks CAN conectados a un MEGA y un UNO funcionando a una distancia de 15 metros a 1 Mbps => http://arduino.cc/forum/index.php/topic,54838.0.html

Go Up