Red de arduinos con Ethernet

Hola, llevo un tiempo cacharreando con arduinos y hasta ahora con la documentacion que encontraba me era suficiente. Ahora tengo un proyecto un poco mas grande y necesito un poco de luz.

La idea es conectar varios (20 o asi) arduinos a traves de ethernet siendo uno de ellos un control y el resto esclavos. He visto la posibilidad de utilizar CAN pero utilizo ethernet porque ya esta metido el cableado a parte que son distancias largas.

La duda que tengo es como sería lo mas lógico. El control como server y el resto como clientes? (pienso que freirian al server de consultas) ¿al reves es posible? He visto que arduino ethernet puede tener maximo 4 conexiones abiertas. Tambien he pensado mandando mensajes por telnet...

En fin, como veis ando un poco despistado y aunque hay un montón de documentación no se como orientar el proyecto.

Un saludo y muchas gracias,

Con CAN (o RS485) es inmediato...Ya se que ethernet es lo que nos parece mas familiar a todos, pero no creo que sea lo mas apropiado para el proyecto que explicas....

Saludos

Igor

Veo que has tenido mas suerte que yo, ayer hice la misma pregunta pero con 9 arduinos y nadie contestó =(, es broma que nadie se enfade, bueno yo la idea es casi como la tuya aunque yo quiero que cada arduino sea independiente pero si quiero pueda consultar el estado de una I/O de otra placa o una variable, por lo que no saturaría el server, mirare el tema de can bus aunque como dice IGOR escogi ethernet porque es con lo que estoy mas familiarizado, porque para comprar la placa ARCAN no veo como hacerlo, o hay otra shield "oficial" CANBUS que sirva para el tema que propongo?

Pero la idea es que el arduino Master tenga ethernet ya que quiero activar desde internet las salidas de cada una de las placas o consultar alguna entrada de cualquier placa.

IGOR a ver si puedes iluminarme, gracias

Hola dystrom,

No me he leido todos los post del foro... :wink:
Mira mi firma (SECUduino) para ver otra placa para bus CAN con Arduino.

Saludos

Igor

Me la estaba mirando ahora mismo poco a poco ire leyendo, solo una pregunta ya que veo que lo tienes por la mano, podria hacer lo que comento en mi respuesta anterior, es decir, la idea es tener 9 arduinos que cada uno gestione sus entradas y salidas de forma autonoma pero uno de ellos ha de tener ethernet para conectarse a la red de forma que desde internet pueda activar ver cualquier entrada o activar cualquier salida, y si los arduinos necesitan datos de los otros arduinos se comuniquen por CAN ya que comentas es mas rapido. Gracias por tu ayuda y paciencia

EDITO: IGOR Veo que utilizas los mismos pins que la placa de ethernet, se pueden cambiar?? lo digo porque si no la opcion de conectarlo a internet la perdería ¿es asi?

Hola,

Si fuera yo, utilizaria bus CAN o RS485 para comunicar los Arduinos entre si, y luego uno de ellos le pones ethernet de forma que hace la pasarela internet <-> bus.
Para RS485 es muy barato montartelo (chip cuesta menos de 1 euro) pero tienes que hacerte todo el protocolo (o utilizar alguna libreria tipo modbus que lo haga) y en bus CAN es el controlador hardware que hace todo por ti (control errores, prioridades, asegurarse que recibe el mensaje, etc), asi que este ultimo es bastante inmediato, robusto y libera al micro de las comunicaciones.

El controlador CAN (mpc2515) utiliza bus SPI, asi que puedes tener varios dispositivos en dicho bus, como por ejemplo la placa ethernet que comentas (que a su vez tiene memoria SD que va por SPI tambien). Las lineas MISO,MOSI y CLK son comunes, tan solo necesitas un pin diferente por cada uno de los diferentes dispositivos conectados por SPI (CS=chip select). El disenyo de SECUduino en forma de "brick" en vez de shield, fue para tener mas flexibilidad y evitar incompatibilidades con otras shields y poder utilizar en cualquier micro con SPI.

La web esta en spanglish... :wink: Mira el FAQ que esta en castellano.
Si te quieres hacer el HW de CAN, tienes los esquemas del brick en el repositorio.

Saludos

Igor

Nota- ni acentos ni enyes

Gracias Igor por tu repuesta,

La verdad es que ando pensando en el CAN, de hecho he contactado con el team de secuduino (no se si contigo ), pero queria saber si habia mas opciones a parte de esta, ya que tendría que tirar parte de la instalación ya hecha.

Por otro lado veo que no soy el unico que esta metido en este tema :wink: voy a ponerme las pilas en todo esto y nos vemos por aquí.

Gracias a todos

Yo creo que no tendrias problema en usar uno de los pares del cable utp (ethernet) de la instalacion si ya la tienes montada.

si las distancias no son muy largas, por que no intentas modulos XBEE que comuniquen al arduino via RF y asi tu maestro lo conectas a internet, te lo digo por que eso es lo que yo estoy hciendo

Yo lo haria con Can Bus o RS485 en todos los arduinos y colocar ethernet en uno de ellos como pasarela.

Finalmente me he decidido hacerlo por canbus, las distancias son bastante grandes como para hacerlo por xbee ademas de que no hay problema de instalación del cableado.

De esta manera ethernet no lo necesito para nada porque el control se hará solo desde una botonera o pantalla táctil (ese punto esta por ver aún)y el resto de arduinos permaneceran a la escucha de un mensaje.

Seguramente con RS485 y modbus me podría apañar pero esta vez voy a hacerlo con CAN y me lo facilito un poco.

Muchas gracias a todos y un saludo.

Independientemente de lo que hagas o los criterios que tengas, xbee no tiene problemas con distancias largas.

Buena elección.