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?

  • Since you did mention XBee, nRF24 nodes are ridiculously cheap and can be mesh networked. – Dan Nixon Sep 2 '14 at 19:33
  • Would they scale to a system of 225+ nodes in a close space? – Jeremy Gillick Sep 2 '14 at 19:51
  • I don't see why not, each radio can listen to 6 other radios at once. – Dan Nixon Sep 2 '14 at 19:55
  • Seems to me that an Arduino per node is not a cheap way to go. Those are fairly expensive general-purpose devices. Why not build a simpler custom board based on one of the AVR chips like an ATiny? If you're building 225 nodes then $30/node gets really expensive. – Duncan C Sep 3 '14 at 1:24
  • Ultimately doing a custom AVR per node is the plan. I'll just be prototyping it with arduino first. Each node doesn't even need to be smart, so it would be even better if I could find a simple way to mux/demux the input/output from each panel without a microcontroller. – Jeremy Gillick Sep 3 '14 at 1:38

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.


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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.