My Bathroom Mirror Is Smarter Than Yours
When I couldn’t buy a smart mirror and made one instead
Sometime late last year I realized that I wanted my ordinary bathroom mirror to be more like the future we were promised in the movies.
There doesn’t seem to be anyone selling the product I was looking for. The individual parts, however, were fairly easy to get. A number of people have done similar custom builds recently, but I had something different in mind.
So I ordered myself a two-way mirror, a display panel and controller board, plus a bunch of components and arts & crafts supplies. In reality there was quite a bit of experimentation and some dead ends before I got to this set of parts, but let’s have a look at the finished — yet by no means final—result:
Welcome to my bathroom. Please excuse the carefully arranged mess around the medicine cabinet and its pristine mirror surface.
To the right of where my face would be we have the time and date. To the left is the current weather and a 24-hour forecast. Below are some recent news headlines. Here’s a close-up of that area:
Unless the weather is cloudy, there will be a little color in the UI, but for the most part the text and icons are monochrome to prevent them from being too distracting.
The code behind this UI uses some simple Android APIs (e.g. this one is neat) plus Forecast for the weather and the Associated Press for news.
Other concepts I’m playing with are traffic, reminders, and essentially anything that has a Google Now card. The idea is that you don’t need to interact with this UI. Instead, it updates automatically and there’s an open-ended voice search interface for anything else.
The display is only a couple of millimeters thin and embedded in a layer between the two-way mirror glass and the door of the medicine cabinet. That way it looks very clean and I can keep using all the shelf space inside. Here’s the open door at an angle and viewed edge-on:
This prototype is still a work in progress and I haven’t spent much time on the software yet. The UI above is only a few hundred lines of code and I’m experimenting with different devices to run it—initially Chromecast, then Nexus Player, and most recently Fire TV Stick.
That means until I settle on a platform and clean up the electronics it does look a little bit messy when you peek inside:
And that’s where I am with this project so far. Looking forward to realizing some of the remaining ideas. Maybe I’ll post a more detailed making-of with the pictures I took during the build.
Update! Read the follow-up here.