The Project Vending Machine is a machine for distributing source code and other digital details for open-source projects. The user inserts their USB key, pulls knobs to select the projects they want to download, hits a big button, and the details are copied to their USB key. It’s based on an embedded Linux machine – a Chumby, in this case – and runs on a BASH script.
- Cost – We funded this project ourselves, and didn’t want to break the bank.
- Ease of construction – Part of the general idea of this project was to let other people build it too. That meant it had to be repeatable and fairly straightforward to make.
- Time – We didn’t have a lot of time to put this together. The whole thing came together in a little over two weeks of actual (part time) development.
- Fun – The project had to look cool so that people would want to try it out.
- Concept. My friend Rudie and I came up with the idea for the project and figured out the whole overall approach.
- Parts Selection. Between the cheapest available Linux machine – an Insignia Chumby unit – the infrared break-beam sensors for the control knobs and the I2C I/O expanders to interface everything with the Chumby, I was in charge of figuring out the electronics the thing ran on.
- Physical Construction. Rudie and I both worked on the actual design approach as well as the overall construction. This also included the overall look – woodgrain with knobs and aluminum trim to evoke a sense of old cigarette vending machines.
- Programming. Rudie handled the shell script that tied everything together, so my role was a set of C programs to control LEDs and read buttons, which were all called from the shell script.
- Exhibition. For two days at Maker Faire Detroit 2011, I stood in the booth and explained to all interested parties how it worked. It was tons of fun, and we received two Editor’s Choice awards for out efforts.
- Construction – We made it big. Too big. It was tricky to move around, and took up too much of the booth it was in. It was also built just about strong enough to stand on, which it didn’t need to be, so we got a lot of extra weight for no benefit. A little more care in construction would have made adding the finishing touches a bit easier, too
- Protocol selection – Using I2C to interface between several boards was a bad idea. Having all that extra wire on the I2C bus locked it up a few times, which required a full shutdown to clear. If it didn’t fully clear, the ID EEPROMs weren’t accessible when the Chumby booted which led to… strangeness. Using a more reliable and less necessary bus for the external interface would have been a better idea.
- System selection – We got the Chumbies because they were dirt cheap. Turns out that’s because nobody was buying them. By the time we were done our project, the particular Chumby we used was no longer available, so our instructions would be less useful. A year later, Chumby was gone, making the instructions pretty well useless from a repeatability standpoint.