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!

Make a robot friend with Adafruit’s CRICKIT – A Creative Robotics & Interactive Construction Kit. It’s an add-on to our popular Circuit Playground Express, FEATHER and other platforms to make and program robots with CircuitPython, MakeCode, and Arduino. Start controlling motors, servos, solenoids. You also get signal pins, capacitive touch sensors, a NeoPixel driver and amplified speaker output. It complements & extends your boards so you can still use all the goodies on the microcontroller, now you have a robotics playground as well.

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

CircuitPython in 2018 – Python on Microcontrollers is here!

Have an amazing project to share? Join the SHOW-AND-TELL every Wednesday night at 7:30pm ET on Google+ Hangouts.

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

Follow Adafruit on Instagram for top secret new products, behinds the scenes and more https://www.instagram.com/adafruit/

Maker Business — Fewer startups, and other collateral damage from the 2018 tariffs

Wearables — Light as a Worbla feather

Electronics — How to make your own magnetic field probe!

Biohacking — The State of DNA Analysis in Three Mindmaps

Python for Microcontrollers — One year of CircuitPython weeklies!

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.