Ich möchte ein 15 x 15-Raster aus Lastsensoren und RGB-LEDs für eine interaktive Tanzfläche erstellen. Jeder Knoten wird von einem Arduino gesteuert und die gesamte Etage wird von einem RaspberryPi verwaltet. Ich versuche herauszufinden, wie die Knoten am besten mit dem Pi kommunizieren können. Idealerweise hätte das Netzwerk folgende Eigenschaften:
- Niedrige Kosten pro Knoten
- Raspberry Pi als Master, Arduino-Knoten als Slaves
- Fähigkeit zu wissen, wo sich jeder Knoten im Raster befindet
- Heilung: Wenn ein Knoten ausfällt, werden nicht alle anderen Knoten entfernt.
- Kann leicht defekte Knoten ersetzen
- Die Elektronik für jeden Knoten ist ca. 30 cm voneinander entfernt
- Der Master ist 5 bis 10 Fuß von der Matrix entfernt.
Bisher habe ich mich über ein paar Ideen Gedanken gemacht.
I2C Dies würde es jedem Knoten ermöglichen, adressierbar zu sein. Es scheint jedoch, dass Arduino nur bis zu 127 Adressen zulässt und diese Matrix mindestens 225 Knoten hat.
SPI Wenn Daisy verkettet wäre, wäre es leicht zu wissen, wo sich jeder Knoten in der Matrix befindet. Wenn jedoch ein Knoten alle Knoten unterbrechen würde, nachdem er nicht mehr kommuniziert. (richtig?) Ich könnte jedes Reihen-Gänseblümchen separat verketten lassen. Wenn also eines nach unten geht, wirkt sich dies nur auf diese Reihe aus.
1-Draht 1-Draht sieht ebenfalls vielversprechend aus. Ich müsste meine eigene Methode zur Bestimmung der Knotenplatzierung herausfinden, die auf verschiedene Weise erreicht werden kann.
Benutzerdefinierte serielle Knoten Jeder Knoten verfügt über eine serielle Verbindung (rx / tx) für jede seiner vier Seiten. Dies würde es ihm ermöglichen, direkt mit jedem seiner Nachbarn zu kommunizieren und Nachrichten weiterzuleiten, die nicht an ihn gerichtet sind. Wenn ein Knoten ausfällt, wird die Nachricht automatisch um den defekten Knoten herum geleitet, da es zu jedem Ziel mehrere Pfade gibt. Diese Option ist ein bisschen verrückt und ich würde es vorziehen, etwas zu vermeiden, das so individuell und verworren ist.
USB Dies würde einen USB-Hub in jedem Knoten erfordern.
XBee Zu teuer.
Andere Gedanken oder Optionen?
quelle
Antworten:
Für I2C können Sie http://www.linear.com/product/LTC4312 ausprobieren
Auf diese Weise können Sie zwei I2C-Netzwerke erstellen, um alle Knoten zu adressieren.
Die Verkabelung für I2C ist zwar ein Albtraum, kann jedoch erforderlich sein, wenn die Knoten unabhängig sein sollen.
quelle
Ich denke, ich würde RS-485 verwenden.
Mit diesem Standard können Sie Ihr eigenes Kommunikationsprotokoll schreiben und mit Arduino ist es einfach mit der Serial-Klasse zu verwenden. Als Erweiterung für das Arduino verwenden Sie nur den MAX485, da er den UART-cip des Arduino verwendet.
Ich habe absolut keine Erfahrung mit dem Rasperypi, aber ich denke, es hat auch einen UART-Cip, was bedeuten würde, dass Sie auch den MAX485 anschließen können.
quelle