I'm looking to make a 15 x 15 grid of load sensors and RGB LEDs for an interactive dance floor. Each node will be driven by an arduino and the entire floor will be managed by a RaspberryPi. I'm trying to figure out the best way to have the nodes communicate with the Pi. Ideally the network would have these characteristics:
- Low cost per node
- Raspberry Pi as the master, arduino nodes as slaves
- Ability to know where each node is in the grid
- Healing: If a node goes down it doesn't take out all the others.
- Can easily replace broken nodes
- The electronics for each node will be ~12 inches apart
- The master will be 5 - 10 feet away from the matrix.
So far I have been toiling over a few ides.
I2C This would allow each node to be addressable, however, it seems that Arduino will only allow up to 127 addresses and this matrix will have at least 225 nodes.
SPI If daisy chained it would be easy to know where each node is in the matrix. But if one node were to break all the nodes after it would stop communicating. (right?) I could have each row daisy chained separately, so if one goes down it only affects that row.
1-Wire 1-wire also looks promising. I'd have to figure out my own way of determining node placement, which could be achieved a variety of ways.
Custom Serial Each node has a serial connection (rx/tx) for each of it's four sides. This would allow it to communicate to each of it's neighbors directly and pass along messages that are not addressed to it. If one node were to go down, the message would be automatically routed around the broken node since there are several paths to each destination. This option is a little crazy and I'd prefer to avoid something so custom and convoluted.
USB This would require a USB hub in each node.
XBee Too expensive.
Other thoughts or options?