Recently we opened a new office in the heart of Shoreditch, in an old Church building that we gutted and renovated from the ground up. As part of this renovation we had the opportunity to put in a top of the line infrastructure, with a few little nonstandard extras.
One of the things I wanted to address was people grabbing meeting rooms ad hoc (we have six of them in the new office), leaving them showing as available still in Outlook resource calendars, leading to wasted trips as people go to the room only to find it actually in use.
I looked for a while at solutions like the RoomWizard from Steelcase, but ultimately at several thousand dollars per unit, they were going to prove far too expensive, as well as being victim to inevitable fingerprint smearing on their touchscreens.
To get a home brewed solution in place at a fraction of the cost, we mounted an Android tablet mounted outside each one of the six meeting rooms, displaying the day’s appointments for that room so people can tell at a glance if the room is free or not without needing to look through Outlook. The benefit of being able to see if the meeting room is free, or going to be in use shortly is very useful.
The major issue with this is that it still doesn’t give an easy way to book that room out from within the room itself, the consequence of which is that people looking for room availability will still see it available in its Exchange calendar, leading to wasted trips from desk to room, only to find the room’s not free.
Clearly a method for people to book the room rapidly was required. The obvious solution was to let people book it from the tablet itself, but the tablets are mounted behind glass so people can’t fiddle with them and change their settings, or heaven forbid, turn them into Angry Birds terminals. This also avoids the fingerprint smearing issues that can so quickly make a pretty screen look filthy.
My solution was to build a simple and elegant single button booking system, whereby a physical button push would allow people to book the room for a half hour block of time, updating the Exchange calendar instantly to avoid people the indignity of walking up three flights of stairs to find a room has been snaffled.
Building a system like this from the ground up is actually a very simple prospect, requiring an Arduino Uno with Ethernet and PoE, a refurbished first generation iPad, a wireless doorbell, an Arduino Proto PCB board, an Arduino Project Box, an IPM-110 iPad premier mount, and some hitherto forgotten C programming ability.
Step one was to build a prototype device on a breadboard, in order to keep things simple and get the code written and working. The circuit itself is incredibly simple – one push switch and a couple of resistors (100ohm and 10kohm) connected for pull down. Pin 2 is set as an input on the Arduino board, and it, 5V and ground terminals connected to the breadboard as below. Normally current flows from 5V to pin 2 (setting its state to HIGH), when the button is pushed the path of least resistance changes, and it flows via the switch to ground, bypassing pin 2 and changing its state to LOW. Using pull down resistors like this guarantees that the signal change from HIGH to LOW and vice versa will be clean and without any analogue judder.
With the circuit in place and an Ethernet cable connected to the Arduino, code writing came next. A full transcript of this code is available at http://pastebin.com/p1JfHZWJ, but at a high level it:
With the code written, and the prototype breadboard in place and working, I needed a way to affix the solution to the wall beside the meeting room doors without having to run unsightly cables up or through the walls. My solution here was to buy some wireless doorbells (in brightsolid colours no less), affix them to the walls in each meeting room, and replace the switch in my breadboard above with the RF receiver from the doorbell assembly. The result is that the circuitry and cabling can be neatly hidden away in an appropriate location, and the only cosmetic change to the rooms is a single colourful button to press.
With the prototype complete, I went ahead and cut this down from the relatively expensive prebuilt Arduino circuit to the bare bones required for it to function, as below, with six female jumpers exposed for attaching the doorbell guts and Ethernet modules. Forgive the mess!
Circuitry finalised, I sketched and etched a custom PCB to hold it, taking care to minimise footprint, and soldered it together. For mass production, the boards can be ordered prebuilt to my specification for ~$7 per unit, typically in multiples of 25. As I just wanted one at this stage, building it myself was the most economical option.
This reduced the cost from £22 for the processor assembly to around £4. The six exposed pins allow connection to the RF receiver from the wireless doorbell and my chosen ethernet board, pictured below – a nano Ethernet board based on the same Wiznet W5100 ethernet chip I used for prototyping, allowing me to keep using the same libraries with my code.
Right now I’m waiting for the wireless doorbells and Ethernet board to arrive. Once they get here, my plan of attack is to run it for a time in our Dundee HQ so I can take note of any quirks or unintended consequences before rolling it out to the London office. This also gives me a great excuse to revisit the tablet solution and take advantage of the recently dropped prices of first generation refurbished iPads. Event Board by Ender Labs is a great app to display whether a meeting room is currently available or in use. Coupled with a suitable frame to hide the home and power buttons, and with all multi touch gestures disabled, it becomes a perfect partner to my booking solution and avoids those unsightly finger marks on the touchscreen.
The finished cost should work out at around £30 per unit (plus iPad of course). Not bad at all for such a useful device, especially when compared to the several thousand dollars some companies are asking for comparable devices! All in all, I’m pretty happy with how this project has turned out. I’ll update once more when the final pieces have arrived and I’ve deployed the finished version.