Chcę stworzyć siatkę czujników obciążenia 15 x 15 i diody LED RGB do interaktywnego parkietu tanecznego. Każdy węzeł będzie prowadzony przez arduino, a cała podłoga będzie zarządzana przez RaspberryPi. Próbuję znaleźć najlepszy sposób, aby węzły komunikowały się z Pi. Idealnie sieć miałaby następujące cechy:
- Niski koszt na węzeł
- Raspberry Pi jako mistrz, arduino węzły jako niewolnicy
- Zdolność wiedzieć, gdzie znajduje się każdy węzeł w siatce
- Leczenie: jeśli węzeł się zepsuje, nie usuwa wszystkich pozostałych.
- Może łatwo zastąpić uszkodzone węzły
- Elektronika dla każdego węzła będzie oddalona o około 12 cali
- Mistrz będzie w odległości 5 - 10 stóp od matrycy.
Do tej pory pracowałem nad kilkoma idiami.
I2C Pozwoliłoby to na adresowanie każdego węzła, jednak wydaje się, że Arduino zezwoli tylko na 127 adresów, a ta matryca będzie miała co najmniej 225 węzłów.
SPI Jeśli łańcuch jest połączony, łatwo byłoby wiedzieć, gdzie jest każdy węzeł w macierzy. Ale jeśli jeden węzeł miałby przerwać wszystkie węzły po tym, jak przestałby się komunikować. (prawda?) Mógłbym mieć każdą stokrotkę z rzędu związaną osobno, więc jeśli ktoś zejdzie na dół, wpływa to tylko na ten rząd.
1-Wire 1-Wire również wygląda obiecująco. Musiałbym wymyślić własny sposób określania umiejscowienia węzłów, który można osiągnąć na wiele sposobów.
Niestandardowy szeregowy Każdy węzeł ma połączenie szeregowe (rx / tx) dla każdej z czterech stron. Pozwoliłoby to komunikować się bezpośrednio z każdym sąsiadem i przekazywać wiadomości, które nie są do niego adresowane. Gdyby jeden węzeł miał się zepsuć, komunikat byłby automatycznie kierowany wokół uszkodzonego węzła, ponieważ do każdego miejsca docelowego prowadzi kilka ścieżek. Ta opcja jest trochę szalona i wolałbym unikać czegoś tak niestandardowego i skomplikowanego.
USB Wymagałoby to koncentratora USB w każdym węźle.
XBee Zbyt drogie.
Inne myśli lub opcje?
źródło
Odpowiedzi:
W przypadku I2C możesz wypróbować http://www.linear.com/product/LTC4312
Umożliwi to utworzenie dwóch sieci I2C do adresowania wszystkich węzłów.
Jednak okablowanie dla I2C będzie koszmarem, ale może być konieczne, jeśli chcesz, aby węzły były niezależne.
źródło
Myślę, że użyłbym RS-485.
Dzięki temu standardowi możesz napisać własny protokół komunikacyjny, a dzięki arduino jest łatwy w użyciu z klasą Serial. Jako rozszerzenia dla Arduino używasz tylko MAX485, ponieważ używa UART-cip Arduino.
Nie mam absolutnie żadnego doświadczenia z rasperypi, ale myślę, że ma on również UART-Cip, co oznaczałoby, że możesz także podłączyć MAX485.
źródło