Instructables

DIY Magic Mirror and Photobooth - Arduino Powered

FeaturedContest Winner
An assembled kit for this project is now available from Seeedstudio.com
More info at this project at http://diymagicmirror.com
The software for this project is open source

Who's the fairest of them all. Make your own Magic Mirror and find out. The Magic Mirror can read the weather, tell you how your stocks did, can be wired to your doorbell with an IP camera video feed, turns lights & appliances on and off using X-10 control, and even has a Breathalyzer that tells you when you've had too much to drink. The Magic Mirror plays pre-recorded animations based on input from various sensors. Featuring four characters, each character responds to the sensor inputs with its own personality. Characters include a skull for your next Halloween party, a pirate, a princess character, and a really mean pumpkin who disses you New York cabbie style.

Magic Mirror Features:

  • Breathalyzer with optional Tweeting
  • Photobooth Mode (Link to Separate Instructable on Photobooth Mode)
  • Speak your Tweets from Twitter
  • Weather Forecast
  • Stock Performance
  • Sends X-10 CommandsDoorbell input with IP camera feed
  • Picasa based slideshow
  • Princess, Pirate, Halloween, Insult Characters
  • Text to Speech Mode
  • Personalize it with your own Videos
  • Runs as a native application on the PC, Mac, and Linux
Parts
El Cheapo PC or Laptop (a 3-4 Year Model will work)
Arduino Micro-Controller - $30
Used 15" LCD monitor - $50
Dielectric Glass TV Mirror 4mm (2-Way Mirror) 12x12 Sample (Optional) - $20
Magic Mirror Kit with Software
Picture Frame with Oval Matte (Optional)

Sensors (Pick and choose the sensors based on your installation)

Maxbotix Promixity Sensor
Seeedstudio or Phidgets Touch Sensors (3) - $7 each
Alcohol Sensor (1) - $7
Reed Switches (2) - $5 each
See here for all supported sensors

X-10 Components and LEDs (Optional)

X-10 Firecracker - $5 on eBay
X-10 Transceiver Module - $20
X-10 Dimmer Switches (2) - $12 each
LEDs - $5
 
Remove these adsRemove these ads by Signing Up

Step 1: Arduino and Adobe Flash

The basic concept is the Magic Mirror plays pre-recorded videos (Adobe Flash format) based on input from various sensors (proximity, touch, switches). I chose Flash because there is an open source Flash library available called AS3Glue that talks to the Arduino.

On the Arduino, you have to load a program called Firmata which let's you control the Arduino from Adobe Flash (specifically Action Script 3.0). There are multiple versions of Firmata out there so be sure to use the one that comes with the Magic Mirror software download. You also have to run a serial server (included in the software download) which acts as a middleman converting serial data received from the Arduino to a TCP/IP port that Flash can access.

Step 2: Connecting the Sensors

I used the following sensors: proximity, touch, momentary switches, reed switch, alcohol sensor, and a potentiometer.

For the proximity sensor, I have the first video set to go off when the subject is standing at a specified distance from the sensor (the distance can be changed from the configuration program). The Video then tells the subject to come a little closer and then a second video plays.  There is also a stealth mode setting where the Magic Mirror appears as a normal mirror and then gives people a surprise when within range of the proximity sensor (good for Halloween parties).

I mounted the touch sensors behind the drywall.

Connect the sensors per this schematic below.



The door and window reed switches are the same ones used in home alarm systems. I got mine from www.hometech.com.




Step 3: Configuring the Software

Picture of Configuring the Software
After connecting the sensors, you'll then launch the Magic Mirror configuration program which tells the Magic Mirror software what sensors are hooked up as well as other configuration parameters like your zip code for the weather forecast, your stock portfolio, your Picasa album, IP video camera stream if using that option, the Arduino port, and X-10 addresses. You can also adjust the size and orientation of the video to suit your installation (ex. if you rotate the monitor to a portrait orientation).

Step 4: Controlling the Lights

Picture of Controlling the Lights
light switches.jpg
sconces.jpg
I also wanted to have the video events turn the lights and appliances on and off using X-10 control. After quite a bit of research, the best solution I could find was to use the x-10 Firecracker which is a dis-continued serial port (DB9) dongle that you can find on eBay for $5. Unfortunately, there was no built in Flash/Arduino interface for this device so I wrote my own which turned out to be fairly easy in Action Script 3.0 using the Timer class. This website was great and has everything you need to know to interface the Firecracker.

Step 5: The Installation

Your installation can be as simple as this plug and play installation where you can be up and running in 10 minutes or a full on installation with in-wall sensors.

