Programming multiple Arduino boards at once

I have seen this similar question in some trend but the response was not very clear. Maybe it was well addressed in a certain trend i am yet to see.

I am working on a project that has many Arduino boards which will be placed at different locations. The total number of Arduino boards may scale up to 100 and even more. Therefore i am looking for a way to program all of them at once. I do not know of any particular approach. But my desire is to connect only one board to my PC and from there download code to all the other Arduino boards.
Thanks

Theoretically this is possible but you didn't provide enough information to help you further. What type of Arduinos are we writing about? How are they connected? You may have to replace the bootloader. Do you have a ICSP programmer?

If they are not connected (via wires, or via wireless), then you will have to visit all of them to connect up and download code. I offer a Standalone Programmer that you can plug onto the ICSP header of each board to program them.

http://www.crossroadsfencing.com/BobuinoRev17/Programmer.html

Faced with similar problem, I came up with my own solution. I built a small box, about the size of a pack of cigarettes, with a single momentary push-button and a 16x2 LCD display. This box acts as a stand-alone programmer for AVR-based Arduinos.

I then took an existing Arduino application called "ArduinoVirus" that allows one Arduino to "clone" it's running code to another identical Arduino (I was using ProMini's at the time, but ArduinoVirus will work with ANY AVR-based Arduino). I modified ArduinoVirus so it could be easily included in any Arduino application, and assigned a single EEPROM byte to indicate whether or not the code runs the Arduino application, or the ArduinoVirus code. I program the "programmer" with the application containing the ArduinoVirus code, and set the EEPROM byte. I can then simply plug the "programmer" into another Arduino, using the serial port and a cross-over cable, press the button on the programmer, and it will program that other Arduino, with no PCs or any other devices involved. The "programmer" is powered by the target board, so it can be carried to the target board, plugged in, and it does its thing. This has been working perfectly for about 5 years now, and it saves having to remove the target board from its system to re-program it on the PC.

Programming multiple boards in parallel would not be practical without writing your own bootloader and programming code. Even them you'd almost certainly be limited by the number of serial ports available on the "master" device. The programming process REQUIRES feedback from the target device as it proceeds.

Regards,
Ray L.

Mine has the advantage of being able to select 1 of 256 files (00 to FF) from the SD card for download. Dial in the file, press start, watch it run. EEPROM keeps the number of the last program selected, so once powered up again for the Arduino, it's ready to go again with the same file. Will handle multiple chip types as well. I've only used it with 328P, 1284P, and 2560 personally. Nick Gammon developed the code originally, then tweaked it to run on my dedicated hardware.

http://www.gammon.com.au/uploader

CrossRoads:
Mine has the advantage of being able to select 1 of 256 files (00 to FF) from the SD card for download. Dial in the file, press start, watch it run. EEPROM keeps the number of the last program selected, so once powered up again for the Arduino, it's ready to go again with the same file. Will handle multiple chip types as well. I've only used it with 328P, 1284P, and 2560 personally. Nick Gammon developed the code originally, then tweaked it to run on my dedicated hardware.

Gammon Forum : Electronics : Microprocessors : Atmega chip stand-alone programmer to upload .hex files

That is a nice, general-purpose solution! I intended to take mine to that point eventually, but just never had a compelling need to. Now I don't have to! :slight_smile:

Regards,
Ray L.

RayLivingston:
Faced with similar problem, I came up with my own solution. I built a small box, about the size of a pack of cigarettes, with a single momentary push-button and a 16x2 LCD display. This box acts as a stand-alone programmer for AVR-based Arduinos.

I then took an existing Arduino application called "ArduinoVirus" that allows one Arduino to "clone" it's running code to another identical Arduino (I was using ProMini's at the time, but ArduinoVirus will work with ANY AVR-based Arduino). I modified ArduinoVirus so it could be easily included in any Arduino application, and assigned a single EEPROM byte to indicate whether or not the code runs the Arduino application, or the ArduinoVirus code. I program the "programmer" with the application containing the ArduinoVirus code, and set the EEPROM byte. I can then simply plug the "programmer" into another Arduino, using the serial port and a cross-over cable, press the button on the programmer, and it will program that other Arduino, with no PCs or any other devices involved. The "programmer" is powered by the target board, so it can be carried to the target board, plugged in, and it does its thing. This has been working perfectly for about 5 years now, and it saves having to remove the target board from its system to re-program it on the PC.

Programming multiple boards in parallel would not be practical without writing your own bootloader and programming code. Even them you'd almost certainly be limited by the number of serial ports available on the "master" device. The programming process REQUIRES feedback from the target device as it proceeds.

Regards,
Ray L.

This is definitely a great solution and thank you so much for taking your time to share.
I will like to try out your method, if you do not mind, could you share with the details of your method. It could save me time.

Thanks

RayLivingston:
Faced with similar problem, I came up with my own solution. I built a small box, about the size of a pack of cigarettes, with a single momentary push-button and a 16x2 LCD display. This box acts as a stand-alone programmer for AVR-based Arduinos.

I then took an existing Arduino application called "ArduinoVirus" that allows one Arduino to "clone" it's running code to another identical Arduino (I was using ProMini's at the time, but ArduinoVirus will work with ANY AVR-based Arduino). I modified ArduinoVirus so it could be easily included in any Arduino application, and assigned a single EEPROM byte to indicate whether or not the code runs the Arduino application, or the ArduinoVirus code. I program the "programmer" with the application containing the ArduinoVirus code, and set the EEPROM byte. I can then simply plug the "programmer" into another Arduino, using the serial port and a cross-over cable, press the button on the programmer, and it will program that other Arduino, with no PCs or any other devices involved. The "programmer" is powered by the target board, so it can be carried to the target board, plugged in, and it does its thing. This has been working perfectly for about 5 years now, and it saves having to remove the target board from its system to re-program it on the PC.

Programming multiple boards in parallel would not be practical without writing your own bootloader and programming code. Even them you'd almost certainly be limited by the number of serial ports available on the "master" device. The programming process REQUIRES feedback from the target device as it proceeds.

Regards,
Ray L.

Actually what i was thinking to do is, since through ICSP it is possible to program one Arduino board with another AArduino board, i was considering just to scale it up. That is to simply connect multiple arduino boards in the same way two arduino boards are connected through ICSP and i could program them all.

but from your last statement, it seems its not possible right?

CrossRoads:
Mine has the advantage of being able to select 1 of 256 files (00 to FF) from the SD card for download. Dial in the file, press start, watch it run. EEPROM keeps the number of the last program selected, so once powered up again for the Arduino, it's ready to go again with the same file. Will handle multiple chip types as well. I've only used it with 328P, 1284P, and 2560 personally. Nick Gammon developed the code originally, then tweaked it to run on my dedicated hardware.

Gammon Forum : Electronics : Microprocessors : Atmega chip stand-alone programmer to upload .hex files

Thank you for response and your time. I will check out the link you shared.

Could you please explain further further the use of the SD or maybe describe your method better.

Thanks