Google Calendar Door Sign

So I bought a couple of Spark Cores recently, and they are (from my geeky perspective) the best things ever. Anyone who's been using Arduinos for a while knows that they are a) big and b) expensive. Adding WiFi to that makes it even worse (like £52 worse). Also using the WiFi shield is annoying because most of the time you have to write code that manually sends HTTP headers and stuff like that, which is a waste of time and gets in the way of making cool things.

The Spark changes everything: it's tiny (35mm x 20mm), it's £25 all included, and it's really easy to talk to servers without dealing with low-level irritations. Also it comes with a free breadboard and USB cable which is an unexpected nice touch.

So when my Sparks arrived, I made something that I'd been meaning to make for a long time: a little LCD sign to go on my bedroom door that displays what my Google Calendar thinks I'm currently doing (and yes my bedroom door is covered in XKCD comics).

It's what I think is generally known as a digital toy: it serves no great purpose other than to be interesting and kinda cool. It's mostly so when someone walks past my door they can see what I'm up to (and why I'm not there).

Essentially, it's an LCD display with an i2c backpack plugged into a Spark with a voltage regulator making sure 5V is always coming in. The code on the Spark sits there and waits for messages to be pushed to it from the cloud, and the code on Heroku runs every ten minutes, parses my calendar, and spits out some strings to send to the display. Also, the backlight turns itself off at night, because otherwise it's really annoying.

In the circuit diagram I have it powered off a 9V battery, but in reality I'm using an old busted Arduino as a power supply connected to a wall adapter: the Vin pin of the Arduino goes to the red line in of the breadboard and the ground goes to the ground, through a long piece of dual-core wire that goes through the keyhole in my door.

There's some underlying philosophy of technology that lives only in the now going on here: it does not store a history (being on Heroku it can't) and it's only useful when people walk past it (which doesn't happen all that often), but I haven't really thought about that too much - I just wanted to see if I could make it work.

You can check out the source code and list of materials at the Github Repo.