Je cherche à créer une grille de 15 x 15 capteurs de charge et LED RGB pour une piste de danse interactive. Chaque nœud sera piloté par un arduino et tout l'étage sera géré par un RaspberryPi. J'essaie de trouver la meilleure façon de faire communiquer les nœuds avec le Pi. Idéalement, le réseau aurait ces caractéristiques:
- Faible coût par nœud
- Raspberry Pi comme maître, nœuds Arduino comme esclaves
- Capacité de savoir où se trouve chaque nœud dans la grille
- Guérison: si un nœud tombe en panne, il n'enlève pas tous les autres.
- Peut facilement remplacer les nœuds cassés
- L'électronique de chaque nœud sera distante d'environ 12 pouces
- Le maître sera à 5 - 10 pieds de la matrice.
Jusqu'à présent, j'ai travaillé sur quelques ides.
I2C Cela permettrait à chaque nœud d'être adressable, cependant, il semble que Arduino n'autorisera que 127 adresses et cette matrice aura au moins 225 nœuds.
SPI Si connecté en guirlande, il serait facile de savoir où se trouve chaque nœud dans la matrice. Mais si un nœud venait à casser tous les nœuds après qu'il cesserait de communiquer. (à droite?) Je pourrais avoir chaque marguerite chaînée séparément, donc si on descend, cela n'affecte que cette rangée.
1 fil 1 fil semble également prometteur. Je devrais trouver ma propre façon de déterminer l'emplacement des nœuds, ce qui pourrait être réalisé de différentes manières.
Série personnalisée Chaque nœud possède une connexion série (rx / tx) pour chacun de ses quatre côtés. Cela lui permettrait de communiquer directement avec chacun de ses voisins et de transmettre des messages qui ne lui sont pas adressés. Si un nœud devait tomber, le message serait automatiquement acheminé autour du nœud rompu car il existe plusieurs chemins vers chaque destination. Cette option est un peu folle et je préfère éviter quelque chose de si personnalisé et alambiqué.
USB Cela nécessiterait un concentrateur USB dans chaque nœud.
XBee Trop cher.
D'autres pensées ou options?
la source
Réponses:
Pour I2C, vous pouvez essayer http://www.linear.com/product/LTC4312
Cela vous permettra de créer deux réseaux I2C pour adresser tous les nœuds.
Cependant, le câblage pour I2C sera un cauchemar, mais il peut être nécessaire si vous souhaitez que les nœuds soient indépendants.
la source
Je pense que j'utiliserais RS-485.
Avec cette norme, vous pouvez écrire votre propre protocole de communication et avec arduino, il est facile à utiliser avec la classe Serial. En tant qu'extensions pour l'Arduino, vous n'utilisez que le MAX485 car il utilise le UART-cip de l'Arduino.
Je n'ai absolument aucune expérience avec le rasperypi mais je pense qu'il a aussi un UART-Cip ce qui voudrait dire que vous pouvez également connecter le MAX485.
la source