Communication between 10 arduinos

Hello,

I'm currently on a midi controller project and I'm using FSRs (74 of them) to capture forces when a mallet strikes pads (as in many musical project, it requires low latency, around 3-5 ms from the hit to the midi message sent). With the huge number of sensor (74) I didn't know how to handle that with a single arduino but someone told me to buy 9 other arduinos (for example pro-micro) that handle 8-9 FSR each, and to use my actual one (a UNO) as the master one.
So in theory it would give something like this: The 9 slaves one send infos to the master whenever they detect that some force is put on the FSR. And then the master one process the data and send the correct midi message.
The problem is that I have no idea how to make 10 arduinos work together. I read that there were serial protocol as I2C or SPI that has this idea of master/slave but I didn't quite get if there was possible to use this protocol between more than 2 arduino. There is also the fact that in the "ideal" communication process describe above, things seems to run in parallel, but an Arduino processes data sequentially so I think that I need a protocol that optimize the delay between every read of each 9 slave arduino.

So my questions (finally ...) would be the following:

  • Do you know which protocol would best work in my case, and if so, how to implement it in an optimal way?

-Is the concept of multiple slave, one master optimal for my project?

-Which controller to choose, maybe the micro are not that good for slave, and maybe that I need something more powerful than an UNO for the master (maybe even a Raspberry PIE)?

Thank you a lot for your time

Best Regards

Jeremy

sound complicated like your project is about to get much more complex! :wink:

instead of using creating a master-slave system, it it was me I would much rather multiplex the FSR using multiplexers using something like the CD74HC4067. you would need a few a those though (I count at least 5)

just a thought....

sherzaad:
sound complicated like your project is about to get much more complex! :wink:

instead of using creating a master-slave system, it it was me I would much rather multiplex the FSR using multiplexers using something like the CD74HC4067. you would need a few a those though (I count at least 5)

just a thought....

Well the problem with multiplexing is that we have to divide the time of sampling among the 72 FSRs, and the actual time of sampling is great for 2-4 FSRs but not 72 (we would need a 36 times quicker ADC).

JerBaf:
Well the problem with multiplexing is that we have to divide the time of sampling among the 72 FSRs, and the actual time of sampling is great for 2-4 FSRs but not 72 (we would need a 36 times quicker ADC).

well yet another solution that does not involve using and programming multiple arduinos would be to use an external ADCs like the MCP3008. Your 'Master' UNO would simply communicate with them (you would need 10 of those) over SPI.

You can even reduce the number of CS pins on the UNO from 10 (one for each MCP3008) to only two (or even one) by using a decade counter such as the CD4017 coupled with some CD4049 to 'select' the MCP3008 you want the UNO to talk to.

Good luck!