Arduino: reciba la señal Ethernet W5100 a múltiples arduinos

Estoy buscando hacer un dispositivo en el que usaré 4 chips AtMega328; Dado que todos estarán montados en la misma placa de circuito impreso y necesito una conexión ethernet para ellos, me preguntaba si hay alguna forma de compartir la señal ethernet del escudo WizNet W5100 con los 4.

Tenga en cuenta que solo necesitaré recibir las señales, que se transmiten de todos modos, y tengo el código dentro de cada 328 que sabe qué datos leer y qué ignorar; Básicamente, los mismos datos podrían enviarse a todos ellos, pero me gustaría evitar la necesidad de tener a) estúpidamente 4 protectores de ethernet + interruptor de ethernet dentro o b) menos estúpidamente (pero aún así) otros 328 para recibir los datos y reenviar los datos a través de Tx/Rx en serie encadenados a través de todos los demás chips...?

Sé que solo tienen un par de interfaces seriales, pero como solo necesito leer los datos, podría usar el Tx para vincular el Rx de otro sin problemas.

Me preguntaba, ¿hay alguna manera de dividir lo que sale de WizNet IC o no...?

Sé que se conecta a través del encabezado ICSP normalmente, pero está usando pines digitales, no el ICSP real, si no me equivoco, ¿verdad? Entonces, ¿podría funcionar si robara la señal de esos pines y los vinculara paralelamente a otros...?

Y para responder a la pregunta plausible formulada: No, no se puede hacer a través de uno de los circuitos integrados directamente y reenviarse a través de la serie. Si este es el camino, tendré que agregar otro 328 para encargarme de eso. Si puedo evitar eso, sin embargo, sería increíble.

Gracias

Respuestas (1)

El chip W5100 se conecta al Arduino a través de una interfaz SPI. Esta es una interfaz serie de bits (pero no RS-232 serie asíncrona). SPI es una interfaz maestro-esclavo: el Arduino es maestro y el W5100 es esclavo.

No, no puede compartir un solo W5100 en varios Arduinos. Lo mejor que puede hacer es agregar un quinto Arduino para que actúe como maestro para controlar el W5100 y luego conectar ese Arduino (de alguna manera) a los otros cuatro.

De acuerdo. Gracias por aclarar esto. Pero dicho esto, ¿iría bien y lo suficientemente rápido como para compartir datos a través de pines Tx/Rx seriales entre los 5 o no?
@JustMarc No nos ha dicho qué tan rápido necesita que vaya, es decir, qué velocidad de datos por Arduino.
Los paquetes recibidos siempre tienen una longitud de 530 bytes, con una frecuencia de hasta 40 Hz. Sin embargo, si la tasa de datos pudiera mantenerla alrededor de 28 Hz, sería lo suficientemente rápida.
@JustMarc Así que 530*40 = 21200 bytes por segundo, máx. Cada byte serial asíncrono tiene 10 bits (bits de inicio/parada), por lo que son 212000 baudios, suponiendo que podamos conectar un Tx a los cuatro pines Rx y, por lo tanto, enviar los datos solo una vez y que los cuatro Arduinos los reciban juntos. Creo que la velocidad de transmisión más rápida de Arduino es 115200 baudios. Bien, divídalo hacia abajo y obtenemos 11520 bytes por segundo, 21 paquetes por segundo. Dios mío, demasiado lento. ¿O puede establecer una tasa de baudios más alta que 11520? Consulte la hoja de datos de ATmega328.
Correcto. Estaba totalmente ciego acerca de compartir la conexión en serie (facepalm). En ese caso, ¡no es un problema! El AtMega328 con 250k va seguro; Esta es la tasa de baudios que utiliza el protocolo DMX, ¡así que está funcionando con seguridad! :) Gracias por la info.