July 19, 2008

Keep your software with your hardware!

After building a number of physical computing projects on a number of different computers over the years, I frequently run into the following problems:
I pull an old project off the shelf that is still running and I want to modify it. However, I have absolutely no idea which computer and which folder my project files are on. I likely don't even use the computer anymore. Even worse, sometimes I pull an Arduino board out of a completed prototype because I don't have another board on hand. After pulling out the board and reprogramming, I now have a broken prototype with no easy way to get it back up and running again.

The basic idea to address this problem is to physically keep the entire project source files with the project at all times. My simple, ham-handed solution is to add both a USB flash drive and a USB hub to the Arduino hardware. You connect both the flash drive and the Arduino to the hub, and then connect the hub to the computer. Result: you can still shuttle data back and forth between the Arduino and the computer, but you also have a file system to store your project files.

Artists and students don't have a lot of money - so what's the cheapest way to implement this idea?
IMG_3165

At my local Fry's, the answer is $7.98. That gets you a 128MB flash drive on closeout and a four-port USB 1.1 hub. Plug everything together et voila:

IMG_3173

This first solution is clearly a bit unwieldy.

IMG_3180

Above, I just took the PCBs for flash drive and hub out of their cases and zip-tied everything together. This is NOT functional, but closer to what we want to end up with. So off to the lab to make this smaller version work. To keep cabling under control, solder the flash drive directly to a port of the hub, and then solder another short cable with a USB B plug to a second port, to connect to the Arduino. This way, you don't have to solder to the Arduino itself and can connect and disconnect the entire storage+hub part.

IMG_3184
Above is the final (functional) prototype - the added bulk is minimal, altough the board is no longer on stable footing. Here's another shot from a different angle:

IMG_3187

That leaves one step: to have the Arduino environment save it's project files to the USB stick automatically. This is accomplished by opening the Arduino software and changing the sketchbook location under Preferences.

As an extension, you can imagine storing your entire Arduino development environment on the Flash drive as well. In this case, you'll have to choose at least a 256MB stick (1GB sells for $10 right now) and a USB2.0 Hub ($10 as well).
If the ugliness of the prototype is a concern, one could design a shield that houses both a mini breadboard, a USB hub chip+circuitry, and a USB plug where you supply your own flash drive.

Thanks to Sean Follmer for helping with construction and photography.

Posted by Bjoern Hartmann at July 19, 2008 12:51 AM
Comments