11

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?

Jeremy Gillick
  • 481
  • 1
  • 3
  • 8

2 Answers2

1

For I2C you can try http://www.linear.com/product/LTC4312

This will allow you to make two I2C networks to address all the nodes.

However, the wiring for I2C will be a nightmare, but it might be necessary if you want the nodes to be independent.

Treesrule14
  • 286
  • 1
  • 5
1

I think I would use RS-485.

With this standard, you can write your own communication-protocol and with arduino it is easy to use with the Serial class. As extensions for the Arduino you only use the MAX485 because it uses the UART-cip of the Arduino.

I have absolutely no experience with the rasperypi but I think it does also have an UART-Cip what would mean, that you can also connect the MAX485.