7 votos

¿Se pueden encadenar 50 Arduinos?

Tengo varios usuarios en los asientos (50), cada uno con un pequeño teclado para la entrada. Necesito recoger las entradas de todos los usuarios; quiero utilizar Arduinos para cada usuario, que también mostrará las respuestas en una pantalla de 7 segmentos. Tengo la intención de conectar todos los Arduinos mediante I2C, pero me temo que la señal podría caer debido a la larga distancia y a las limitaciones de los ventiladores, por lo que estoy considerando conectarlos en cadena.

¿Es una buena idea, o hay un enfoque mejor para hacerlo?

3 votos

1 votos

¿También vas a alimentarlas con este cable?

1 votos

Alguien en el medio cortando un cable o manipulando los datos. Literalmente, un ataque de hombre en el medio

21voto

pipe Puntos 314

Como el nota de aplicación publicado por RedGrittyBrick dice:

Porque el I original 2 Las aplicaciones de C-bus eran internas a un equipo, por ejemplo en un PC o en un equipo de radio/TV/audio, I 2 El bus C rara vez se considera para los sistemas cuando se requieren largas distancias con un gran número de puntos de entrega.

Las soluciones de la nota de aplicación consisten en utilizar circuitos conductores específicos para convertir las señales en algo que pueda ser conducido a través de distancias más largas.

Dado que de todos modos necesitará circuitos de controladores, permítame sugerirle que eche un vistazo a RS-485 . Se trata de un estándar probado y fiable para la transmisión bidireccional a través de cables largos. Utiliza una UART normal en su Arduino, y los circuitos de controladores se pueden encontrar en muchas formas. Si no quieres hacer tu propia PCB hay placas adaptadoras disponibles que toman una señal TTL RX/TX de una UART y la convierten a niveles RS-485.

3 votos

RS485 es conceptualmente una buena categoría de solución, aunque 50 nodos pueden empezar a exceder la capacidad de accionamiento de algunas implementaciones de RS485, al menos es una cuestión que habría que comprobar.

0 votos

El peor caso (RS-485) es un selector A/B que alterna entre dos grupos de 25 nodos. Un pin del Arduino haría la conmutación para que se sincronice con el último marcador EOT. Dado que cada nodo tiene un ID único y una detección de colisiones integrada, debería funcionar.

7voto

Rhys Puntos 2173

Si no estás particularmente atado a la idea de usar Arduinos para esto, podrías probar algunas otras placas de microcontroladores. A mí me gustan bastante las distintas placas que se basan en el chip ESP8266; estas tendrían la ventaja de que tienen una conexión de red inalámbrica integral para que todas puedan hablar directamente con tu sistema central que almacena la entrada.

0 votos

Si el coste adicional (en realidad, diferente) no es un problema, la conexión inalámbrica sería muy ventajosa. En particular, no es necesario realizar más de 50 conexiones de cables diferentes ni diseñar el cableado de la señal para el espacio.

1 votos

@user2943160 Cierto - el coste no es realmente un problema a menos que ya tengas el equipo. Un módulo como la omnipresente placa ESP12 (vendida por numerosos vendedores chinos) más una placa breakout (porque es un módulo de montaje superficial, y es probable que quieras pines para conectar) cuesta sólo una pequeña cantidad más que un arduino clónico chino, y algo menos que un arduino genuino. Y ciertamente menos que un arduino + un escudo ethernet u otro hardware externo.

5voto

Guanidene Puntos 258

¿Has considerado el arduino Ethernet con PoE? Resuelve el problema de la alimentación de los dispositivos y permite las comunicaciones bidireccionales

1 votos

Esto es prácticamente para lo que se inventó el Power over Ethernet. Excelente sugerencia. Incluso puedes implementarla tú mismo con tensiones diferentes a las del estándar, ya que Ethernet no utiliza todos los pares del cable.

5 votos

Un Arduino es bastante pobre para Ethernet, ya que requiere un adaptador de red externo que probablemente cuesta más que la placa base, y no tiene mucha memoria para manejar los paquetes (aunque en este caso no necesitan ser largos). Para la aplicación en cuestión existe el problema adicional de que la mayoría de los adaptadores Ethernet compatibles con Arduino son UTP punto a punto, lo que requiere que se proporcione un puerto hub por nodo, lo que a 50 nodos suma una cantidad absurda de cableado. Para que esto sea en absoluto práctico, habría que encontrar adaptadores 10Base2 integrados.

0 votos

@Dan: Eso depende del tipo de Ethernet del que estés hablando - Gigabit ethernet (y superior) sí utiliza todos los pares...

2voto

Andrew Walker Puntos 9038

Si la distancia entre sus nodos no es grande, y usted no necesita obtener una comunicación particularmente rápida, una cadena de margaritas donde los mensajes se propagan de uno a otro a través de UARTs en serie es probable una de las pocas cosas de las que se puede prescindir añadiendo hardware . No hay límite a la longitud de la cadena que se puede conseguir si cada placa regenera la señal que transmite, sin embargo cada nodo añadirá un cierto retraso antes de transmitir un mensaje - en la implementación más simple, el retraso por nodo podría ser igual al tiempo de transmisión del contenido del mensaje.

Sin embargo, parece que es necesario pasar mensajes en ambas direcciones a lo largo de la cadena. El desafío en eso sería la presencia de sólo una UART de hardware en cada placa. Puedes aumentar eso con un uart de software, aunque para tener más de uno de esos tienes que usar una implementación más sofisticada que la que viene por defecto con el IDE. O si puedes mantener cualquier USB-serial a bordo fuera del camino, puedes usar la UART de hardware para comunicar en una dirección y la de software en la otra.

0 votos

O, por supuesto, puede utilizar un Mega 2560 que tiene 4 UARTs en lugar de sólo 1 como otros Arduinos.

0 votos

Sí, pero el coste de 50 nodos ATmega1284/2560 aumentaría rápidamente. El software Serial debería funcionar para esto, o hay partes de UART múltiples que cuestan menos que el ATmega328p.

1voto

ipavlic Puntos 362

Puedes superar las limitaciones de I2C utilizando DS28E17 Puente de 1 cable a I2C.

Por supuesto, la solución dependerá de su presupuesto y del ancho de banda necesario.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X