Load program for multiple Arduinos simultaneously?

Hi all,

I have a project which requires something like 16 Arduinos located relatively far away from each other, as much as 10 meters away from each other. They're just used for data I/O. Because of the distance, I don't think SPI or I2C will work, so I want to connect all the Arduinos using RS-485 to a central master. When I power up the system, I'd like the master Arduino to load all the remotes with the same program through RS-485 using a transceiver, but I know that tying all the MISO lines together will not work.

After the program is loaded, I'll be able to individually address each remote Arduino, so they won't all be talking at once.

I don't really care about verifying the program until after the programs are presumably downloaded, and I'm fine with having the entire system fail if one unit fails to be programmed. My question is, is there any requirement to listen to the bytes that an Arduino under programming sends out? Can I safely disconnect MISO and blindly send the program data into MOSI with a common SCLK and reasonably expect the remotes to get programmed properly?



Im not sure how the upload process works but maybe try just one without miso connected and see what happens

Why you going to need to update code so often that this approach makes sense?

You cannot use any standard ISP method to program several chips at once. You can if you add hardware to isolate the SCK signal from all but one at a time, but you still have to program them separately, that just makes it easier. And how would you remotely isolate the SCK signals?

You could of course write your own bootloader that does this.


OK, I think this is forehead-slapping time. I didn't realize how Optiboot worked: if you power up without external reset, the sketch runs automatically. For some reason I thought you had to upload the sketch every time you powered up!