A Raspberry Pi powered bulk Arduino programmer #piday #raspberrypi @Raspberry_Pi

Via Make.

Whilst building lots of robots to fulfill a recent Kickstarter project, I had the need to program a thousand or so Arduinos, which would take forever if I were to program them all individually. Situations like this are the perfect opportunity to work on those meta projects which can be just as much fun to build as the product itself. In this case I needed something that would:

  • program a number of Arduinos in parallel
  • work without a screen
  • let me know if it had successfully programmed or not
  • be quick and easy to use

Pogo pins are a great way of making a quick temporary electrical connection to a PCB so I decided on using those pretty quickly. I used a little laser cut toggle to hold the Arduino in place. The user interface needed to be kept pretty simple so I settled on some great looking arcade-style buttons that also light up with an LED inside. I think they’re intended for pimping out” boy racer cars” but work pretty well on an Arduino programmer too. I then laser cut a frame for all of these to sit in so that you could quickly slip the Arduino in to place and press the button. When it’s programming the button flashes and when it’s done it stays on if it was successful and goes off if it failed.

I connected up a USB to serial converter to each set of pogo pins and then plugged all of these into a USB hub. To drive the user interface I made a simple little sketch for the Arduino, which would allow external control of the LEDs and emit events when the buttons were pressed. This also plugged into the USB hub which then plugged into the Raspberry Pi.

I wrote a simple piece of software in Node.js, which is great for this kind of parallel event-driven workload. All this does is communicate with the UI Arduino and when a button is pressed it will execute avrdude in a sub-process on the correct serial port. It then tells the UI Arduino to flash the correct LED and then depending on the return code from this external process it will indicate success or failure.

With all of this in place, all I needed to do was tell it to boot at runtime, which I did by putting it into the crontab. The only complex thing to work around was making sure that the USB ports came up with the same ID each time. Fortunately in Linux this is possible by adding a udev script that generates a symlink depending on where the device is on the USB bus. This means that after reboots the USB to serial converters kept the same name.

Because they all operate independently of each other, I’m able to very quickly put one in place, press the button and start putting the next in place. By the time I’ve reached the fifth Arduino, the first has finished. Because they are being done in parallel, it only takes a few seconds to program each Arduino, rather than the 30 or so it would normally take for each one.

Read more.


998Each Friday is PiDay here at Adafruit! Be sure to check out our posts, tutorials and new Raspberry Pi related products. Adafruit has the largest and best selection of Raspberry Pi accessories and all the code & tutorials to get you up and running in no time!


Have an amazing project to share? The Electronics Show and Tell is every Wednesday at 7:30pm ET! To join, head over to YouTube and check out the show’s live chat and our Discord!

Join us every Wednesday night at 8pm ET for Ask an Engineer!

Join over 38,000+ makers on Adafruit’s Discord channels and be part of the community! http://adafru.it/discord

CircuitPython – The easiest way to program microcontrollers – CircuitPython.org


New Products – Adafruit Industries – Makers, hackers, artists, designers and engineers! — New Products 11/15/2024 Featuring Adafruit bq25185 USB / DC / Solar Charger with 3.3V Buck Board! (Video)

Python for Microcontrollers – Adafruit Daily — Python on Microcontrollers Newsletter: A New Arduino MicroPython Package Manager, How-Tos and Much More! #CircuitPython #Python #micropython @ThePSF @Raspberry_Pi

EYE on NPI – Adafruit Daily — EYE on NPI Maxim’s Himalaya uSLIC Step-Down Power Module #EyeOnNPI @maximintegrated @digikey

Adafruit IoT Monthly — The 2024 Recap Issue!

Maker Business – Adafruit Daily — Apple to build another chip at TSMC Arizona

Electronics – Adafruit Daily — SMT Tip – Stop moving around!

Get the only spam-free daily newsletter about wearables, running a "maker business", electronic tips and more! Subscribe at AdafruitDaily.com !


No Comments

No comments yet.

Sorry, the comment form is closed at this time.