Magic Mirror

October, 2010

With my first Arduino project under my belt, I thought I would take on something even more ambitious.  Make Magazine had a wonderful article about a “Magic Mirror” project that hid a computer screen behind a 2-way mirror – it really inspired me.  I had the idea of making this magic mirror into a portal for interfacing with SARAH, my voice-activated interface for Watchdog.  This project has truly become the crown jewel of Watchdog.  It is a primary interface point for my family, adds further personality to SARAH, and adds a major “wow” factor for any visitor.

Believe it or not, I had been planning this project since the house was built several years ago.  Part of the preparation involved doing some special in-wall wiring of power and network so I could fully hide the computer components inside the wall so no wires were showing.  Until this project, we had just hung a plain picture over the gaping hole in the front hallway.  I feel strongly that this project would not have been nearly as good had I not been able to plan ahead like this.

Here are the major features of the final product:

  • A sensor determines if someone is standing in front of the mirror
  • It turns on power to the PC monitor behind the 2-way glass – a “floating head” appears.
  • Microphone and speakers are hidden in the mirror frame to allow 2-way communication with SARAH
  • You can continue to interact with SARAH by answering questions and listening to her responses as long as you stand in front of the mirror.
  • After a short timeout period, the PC monitor is turned off and the microphone is disabled.

Here are the components of the final product:

  • An Arduino connects to a PC via USB cable and provides 2 peripherals:1.  A Seeedo ultrasonic range sensor senses when someone is standing in front of the mirror.
    2.A relay that allows the software to turn on/off the monitor.
  • Other devices used:
    •An Acer AspireRevo provides an ultra-small form-factor Windows 7 platform for running the SARAH system.
    •A Lenovo ThinVision USB soundbar provides the amplified speakers integrated into the picture frame.
    •A Gigaware Omnidirectional PC microphone is also integrated into the picture frame.
    •¼” thick glass 2-way mirror from provides a great looking mirror that hides the monitor until it is turned on.

I started the project by building a prototype to test the sensors.  I used some crown molding to create a simple 3-sided frame to hold a pane of 2-way mirror glass.  I was able to get an inexpensive sample of different types of 2-way glass to determine which best met my needs before investing in larger, more expensive pieces.  I used the prototype to determine how to mount the speakers and mic discretely so they functioned.

Next, I wrote a new interface for SARAH.  With my wife’s assistance  I found a tasteful image to use as the face of SARAH.  I selected one with 4 different poses, so I could swap them during interaction with a user to show a bit of animation.  I also added new graphical interfaces for displaying information when she answers questions about the weather – I pulled the bitmaps off the Internet to show images like “Partly cloudy”, “Mostly Sunny”, etc.

Next, I built the picture frames.  I used some thick crown molding from Home Depot and built 3 identical frames that fit a 1′ x 2′ pane of glass.  Crown molding gave me some lift off the wall so I had room to mount the LCD video monitor inside.  I painted the frames with a glossy black finish and put 2-way glass into all 3 for consistency (even though only one of them has electronics behind it).  I really needed 3 in order to fill the space on the wall since having only one would look awkward.  I used some heavy-duty picture frame wire to hang them on the wall so I could easily take them down if needed.

There were many challenges on this project, but the prototyping helped to proactively address a lot of them.  Wire management became quite an issue, but I was able to use a staple gun to corral the wires inside the frame.  Overheating (especially in the summer time) became an issue, so I later added a temperature sensor into the Arduino that overrode the command to turn on the monitor if the air behind the frame got too hot.  Finally, I got inconsistent readings from the ultrasonic sensor and would often stand in front of the mirror wondering if/when it would turn on.  It seems to do weird things at times.  Ultimately, I was able to stabilize the environment by uninstalling Anti-Virus on the Acer and using an app called Caffine.exe to keep the PC from going to sleep.  I know it’s risky to run a PC without anti-virus and I don’t normally recommend it, but it was eating up sooo much CPU and Disk IO that the app would simply not work.

Please see this earlier post for more details about SARAH and the list of commands she responds to.




Magic Mirror. jpg





Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s