Pages: [1] 2 3 ... 17   Go Down
Author Topic: CAN BUS: Red de Arduinos  (Read 35861 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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...  smiley-wink

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):


ALARMA:


SERVO:



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!!!   smiley-twist



Saludos




Igor R.







« Last Edit: February 27, 2011, 03:07:51 pm by Igor R » Logged


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

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

0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Igual para el Focus tienes suerte y puedes sacar los datos via CAN por el OBD.... smiley-grin
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.....smiley-wink

http://www.aim-sportline.com/download/ecu/stock/ford/Ford_Focus_OBDII_connection_100_eng.pdf
« Last Edit: February 27, 2011, 04:35:27 pm by Igor R » Logged


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

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

0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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!!  smiley-wink


Salu2



Igor R.
« Last Edit: February 27, 2011, 04:53:09 pm by Igor R » Logged


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

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
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/

0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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... smiley-twist

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.


« Last Edit: March 19, 2011, 03:19:50 pm by Igor R » Logged


Offline Offline
Jr. Member
**
Karma: 0
Posts: 53
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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


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

0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-grin  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.
« Last Edit: March 13, 2011, 11:00:37 am by Igor R » Logged


0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias Igor. R por la info aportada.

Cual es el analizador logico que usas?

Un abrizo.
Logged

Trabajando en ...

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

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

0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

He usado Saleae.

smiley-wink
Logged


0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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/


smiley-wink
« Last Edit: March 19, 2011, 03:16:14 pm by Igor R » Logged


0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Enorabuena por haberlo conseguido.

Salu2
Logged

Trabajando en ...

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

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

0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias!!   smiley-wink

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
Logged


Pages: [1] 2 3 ... 17   Go Up
Jump to: