Я собираюсь сделать сетку датчиков нагрузки 15 х 15 и светодиодов RGB для интерактивного танцпола. Каждый узел будет управляться Arduino, а весь этаж будет управляться RaspberryPi. Я пытаюсь выяснить, как лучше связать узлы с Пи. В идеале сеть должна иметь следующие характеристики:
- Низкая стоимость на узел
- Raspberry Pi как хозяин, узлы arduino как рабы
- Возможность узнать, где находится каждый узел в сетке
- Исцеление: если узел выходит из строя, он не уничтожает все остальные.
- Может легко заменить сломанные узлы
- Электроника для каждого узла будет на расстоянии ~ 12 дюймов
- Мастер будет на расстоянии 5 - 10 футов от матрицы.
До сих пор я трудился над несколькими идеями.
I2C Это позволит каждому адресу быть адресуемым, однако, похоже, что Arduino разрешит только до 127 адресов, и эта матрица будет иметь по крайней мере 225 узлов.
SPI Если бы была подключена гирлянда, было бы легко узнать, где находится каждый узел в матрице. Но если один узел сломает все узлы после того, как он прекратит связь. (верно?) Я мог бы соединить каждую гирлянду в ряд отдельно, поэтому, если один из них выйдет из строя, это повлияет только на этот ряд.
1-Wire 1-wire также выглядит многообещающе. Я должен был бы придумать свой собственный способ определения размещения узлов, что может быть достигнуто различными способами.
Custom Serial Каждый узел имеет последовательное соединение (rx / tx) для каждой из четырех сторон. Это позволило бы ему общаться с каждым из его соседей напрямую и передавать сообщения, которые не адресованы ему. Если один узел должен был выйти из строя, сообщение будет автоматически направлено вокруг сломанного узла, поскольку существует несколько путей к каждому месту назначения. Этот вариант немного сумасшедший, и я предпочел бы избегать чего-то такого необычного и запутанного.
USB Для этого потребуется USB-концентратор в каждом узле.
XBee слишком дорого.
Другие мысли или варианты?
источник
Ответы:
Для I2C вы можете попробовать http://www.linear.com/product/LTC4312
Это позволит вам создать две сети I2C для адресации всех узлов.
Тем не менее, проводка для I2C будет кошмаром, но это может быть необходимо, если вы хотите, чтобы узлы были независимыми.
источник
Я думаю, что я бы использовал RS-485.
С этим стандартом вы можете написать свой собственный коммуникационный протокол, а с Arduino его легко использовать с классом Serial. В качестве расширений для Arduino вы используете только MAX485, потому что он использует UART-чип Arduino.
У меня нет абсолютно никакого опыта с расперипи, но я думаю, что он также имеет UART-Cip, что означает, что вы также можете подключить MAX485.
источник