Introduction: Magic Mirror on the Wall
The Magic Mirror from Snow White is an all-time classic and has been on the list for years. While not strictly Halloween, Disney villains fit nicely with the overall theme and this gave us some new ground to work in. While not strictly required, If you haven’t seen our Halloween instructable which talks about the overall display, see it here. It will provide an overview of the total display and provides a reference to each of the individual write-ups as they get done.
For the first iteration, we were looking for simple. Google magic mirror and loads of projects and products come up for smart mirrors for home and office. Way beyond what we were trying to achieve. Ironically, the Halloween props we came across were really just monitors in a frame.; they don't actually contain a mirror. Thats fine if you are ok with that effect. Its just so much cooler with a reflection and seeing the image superimpose itself over your face. We wanted a not scary prop that entertained some of the younger trick or treaters and was universally recognized by all. Next year may get some motion sensor or other add-ons but V1 is a straight reproduction of the Queen and her mirror. It alternates with some ghost in the mirror effects which are pretty cool too.
Because this contains an actual mirror, it needs more ambient light than your typical Halloween prop. If your guests aren't lighted, there is nothing to reflect. And think about the two way mirrors you see in cop interrogation rooms in movies and on TV. One side is fairly bright and the other dark. Placement of this prop is tricky but if your monitor is bright enough, the bigger issue will be not enough light vice too much.
For this iteration, an old TV and DVD player could work. We plan on adding interactive features which is why we opted to start with the pi. Basically, you need a compatible player and display device. Place it behind a two way mirror, dress it up as much as you like, load a ghostly video and run with it. You need to use a TV, monitor or even a tablet will work. You can’t project onto a two way mirror and have the same effect.
Step 1: Collect the Materials
Other than the two way mirror itself, everything else is a fairly common item. You can go as elaborate or simple as needed. While we went with a pi Zero and monitor, an old DVD player and TV are really the only other requirements.
For the Mirror:
- LCD Monitor – We used an HP VS17E which has built in speakers (a plus). The viewable area is pretty close to an 11x14 picture frame so that was a big help. These can still be found for about $35 but use what you can find. The monitor controls are on the right side of ours. When rotated, this puts them on top and they are easily accessible. A monitor with front panel controls will probably be difficult to work with and should be avoided. We don’t plan on using ours outside of the prop but properly done you can use the monitor for real work the rest of the year. An older 4:3 monitor has about the same perspective as an 11x14 picture frame.
- Raspberry pi Zero-W - $5 at Microcenter on sale. You can’t beat that. You’ll need the microSD card and USB mouse and keyboard to get started but can run it headless. Because the pi Zero is really basic, you will need a USB OTG cable to hook up devices to the micro USB port. Set it up with a basic install of Raspbian. You can do it yourself or buy a preconfigured NOOBS card.
- Mini HDMI to VGA Adapter (as required) – The pi Zero has a mini HDMI output. You’ll need a cable or adapter to make it compatible with your monitor. We got ours at Amazon for less than ten bucks. This also handles the audio breakout to a 3.5mm stereo jack.
- Two Way Mirror – We looked at a bunch of options including applying film to plexiglass. We bought all kinds of samples to play with as part of our research and prototyping. Best overall was an acrylic two way from Two Way Mirrors. We chose 1/8” over ¼” thick only because we wanted it to sit within the frame of the monitor, flush to the display. Glass was marginally better on the reflection but is breakable and with lots of kids running around acrylic was better. Acrylic lets you cut and drill as needed which is much harder to do with glass. There are cheaper versions on eBay and Amazon. We did not test. You can buy a 1mm thick version. It will probably look like a funhouse mirror as that is way too thin and would probably warp a bit. The 3mm version is comparable to our 1/8” selection. (Shout out to Krista at Two Way Mirrors – we ordered on a Tues afternoon and it was cut, shipped, and delivered Thursday).
- Picture Frame -- We wanted oval and this worked out fine. Metallic gold spray paint and you’re set. We looked at buying a Craigslist or LetGo old mirror but couldn’t find one cheap enough or in a size we wanted to work with.
For the video:
We created ours but any suitable video will work. You want a dark (or no) background to maintain a reflection wherever you video does not have active content. AtmosFx is a great source. Go for the hollusion options and pay attention to vertical vice horizontal videos. Because the monitor is physically turned 90 degrees, you need videos that are oriented vertically. If you don’t turn the monitor, use horizontal. (Horizontal works for animated portraits but not so much for a mirror).
- The Mask – A digital puppet from Imagineerieing There is a free version; we used the $15 upgraded version. It has pretty basic controls and can add some fire effects. It does not create any output as it’s a puppet and intended to use live. We recorded it and run it on a loop.
- Recording software. We used OBS Studio. You’ll need to fool with resolution settings between the capture and the puppet based on what you are using. Go with the defaults on both and see how it comes out.
- Beckoning Beauty from AtmosFx. Lots of choices to go with. Hollusion options are probably better for the mirror approach but go with what you want. Lots of options if you are going for the surprise shock effect.
For the facade
This part is on you but we’ll offer some suggestions and cautions. First, even with the lightest monitor, it will be top heavy. There will be little kids running around and they will touch what they aren’t supposed to. Plan on it.
Second, use what you have. An old shelving unit? Attach a sheet of plywood or MDF to the front, cut a hole and go for it. Our frame rides on a furniture dolly. Five bolts and its comes off so we can use it the rest of the year. VERY handy to keep things on wheels to get it out of the weather.
Build a frame from 2x3 lumber. You can frame up something nice for under $10.
Don’t use a bookcase; they are notoriously unstable and prone to tipping.
Weight the bottom if needed or attach it to a permanent structure. Remember kids and end of October weather will work against you.
Step 2: Build the Frame
As I said, we are not going to dwell on this one too much but will go over our thought process. This is top heavy. Our monitor weighs in at about 12 pounds. Stability is key. We took a furniture dolly which had an angled frame we built to transport 4x8 sheets of plywood (the Shining walk thru set) around. That’s why there is the angled vice a straight box frame. Worked perfectly though. Added two vertical supports and a 2x4 sheet of plywood and we were good to go. Since we had the angled frame already in place, we made the front panel just off vertical so it leaned back just a hair to help transfer weight backwards. On the front, almost at ground level, are too legs that prevent it from tipping forward but don’t interfere with the wheels.
Rough dimensions of the frame:
· The dolly is 18” x 30”
· The base of the frame is 18” x 24”
· The vertical supports are 42”
· The spacing between the two vertical supports is 13.5” – the width of the monitor when it is rotated sideways.
Important Note: The monitor is centered on the frame. The opening for the mirror is centered on the panel. The front panel is NOT centered on the frame. In our case its about an inch offset. This is to compensate for the fact that the bottom frame of the monitor is usually larger than the top in its normal setup. Turned on its side, it is no longer symmetrical. This will be true of most displays you find. Plan ahead before you mount it.
Add whatever bracing you need for a solid base. The crosspiece that sits under the monitor and carries its weight should be added as you fit the monitor.
Once its in, we used a 2x3 to hold the top of the monitor to the back of the front panel and the metal strap has enough flex in it that it hold tight without breaking the plastic.
Step 3: Build the Front Panel
We are going simple for now. 2’x4’ 11/32” plywood project panel from Home Depot. While cheaper, MDF is not as durable and the front panel contributes to the stability of the monitor. You can cover it with Styrofoam panels, sculpt in shapes, decorations, stone, whatever. We spray painted with stone colored textured spray paint. Fancy will come later. Mark a vertical center line down the panel. Place your frame on the center line at the desired height and trace the inner oval shape onto the plywood. Cut it out using a saber saw. Attach the panel to the frame, remembering that it probably is not centered on the supports. Finish your decorations painting etc. at this point. Don’t install the mirror and try to cover it while you paint. Attach the frame around the oval. Two small brass screws blended nicely with the gold. Don’t go with long screws to attach the frame. It will interfere with the monitor.
As time permits, we will be adding wings on each side of the mirror to help set off the prop from those around it. Check back for updates between now and Halloween.
Step 4: Setup the Pi Zero
Note: You can skip this if going the DVD player route.
First you need to get your OS installed on a microSD card on your computer. There is a lot of info on how to do this. Start here . While not trivial, this is all pretty straight forward and of the read a step, do a step, eat a banana variety. Once done, insert the microSD card into the pi. Option for the technologically inclined / Unix users: configure your wireless and enable SSH before removing the microSD card.
Connect the pi Zero to a monitor (the one you will use here is a good ides), an OTG cable, and a wireless keyboard/mouse combo, and a power supply. Depending on your monitor and cables, use the appropriate adapter to connect the pi’s video output.
If you have never worked with Unix, don’t be intimidated. You’ll see lots of stuff you never knew existed as it boots. Eventually you will get to a mousable GUI.
Assuming you did not already enable SSH and configure your wireless, make that your first action. Along the top menu bar to the right is a wifi icon. Click it and enter your wireless network parameters.
Now change the default password. Click the pi icon in the upper left, Preferences, Configuration, Change Password. Don’t leave it set to the default password. While you are not likely to store sensitive info on the pi, it provides an entry to your network and everything attached. CHANGE THE PASSWORD.
Now enable SSH and VNC if you want to work remotely, ie from another computer. If you don’t know what VNC is, don’t enable it. The instructions for setting up the video looper assume you are working remotely with SSH. All the instructions to set it up can be done directly on the pi with a keyboard but its handy to be able to remotely access the pi while its running. Again from the pi icon in the upper left, Preferences, Configuration, Interfaces, and enable SSH (and optionally VNC).
I also get rid of images on the desktop and go with simple colors; you can set those up however you want.
Now install the video looper from Adafruit. There instructions are completely straightforward. While you can do it all from the pi keyboard and mouse, we recommend you install their pi finder and do it remotely. The instructions are here.
Step 5: Build Your Video
The digital puppet has some basic face movements and the mouth reacts to the shift key. Set the options for what you like and practice, practice, practice. While intended for live performances, the puppets are easily captured. We used OBS Studio, ran a sound clip from the headphone jack to the mic jack and just did it a bunch of times. We maintained separate video files between what we bought from AtmosFx and what we built. Fade in and out to black makes it seamless between clips.
We set the source as a full screen game capture and used alt-Tab to jump to it. It worked so we didn't try any other modes. Note the orientation of the puppet within the OBS capture. That done by changing the camera settings within the puppet software. Alternatively leave it alone and rotate the video as required depending on your monitor orientation.
Step 6: Test the Setup
Remove the USB kb/mouse receiver and insert a USB stick with
your video files. The waiting for USB device message will go away and your videos will start to run. First time through they are slower to run. Once loaded they will run fine. You can load the videos on the pi SD card; there is a small configuration change (its in the instructions for the looper). Assuming you enabled SSH, you can upload them remotely as well.
Step 7: Install the Mirror and Monitor
Again we went for simple. The mirror fits flush to the monitor screen, within the plastic frame. The monitor and mirror are pressed against the back of the front panel and held in place. No room for anything to move around. Our choice of mirror size, frame and monitor are all right on for an 11x14 frame but you can use any size monitor with any size mirror and any size opening. If the monitor is smaller than the mirror, ensure there is a black backing anywhere the monitor does not cover or your guests will see through it instead of getting a reflection.
On our monitor the base snapped off with two clips. We could have removed the neck but it wasn’t in the way and is a pain too take off so we let it go.
Attach whatever works across the back of the monitor. We have a 2x3 on top and a piece of 1-3/8 in. 1/16 in. thick zinc steel punched flat bar from Home Depot. Don’t cover up vents, ports or buttons on the monitor.
Step 8: Put It All Together
Attach a power strip to the frame and plug everything into it. Our HDMI adapter includes a 3.5mm audio port and feeds directly the speakers on the monitor. We may use external when everything is up and running. Attach the pi and adapters as needed to keep them safe. There are case available for the pi Zero or put it in a project box of your choosing. Power it up and you’re good to go. While you can throw the power switch to shutdown, that does run the risk of corrupting the install. Its better to use SSH remotely to shutdown. The Adafruit piFinder includes a shutdown button.
Happy Halloween.