Of course, I had to do the full on installation which was a playhouse I built for my two girls. The playhouse is 8x8x8, I got the plans for the playhouse here http://woodmanor.net/Little-miss-playhouse-plans.html. My Dad built it in Oregon and then dis-assembled it and drove it down to California where we put it back together. We then poured a concrete slab for it and then roofed and painted it. Its basically a full blown mini-house with electrical, insulation, drywall, vent, TV, phone, pergo floor, etc.

The playhouse in itself was quite a project. The nice thing about building it from scratch is I was able to run all the wiring for the sensors through the walls as well as the electrical, doorbell, speaker, network, coax, and phone. Here's a separate instructable on the playhouse http://www.instructables.com/id/The_Princess_Playhouse/

Step 6: The Magic Mirror PC

For the PC, an el cheapo PC or laptop will do (a Netbook works great and is nice and compact). It can't be too old though as it does need to run the video smoothly. If your PC can play these videos files, then you'll be ok. These are the same video files that come with the software installation so are quite large and will be normally running from your local hard drive so expect some network delay when you click the link.

I went the custom route and re-purposed an old vacuum tube tester case. I went with an Intel ATOM motherboard since its low power and very compact (mini-ITX form factor). One annoying thing on this model was the excessively loud fan which would ruin the effect. I found a silent fan at Fry's for $20, you can still hear it but barely. I re-purposed some of the controls, the on/off switch and a pot which is used to select the mirror mode on the fly (princess, halloween, or pirate). Also added some fiber optics for show. For the sound, I run the normal soundcard output into a whole house audio distribution system and play through the in-ceiling speakers which is nice so you don't see the PC speakers.

Another nice feature and benefit of using Flash with an Internet connection is you can play different videos based on data received from the Internet. For mine, I did different things for the weather and stock portfolio. For the weather, I call a Yahoo Weather API and then play a different video based on the forecast, one video for good weather, one for ok weather, and another for rain. For the stock, a different video plays based on how your stock portfolio performed with the stocks being specified in the config file. Same concept, one video for good performance, one for no or little change, and one for down. The threshold limits on what defines up and down can be changed in the configuration program.

For remote maintenance, VNC is setup so you can connect remotely from another PC using a ultraVNC. VNC comes with UBUNTU so if you go the LINUX route, its already there. Its very easy to install though on Windows, although I don't know if VNC works with Windows Vista or Windows 7.


Step 7: Fireplace and Fake Fire

Picture of Fireplace and Fake Fire
fireplace box.jpg
mounting fire leds.jpg
leds in wood puddy.jpg
My wife picked up this old fireplace mantle at an antique show. I used wood puddy with black spray paint to give it a weathered fireplace look.

For the fake fire, this was easy as the Arduino and AS3Glue library have pulse-width modulation (PWM) built it was just a matter of tweaking the PWM parameters to simulate a flickering fire with Red LEDs. The Magic Mirror software has the option to use the LEDs like this as a flickering fire effect or instead you can also use them as indicator LEDs (telling you how drunk you are to compliment the videos tellying you how drunk you are) for the Breathalyzer.


Step 8: Producing the Video

Picture of Producing the Video
For the video, the folks over at www.imagineerieing.com make some great digital puppets which are low cost ($15) and fit the bill perfectly. The guy that runs the site is very nice and allows me to use them through a royalty agreement.

After writing the scripts, I was lucky to find a very good voice over guy who was able to do all four characters and then I produced the videos in Adobe Premiere. Here are the videos.

alinke (author) 10 months ago
nice install! on the print out resolution, if I remember, it can go up to 720 or something like that. In the advanced config program, you'll see a resolution setting, just put it at the highest res. It won't be high res/photo quality but shouldn't be pixelated either.
Thanks! I'll give it a try.
I love this! One question though. Is there a way to increase the resolution of the printed photobooth pictures?The proofs on the screen are hi-res, but the printouts are extremely pixelated. I'm using the Canon Selphy CP900.
Photo Booth.jpg
Oops. I forgot to add that I used a Microsoft HD web cam.
OCLVig1 year ago
Totally epic. Great job!
Cool instructable,

Would the software be easily adapted to the raspberry pi? How hard would it to add RFID reader?
alinke (author)  beekinfarms1 year ago
great question, I have a raspberry pi on order so I'll try it out when I get it. The key will be whether or not Flash runs on raspberry pi as the DIY Magic Mirror is Adobe Flash based. My guess is Flash is probably not officially supported so the question becomes if there is some hack/work around for it.

