Multiplexer is a great idea! If I'm understanding correctly, it will let me use a single master?
Yes, I've only seen 8:1 MUXes so you will still need a few of them.
Arduino connected to MUX with each multiplexer line connected to 100 Arduinos across a buffer?
That's the theory, but I cannot say that all the wire and 100 slaves will not exceed the capacitance, and I don't know how to find that out without trying it. Still you don't have to have 100 slaves on each line.
Another issue is how to select 100 busses, the PCA9547 I mentioned only has 3 address lines, so without further address decoding you can only have 8 of them. That said the "further decoding" will just be a single 74xx138 I think. So with a single 138 you can address 8 MUXes each with 8 I2C busses, that's 64 busses or ~15 nodes per bus, well within capacitance range I would think. (EDIT: will need more than a single 138)
Computer -> Master Arduino -> MUX -> I2C buffer -> cable -> I2C buffer -> Slave Arduino
That looks right, but of course several MUXes.
I'm assuming multi-drop is same as a star topology
Not normally but it can. all it refers to us the fact that all nodes connect to the same wires, this is normally along a single cable but subject to various factors it can be a star.
then won't multi-drop UART face the same problem of wire capacitance?
No, the difference is that I2C is open-collector, there is no active circuitry driving the line high, just a pullup resistor. Whereas UART comms has both active high and low levels.
Daisy-chaning of course eliminates all these sorts of issues, but might create another
I'm guessing daisy chaining UART or RS-485 some 1000 Arduinos will probably cause latency in order of seconds
That depends on the baud rate, depending on how it's done you can have as little as a one-byte delay per node, that's 10 bits. At 115200 that's 87uS per node or 87mS from node 0 to node 999. Let's say 100mS, that's a refresh rate of 10Hz.
EDIT: Oops, out by a factor of 10, figures right now I think.
There would I think be a ripple effect with this technique, and you may have to organise some sort of syncing so all the nodes change at the same time.
EDIT: That's for a single byte, your protocol would probably have 2-3 at least, so multiple times by that.
and a huge possibility of data corruption...
I see no reason to assume there will be corruption any more than the other options.
is it possible to multi-drop RS-485? I read here that RS-485 only supports max 32 receivers
RS-485 allows 32 "Unit Loads" (ULs) and in the early days that did indeed means 32 nodes. However these days 1/4 and 1/8 UL chips are available so 256 nodes is achievable.
Is that is at protocol level or hardware?
There is no RS-485 protocol, it's strictly a hardware definition. The protocol is up to you.
Now, having written all that I just reread the first post and you say 100 not 1000...or maybe not
2D array of 100x10. There will be probably around a thousand of these units controlled by a main computer.
I'm planning on using I2C to control a 10x10 grid of these, which will be about 1.5-2 meters in width and height. A master Arduino will receive data from computer and will forward data to the 100 slaves in its grid.
Can you draw a tree showing the hierarchy and the distances involved? I'm confused as to how many Arduinos are controlling how many LEDs/sensors/whatevers. This need to be documented well because the topology will probably make a big difference to how it's done.
Rob