Question:
50 Arduinos peuvent-ils être connectés en série?
Mudzify
2016-06-13 15:15:42 UTC
view on stackexchange narkive permalink

J'ai plusieurs utilisateurs sur des sièges (50), chacun avec un petit clavier pour la saisie.J'ai besoin de collecter les entrées de tous les utilisateurs;Je souhaite utiliser Arduinos pour chaque utilisateur, qui affichera également les réponses sur un écran à 7 segments.J'ai l'intention de connecter tous les Arduinos en utilisant I2C mais je crains que le signal ne baisse en raison des limitations de longue distance et de répartition, alors j'envisage de les chaîner.

Est-ce une bonne idée, ou est-ceexiste-t-il une meilleure approche pour ce faire?

[Très grands systèmes de bus I2C et bus longs] (http://www.nxp.com/documents/application_note/AN11084.pdf)
Allez-vous les alimenter également sur ce câble?
Quelqu'un au milieu coupe un câble ou manipule les données.Littéralement une attaque d'homme du milieu
Pourquoi ne pas gérer plusieurs sièges avec chaque Arduino?Un seul Arduino devrait être suffisamment rapide pour interroger plusieurs claviers et piloter plusieurs écrans (en particulier avec des tampons de verrouillage appropriés à chaque siège), puis au lieu de 50 appareils sur le bus, vous pourriez en avoir seulement 5 ou 10.
Pour le prix d'un arduino, pourquoi ne pas utiliser un Raspberry Pi avec un dongle wifi?Vous en sortirez probablement moins cher pour ne pas avoir à acheter tout ce câble!Si ce n'est pas une application critique absolument en temps réel, cela semble être le mauvais outil pour le travail.
pour la moitié du prix, utilisez un NodeMcu qui intègre déjà le Wifi.
Cinq réponses:
pipe
2016-06-13 16:20:12 UTC
view on stackexchange narkive permalink

Comme le dit la note d'application publiée par RedGrittyBrick:

Parce que l'original I 2 C-les applications de bus étaient internes à un équipement, par exemple dans un PC ou un équipement radio / TV / audio, I 2 C-bus est rarement pris en compte pour les systèmes lorsque de longues distances avec un grand nombre de déchargesdes points sont nécessaires.

La solution de la note d'application consiste à utiliser des circuits pilotes spécifiques pour convertir les signaux en quelque chose qui peut être conduit sur de plus longues distances.

Puisque vousnécessitera de toute façon des circuits pilotes, laissez-moi plutôt vous suggérer de jeter un œil à RS-485.Il s'agit d'une norme éprouvée et fiable pour la transmission bidirectionnelle sur de longs câbles.Il utilise un UART normal sur votre Arduino, et les circuits de pilote peuvent être trouvés sous de nombreuses formes et formes.Si vous ne voulez pas créer votre propre PCB, il existe des cartes adaptatrices disponibles qui prennent un signal TTL RX / TX d'un UART et le convertit en niveaux RS-485.

RS485 est conceptuellement une bonne catégorie de solution, bien que 50 nœuds puissent commencer à dépasser la capacité d'entraînement de certaines implémentations RS485, au moins c'est un problème qui devrait être vérifié.
Le pire des cas (RS-485) est un sélecteur A / B qui bascule entre deux groupes de 25 nœuds.Une broche de l'Arduino ferait le basculement afin qu'il soit synchronisé avec le dernier marqueur EOT.Étant donné que chaque nœud a un ID unique et une détection de collision intégrée, cela devrait fonctionner.
Jules
2016-06-13 22:57:42 UTC
view on stackexchange narkive permalink

Si vous n'êtes pas particulièrement lié à l'idée d'utiliser Arduinos pour cela, vous pouvez essayer d'autres cartes microcontrôleurs.J'aime beaucoup les différentes cartes basées sur la puce ESP8266;ceux-ci auraient l'avantage d'avoir une connexion réseau sans fil intégrée afin qu'ils puissent tous parler directement à votre système central qui stocke l'entrée.

Si le coût supplémentaire (vraiment différent) n'est pas un problème, le sans fil serait très avantageux.En particulier, pas besoin de plus de 50 connexions de câbles différentes et de concevoir le câblage du signal pour l'espace.
@user2943160 Exact - le coût n'est pas réellement un problème à moins que vous ne possédiez déjà l'équipement.Un module comme la carte ESP12 omniprésente (vendue par de nombreux fournisseurs chinois) plus une carte de dérivation (car il s'agit d'un module à montage en surface, et vous voudrez probablement que des broches se connectent) ne coûte qu'un peu plus qu'un clone chinois Arduino, et un peu moins qu'un véritable arduino.Et certainement moins qu'un arduino + un blindage Ethernet ou autre matériel externe.
hardillb
2016-06-13 19:11:26 UTC
view on stackexchange narkive permalink

Avez-vous envisagé Arduino Ethernet avec PoE?Résout le problème d'alimentation des appareils et autorise les communications bidirectionnelles

C'est pratiquement pour cela que Power over Ethernet a été inventé.Excellente suggestion.Vous pouvez même l'implémenter vous-même avec des tensions différentes de la norme, car Ethernet n'utilise pas toutes les paires du câble.
Un Arduino convient plutôt mal à Ethernet, nécessitant à la fois un adaptateur réseau externe qui coûte probablement plus cher que la carte de base et ne disposant pas de beaucoup de mémoire pour gérer les paquets (bien que dans ce cas, ils ne soient pas nécessairement longs).Pour l'application en question, il y a le problème supplémentaire que la plupart des adaptateurs Ethernet compatibles Arduino sont des UTP point à point nécessitant qu'un port concentrateur soit fourni par nœud, ce qui à 50 nœuds s'ajoute à une quantité absurde de câblage.Pour rendre cela pratique, vous devez trouver des adaptateurs 10Base2 intégrés.
@Dan: Cela dépend du type d'Ethernet dont vous parlez - Gigabit ethernet (et plus) utilise toutes les paires ...
@psmears si vous pouvez me trouver un cas d'utilisation arduino qui a besoin de gigabit, je serai impressionné
@psmears À ce stade, vous ne parlez plus de PoE.
@hardillb: Haha, c'est vrai - je ne voulais tout simplement pas que les gens aient l'impression que vous pouvez vous en tirer avec deux des quatre paires pour * n'importe quelle * configuration Ethernet :)
@jpaugh: Pourquoi pas?PoE fonctionne très bien avec Gigabit Ethernet ...
@psmears Je ne suis pas un expert, mais si Gigabit Ethernet utilise déjà tous les fils, comment pouvez-vous en utiliser certains pour l'alimentation?
@jpaugh: La puissance et les signaux sont envoyés sur les mêmes fils - grosso modo, les signaux sont envoyés en utilisant le courant alternatif, et la puissance est envoyée sous forme de décalage CC et filtrée au niveau du récepteur.
@jpaugh: Non seulement cela, mais Gigabit Ethernet utilise les quatre paires dans les deux sens en même temps.Les filtres de l'émetteur-récepteur soustraient son propre signal de sortie pour obtenir le signal envoyé par l'autre côté.Tout cela est fait pour maintenir la fréquence suffisamment basse pour fonctionner sur un câble Cat-5e, plutôt que d'exiger des tolérances encore plus strictes.
Chris Stratton
2016-06-13 23:20:06 UTC
view on stackexchange narkive permalink

Si la distance entre vos nœuds n'est pas grande et que vous n'avez pas besoin d'une communication particulièrement rapide, une connexion en guirlande où les messages sont propagés de l'un à l'autre via des UART série est probablement l'une des rares choses vous pouvez vous passer d ' l'ajout de matériel . Il n'y a pas de limite à la longueur de la chaîne que vous pouvez atteindre si chaque carte régénère le signal qu'elle transmet, mais chaque nœud ajoutera un délai avant de transmettre un message - dans la mise en œuvre la plus simple, le délai par nœud peut être égal à heure de transmission du contenu du message.

Il semble cependant que vous deviez passer des messages dans les deux sens le long de la chaîne. Le défi en cela serait la présence d'un seul UART matériel sur chaque carte. Vous pouvez augmenter cela avec un uart logiciel, mais pour en obtenir plusieurs, vous devez utiliser une implémentation plus sophistiquée que celle par défaut fournie avec l'EDI. Ou si vous pouvez garder à l'écart un port série USB intégré, vous pouvez utiliser le matériel UART pour communiquer dans un sens et le logiciel l'un dans l'autre.

Ou bien sûr, vous pouvez utiliser un [Mega 2560] (https://www.arduino.cc/en/Main/ArduinoBoardMega2560), qui a 4 UART au lieu d'un seul comme les autres Arduinos.
Oui, mais le coût de 50 nœuds ATmega1284 / 2560 s'additionnerait rapidement.Le logiciel Serial devrait fonctionner pour cela, ou il existe plusieurs pièces UART qui coûtent moins cher que chez ATmega328p.
closedball
2016-06-13 19:25:39 UTC
view on stackexchange narkive permalink

Vous pouvez surmonter les limitations I2C en utilisant le DS28E17 pont 1-Wire vers I2C.

Bien entendu, la solution dépendra de votre budget et de la bande passante requise.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...