The better option may be Android, I just ported the DIY Magic Mirror to Android (the Android version does not yet have all the features as the PC version), that may be an easier way to go as I thought I'd read somewhere Android is available now or coming to Android. Here's the Android app of the project http://droidalyzer.com/magicmirrormini.html RFID reader wouldn't be too hard, just a matter of modifying the source,, here's the source code for the Android app https://github.com/alinke/MagicMirrorMini
Sovereignty2 years ago
Has this ever officially received a Coolest Instructable Ever award?
GUNsicker2 years ago
Awesome!!
Also - Is that you... Keanu Reeves?
:D
alinke (author)  GUNsicker2 years ago
ha ha, I'll take that as a compliment, thx
maxpower494 years ago
ummm what does this have to do with the magic Magic Mirror
Do not question Magic Mirrors and the things that maybe.

if you look above the window you shall see. (pumkin head)
hihihi0hi2 years ago
That's so cool!
vistal2 years ago
Hmm i like to see a trans formers Optumis prime for my nephew how hard would that be?
alinke (author)  vistal2 years ago
You'd just need to produce the videos and then here's how to add them to the Magic Mirror http://diymagicmirror.com/personalize.html. Some folks have had good success with the Crazy Talk software http://www.reallusion.com/crazytalk/, that would be the easiest way to author the videos.
Fireater9892 years ago
Do the kits come with the new mask version? If not, is there any way you (the supplier) can update it or do I have to buy it myself?
alinke (author)  Fireater9892 years ago
Hi, I'm not sure what the new mask version is you're referencing but send me some details and I'll look into it. The characters that the kit comes with you can see here http://diymagicmirror.com/chars/mirrorchars.html
http://www.imagineerieing.com/products.html
There's the original Mirror, then there's the Mirror, Mirror. I think you have the new one cause it was released in '08 and that's when this was written
alinke (author)  Fireater9892 years ago
yes Mirror, Mirror is the one used here
vishalapr2 years ago
I was amazed by the video!What a fantastic job u have done, wish I could make one, will try to make one soon!!!
tinker2342 years ago
nice hey could i make this in a wall and use diffrent avatars
alinke (author)  tinker2342 years ago
hey, great questions, yes, in the manual on http://diymagicmirror.com, there are instructions for an in-wall installation and yes you can also add in your own characters, the manual explains how to do that
thanks i will pick one up evantully
typedink3 years ago
This is just great! I really wish I could afford the kit.
alinke (author)  typedink2 years ago
the kit makes the wiring easier but not needed if you are good on building circuits with the arduino, you can just use the arduino, the manual on http://diymagicmirror.com has the schematic, you'd just need the software piece
goedeleg3 years ago
Would it work with arduino uno?
mary candy3 years ago
this is the best thing I saw here!
I am in shock. :O
mary candy3 years ago
AMAZING !
Now this!!

is GREAT just WOW!!
Very sad. I like to contact the guy from www.imagineerieing.com but can find no way to do so. The "Mac" version he offers is for PPC only. The new Intel Macs can support PPC software via Rosetta, but Apple doesn't even include Rosetta in Mac OS 10.6 (2009). He really needs to recompile his Mac offerings.
alinke (author)  RichardBronosky3 years ago
Hi Richard, I have spoken to the guy at www.imagineerieing.com and he says he will re-compile, I will send you a message with his e-mail in case you want to contact him
lol i need that =]
manchaware4 years ago
Have you heard of the beagleboard? It's an ultra small (3"x3") pc board capable of playing HD video (via DVI-D/HDMI). It comes with 1 USB, 1 Line in, 1 Line Out, and 1 S-Video Out. And, it only requires 5V @ 500mA so you don't need a fan to cool it. It doesn't have a HDD, but instead sports an SD slot so you can probably run Debian or Ubuntu off a 1gb SD card.
maxpower494 years ago
do we have to buy the puppets
alinke (author)  maxpower494 years ago
hi, if you want to make your own animations, then yes you'd need to buy the puppets ($15 each). If you purchase the software on http://diymagicmirror.com, the animations are included. let me know if you need anything else
dalucero5 years ago
For the touch sensor you could drill a hole halfway into the sheetrock like a mortise joint, or you could cut a hole all the way through and then cover it with one of those sheetrock repair mesh patches.
alinke (author)  dalucero5 years ago
that's a good idea, I think I'm going to try that actually, it should be much more responsive that way, thanks!
alinke (author)  alinke4 years ago
update on this one, took the advice and did it with the sheetrock repair mesh patch. That did the trick, touch sensors would perfectly now.
dalucero alinke4 years ago
awesome! glad it worked out.
Soy_Un_Oso4 years ago
that's amazing. your kids must love it, I cracked up in the video when I saw the magic mirror launching windows. it's supposed to run on magic!!!! haha
Pro

Get More Out of Instructables

Already have an Account?

close

PDF Downloads
As a Pro member, you will gain access to download any Instructable in the PDF format. You also have the ability to customize your PDF download.

Upgrade to Pro today!