I’ve been meaning to do some experiments with RFID for a while. Â The technology is cheap, reliable and opens up a world of possibilities for exhibit and event IT interactive displays.
I chose Arduino as my platform for RFID, not only because it’s robust and I’m familiar with it, but also because it has established integration with openFrameworks and Flash – my two platforms of choice for interactive displays.
My first RFID module arrived today and I’m pleased to say that it was up and running within the hour. Â So far it seems totally reliable and incredibly fast – a quick swipe past the reader is enough to correctly identify the card.
Here’s a quick video of my first test. Â It’s a really simple ‘hello world’ type example, but it demonstrates a few things: 1) the I2C protocol works; 2) the wiring is correct; 3) this simple sketch is enough to get the raw ID numbers off the card and out to the serial line.
Once we’ve got serial I/O, everything else (in Flash, HTML, openFrameworks, etc) is established tech.
What’s next? I’d love to do an event or venue installation where RFID labels (which cost pennies each) personalise an AV experience to each user. Â But for now I might pair this with a door lock to give me contactless access to my garage.
A couple of weeks ago I was in our local Boots chemist. They were clearing out all the Christmas gifts at 75% off.  I saw this Space Invaders alarm clock reduced to around £3 ($5) and had to have it, even though I had no use for another alarm clock.  (Btw, even though Boots are now sold out, the same clock is available from Play, IWOOT, Menkind and others.)
The challenge was… what to do with it?
In the end I decided to turn it into an ambient device, connected to the internet and capable of alerting me when things happen. Right now I’ve got it firing up with a new message arrives in my Gmail inbox, but really it could do anything – flag up Twitter replies, indicate the chance of rain or even, paired with one of my previous projects, act as an additional ringer for the doorbell.  I’ve added a row of LEDs (three red, three yellow) to give it some more feedback options.
Every time I get a new email the clock moves from side to side and does the classic Space Invaders sound, then lights one of the LEDs to give me an idea of how many unread messages there are. Â There’s loads more that could be done with it, but I was happy just turning it into something more useful without destroying it in the process.
If you want to make one yourself, here’s what I did…
I used an Arduino to give the clock some more logic. I didn’t want to alter the external appearance of the clock and space was incredibly tight inside, so I used an Arduino Nano clone that I had lying around.
First step was to get the components working on a breadboard. I ran 6 LEDs off the Arduino’s digital pins and added an opto-isolator to another digital pin to act as a switch. I knew the Arduino wouldn’t be able to drive the clock’s motor straight off an IO pin, so my plan was to simply trigger the clock’s handy ‘demo’ button from the pin and deliver the main clock/motor power from the direct 5V pin on Arduino.
Here’s the wiring layout that I ended up with…
The original power source for the clock was 3 AA batteries producing around 4.5v. I was planning to power the clock directly over USB – I figured 5V was close enough – so the battery compartment provided the perfect space to house the additional components. Unfortunately the battery box wasn’t quite deep enough for the Nano, so my first job was to cut out the battery recess with a craft knife. I left a small lip on the bottom edge to support the additional components and to retain the original motor mounting point.
With a bit of breadboard trimming (with a hacksaw… quick and nasty!) I was able to fit it into the clock…
Next step, the Arduino sketch. The code is currently dead simple: listen to the serial input and if it’s a number, light that many LEDs; if the new number is higher than the old number (i.e. you’ve got new emails, not just cleared out old ones) then also close the ‘demo’ switch to activate the sound and movement. Here’s the finished code.
int ser = 0; // for incoming serial data
int prevCount = 0;
int timer = 100;
void setup() {
for (int thisPin = 2; thisPin <= 13; thisPin++) {
pinMode(thisPin, OUTPUT);
}
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}
void loop() {
if (Serial.available() > 0) {
// read the incoming byte:
ser = Serial.read();
if (ser >= 48 && ser <= 58) {
int newCount = ser - 48;
if (newCount > 0 && newCount > prevCount) {
digitalWrite(12, HIGH);
delay(100);
digitalWrite(12, LOW);
delay(1500);
digitalWrite(12, HIGH);
delay(500);
digitalWrite(12, LOW);
}
prevCount = newCount;
} else {
digitalWrite(13, HIGH);
delay(100);
digitalWrite(13,LOW);
}
}
for (int thisPin = 3; thisPin <= topPin; thisPin++) {
if(thisPin <= 5) {
digitalWrite(thisPin, HIGH);
} else {
digitalWrite(thisPin+3, HIGH); // Because I left a gap in the digital pins
}
}
}
The last step was to write a quick script to poll Gmail and get the number of unread messages. Â I’ve tried lots of different languages for Arduino serial control in the past – Perl, PHP and DOS shell scripts – but every time it’s been a little bit flakey, at least under Windows. Flash Actionscript is pretty reliable using Serproxy, but that was overkill for this project. So in the end I decided to give Python a go. It was a good choice – reliable and really quick to implement. Â Here’s the code…
The only bit that had me scratching my head was Arduino’s trick of resetting every time the serial line is opened. Â The Nano takes around 1.5 seconds to restart, meaning it would always miss the first mail notification. A wee sleep command fixed that.
And that’s about it. Three hours and around £12 of components (including the Nano clone) to turn an alarm clock into a Gmail notifier.
Future scope
There are still lots of free pins on the Nano, so plenty of scope for expansion. A light sensor could be a useful addition so it doesn’t trigger when the room lights are off, and maybe a knock sensor so it could be set to ‘snooze’ with a quick tap. Apart from that, most other mods would be software-based. I might make the three red LEDs linked to Gmail and the yellow ones linked to Twitter.
If you decide to make one of your own please let me know. Â And if you make any improvements to the software, please share!
Update: The response to this hack has been phenomenal – thanks for all your emails and feedback. Here are some of the mainstream sources that have picked up on it.
I was in B&Q a few weeks ago and this LED panel caught my eye. Â It’s not the type of thing I’d normally buy but I fancied its hacking potential as an ambient device of some sort.
Taking the back off revealed a set of nine mini circuit boards, each with a red, green and blue LED plus a simple circuit to cycle through those colours. Â The wiring couldn’t have been simpler – the 5V DC power supply ran to a switch with each of the LED boards wired in parallel from that.
Soon after baby Ewan was born I thought it would be fun to design a custom skateboard for him. I’ve been into skateboards since I was 14 and always thought it would be fun to come up with my own design. Ewan gave me the inspiration for a design, so I decided to get my crayons out and see what I could come up with.
My two favourite deck design styles are: product/logo inspired designs like Chocolate’s Vespa and Pellegrino by Evan Hecox, or many of the Girl decks by Andy Jenkins; and secondly decks that combine vector art with photography like the Enjoi Kitten Dreams design by Winston Tseng.
So for my first custom deck design I wanted to combine those two styles. I had already taken the pic of Ewan and he looked like he was trying to burst out of something, so I thought the Kinder egg was a nice idea.
I recreated the Kinder egg design in Illustrator, then took it into Photoshop to composite it with the photo, background and various bits of text.
There are a few nice wee touches in there, like the weight being his actual birth weight, and his birthday as the ‘hatch by’ date. Hopefully he’ll appreciate all the thought that went into it… one day.
More than likely, by the time he’s old enough to ride it he’ll say there’s no way I’m riding that baby board… it’s SOOOO embarrassing. Which, I suppose, is kinda the point — I want to keep it!
Actually getting the thing produced proved more difficult than I’d expected. There aren’t many companies that offer full colour printing directly onto proper concaved decks. My first attempt was to go with the generic custom print shop Zazzle, but they weren’t comfortable with the logo copyright issues.
After a bit more hunting around I discovered BoardPusher, based in Denver, Colorado. They’re one of the original (possibly the original) companies to offer custom deck printing, and all the reviews I could find suggested they did a good job.
I placed my order about three weeks ago, and within a few days it had been completed and shipped. The big wait was international shipping — the gap from “Departed San Francisco” to “Arrived UK” was almost a full week — but it did finally arrive, and was absolutely perfect. The BoardPusher guys did an amazing job.
I had been planning to keep it as a wall hanging deck, without any trucks or wheels, but Tara convinced me otherwise. So, a few days ago I ordered some matching Enuff trucks and Corelite wheels and got the thing built up.  I topped it off with some clear grip tape, because it seemed a shame to completely hide the Canadian Maple on both sides.
About six months ago (best man) Scott gave me an LCD projector that he had spare. It’s a 3M MP8640 – a big, heavy office projector that originally cost about £3,500 when it was made back in early 2000.  Ten years on it still does a pretty good job, so I was determined to do something decent with it.
I didn’t think Tara would be too impressed with me setting up a cinema in our living room, so I decided to install it out in the summer house. With our wee baby Ewan arriving just a few weeks ago, I didn’t want to spend much on the setup. It worked out pretty well, in the end costing me less than £20.
First step was to choose a screen. Tara’s dad let me try out their old slide projector screen. It produced a nice clear picture, but it didn’t quite give me the size I was after. Also, I thought it would be pretty difficult to mount on the wall as it was designed as a floor stander.
In the end I decided to go for an IKEA Tupplur blind, which I had read good things about on some AV forums. In 180cm width it cost just £18.99 and gives a 16:9 picture of approx 82″. Here’s how it looks with the lights on (just to show the size and positioning)…
The projector is quite noisy, so I thought it would be best to put it in the garage side with a wee projection window allowing the light through to the summer house side. For the projection window, I used a 6×4″ photo frame which was perfect for the job. The only problem was that it was directly above my dart board, so I added another hinged 7×5″ frame over the top with the glass replaced with wood, just in case any stray darts go directly though the projector lens.
The only remaining problem was keystoning. The projector has fixed keystone correction and was designed to be desk mounted, so when mounting it from the ceiling the picture was heavily skewed.  I fixed that by mounting the projector upside down and then rotating the picture 180 degrees.  At some point I still need to build a wooden frame to mount the projector at the correct angle, but for now it’s resting quite happily on my DIY book.
Here’s the finished results in the dark (excuse the visible WMP controls at the top and bottom – it obviously looks much better with those hidden)…
And finally, here’s how the whole summer house is looking these days (click for larger version)…
With winter on the way, one thing I really had to sort out was heating for the garage, especially on the summer house side. The insulation in the walls and ceiling is working well, but with outdoor temperatures dropping to single digits I really needed something to raise the temperature in the winter evenings.
I had looked at various wee fan heaters and oil heaters but nothing seemed quite right for the project. Then I happened to find a nice glass panel heater in the B&Q sale.  It seemed to tick all of the boxes: not too thirsty (max 1kW); compact; wall mounted; silent… and best of all it’s digital!
It’s ideal for the summer house, just turn it on and it quickly heats the room to the chosen temperature — 12c to 19c takes about ten minutes — then it just maintains that temperature for as long as you’re out there. The loft insulation seems to be doing it’s job, as the heating element only comes on very occasionally once the room is up to temperature.
And now for the missing link… high-speed internet access!
Even though the garage is only a few meters from the house and approx 15m from the wi-fi antenna in the loft, the metal foil insulation used throughout the garage prevents a decent wi-fi signal from getting through.  I’d occasionally manage to get a connection from my laptop, but it was flaky.  And a connection from my iPhone… forget it!
I didn’t want to run a hard-wired Ethernet connection from the house, so I decided to set up a wi-fi repeater instead, taking the signal from outside the metallic cage and repeating it inside.  I’m already running the dd-wrt custom firmware on my main router and had read good things about its Repeater Bridge mode for this kind of task.  So, I decided to look for the cheapest dd-wrt compatible router I could find to act as the repeater.
I found an ex-display Buffalo AirStation WHR-G125 on ebuyer for £15 which was perfect for the task. Once it arrived I used tftp to flash it with the latest dd-wrt Mini Generic firmware from the dd-wrt site, then followed this tutorial to set it up in Repeater Bridge mode.
All that was left was to give it a permanent mounting place in the garage. The WHR-G125 doesn’t have any mounting holes as standard and I was reluctant to spend extra on the official wall mount, so I ended up strapping it onto the roof joists with a couple of zip ties. The result: the garage now has it’s own SSID which broadcasts a nice strong signal to any devices out there and gives me reliable wi-fi in the garage and elsewhere in the garden. £15 well spent I think.