3

I am aware that using a USB Hub you can attach multiple arduino to one computer and either upload code one by one or use bash script to upload code on all arduinos together. But you can attach only as many arduino to a computer. I need to prgram around 100 arduinos/atmega ICs at once. Is there a way to do so? There are other methods that I found online like programming ICs over Wifi network. But that require a lot of WiFi chips connected to arduino. I cant setup that. Also that doesn't seems cost effective. Also Arduino sells their uno and other boards with pre-installed blink program. They must be doing batch programming only (multiple ICs at once). Any idea how they do this?

4
  • What is the use case? Production line? I've made shield for the raspberry pi zero so with button, few status leds and two ISP lines to upload communucation 16u2 and 2560 firmware+bootloader in about minute. It's not so much time to do it in parallel. Btw you can chain USB hubs - one 16port -> 16x 16port (=256 if there is no limit on usb itself) and it'll be slow..
    – KIIV
    Jul 11, 2020 at 8:29
  • 2
    To program over USB you need 1 connection per Arduino. The Serial connection cannot just be shared I think. Small deviations in the timing could disturb the whole communication. For programming over ISP you need a programmer for each Arduino. I would think that the production uses individual ISP programmers to program a small batch of Arduinos at once, then moving on to the next batch. When already building a product line automation, why would they need to program 100 of them at once, when the automation could also easily move the programmers between the batches
    – chrisl
    Jul 11, 2020 at 10:07
  • 1
    Why do you need to program 100 Arduinos at once? Can you give a little context here?
    – chrisl
    Jul 11, 2020 at 10:08
  • @chrisl I actually made a prototype with multiplexing Chip select pin on arduino, which is connected to RESET pin of target board to program. When I am connecting one target board at once I am able to program it but when I am connecting multiple target boards then not even one is programming. I am using Nick gammon's code for programming the target arduino using the master arduino github.com/nickgammon/arduino_sketches/tree/master/… This is rough block diagram of multiplexing chip select pin - imgur.com/a/XX4Nyf8
    – Robot
    Nov 9, 2020 at 11:43

3 Answers 3

1

Arduino, the company, may sell on enough volume to make it worthwhile to get the microcontroller manufacturer to program the microcontrollers durin the production process This wouldn't cost them extra if they already get the bootloader pre-programmed. I've read programming ICs is a service available to high volume customers.

I guess low volume makers use fixtures that use the ICSP headers, pogo sticks or IC clips and which trigger the programming on contact using a microswitch etc.

I suspect Adafruit do something of this sort, see GIFs and video discussing testing at

https://www.adafruit.com/product/2458

1
  • I actually made a prototype with multiplexing Chip select pin on arduino, which is connected to RESET pin of target board to program. When I am connecting one target board at once I am able to program it but when I am connecting multiple target boards then not even one is programming. I am using Nick gammon's code for programming the target arduino using the master arduino github.com/nickgammon/arduino_sketches/tree/master/… This is rough block diagram of multiplexing chip select pin - imgur.com/a/XX4Nyf8
    – Robot
    Nov 9, 2020 at 11:02
1

I recommend using optiloader, which uses a standalone arduino to program an arduino connected to it. You can therefore create as many arduino programmers as you want, each of which can run without connecting to a host computer. This is how firmware is loaded for high volume production.

0

Any idea how they do this?

You can buy gadgets that let you upload code in a second or so. For example, here. You plug in the target board, press a button, and it's done.

These program a board in a couple of seconds. While this is hardly literally "at once" it would take time anyway to connect 100 Arduinos to "something" so connecting and disconnecting every couple of seconds is roughly the same thing.

That board mentioned above uses code I wrote which can run on an ordinary Arduino. In other words, use one to program another, where the code to be uploaded is stored on a micro-SD card.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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