Using Little Computers to control Big Computers

Here’s my latest Raspberry Pi-based experiment: the CloudSwitch.

I don’t discuss the software in the video, but the fun thing is that the Pi isn’t dependent on some intermediate server – it’s using the boto module for Python to manage the AWS resources directly.

I decided to build the app slightly differently from the way I would normally approach a little project like this. I knew that, even for this very simple system, I would have several inputs and outputs of various kinds, some of them with big delays, and I wanted to make sure that timing hiccups or race conditions didn’t ever leave the lights displaying something that didn’t represent reality.

So this is only a single python file, but it runs several threads – one that looks for button presses, one that monitors and controls the Amazon server, and one that handles the lights – including flashing them in various patterns. They interact with the main thread using ZeroMQ messages, which is a lovely way to do inter-thread communications without all that nasty messing about with semaphores and mutexes.

Update: Here’s the very simple circuit diagram. The illuminated buttons I used have LEDs which take a little more power than the Raspberry Pi can really drive, so I put a couple of NPN transistors in there. It really doesn’t matter too much what they are – I used the 2N3904.

3 Comments

Great little experiment. Show us the code!

Wow, that’s impressive! I admire it’s very close to finished product… highly polished and all that. šŸ˜‰

And I agree with Steve Holden… would you please be so kind as to show us the source (and perhaps more detailed build instructions)?

Although I have a hunch how to go about replicating your setup I’d love to have a working project to draw inspiration from.

Time to go into production šŸ™‚ Wonder if @cammakespace allows commercial use of their space šŸ™‚

Leave a Reply

© Copyright Quentin Stafford-Fraser