How to Create a Raspberry Pi Magic Mirror

Ben
Ben
@benjislab

The concept of a Magic Mirror stems from the age-old fairytale imagery of a reflective surface that could display more than just a reflection, unveiling a world of information at a glance. In today's tech-savvy era, this whimsical concept has been brought to life through the combination of simple materials and sophisticated software. At the heart of this modern-day magic lies a compact, affordable, and highly capable computer - the Raspberry Pi.

A Raspberry Pi is the brains behind the magic, powering the Magic Mirror by running software that fetches and displays information on a screen hidden behind a two-way mirror. This setup allows the display of helpful data such as the time, date, weather forecast, calendar events, and much more, all while maintaining the reflective properties of a conventional mirror.

Investing your time in creating a Magic Mirror not only leads to an intriguing piece of technology but also comes with practical and aesthetic advantages. Practically, it offers a quick, at-a-glance view of important information to help you start your day right. Aesthetically, the sleek, futuristic look of a Magic Mirror can enhance the modern appeal of your living space, merging functionality with style. Moreover, the customizable nature of the Magic Mirror's displayed content, thanks to the Raspberry Pi's flexibility and the extensive MagicMirror² community, means you can tailor the information to your personal needs and preferences, making it a truly magical addition to your home.

Materials Needed

Creating a Magic Mirror is an exciting project that combines a bit of woodworking with a dash of electronics and a sprinkle of software magic. Before we dive into the creation process, it’s essential to gather all necessary materials. Here's a comprehensive list of what you'll need:

  • Raspberry Pi: Any model with WiFi capabilities will work, though a Raspberry Pi 3 or newer is recommended due to their enhanced performance and connectivity features.
  • MicroSD Card: A 16GB or larger MicroSD card is advisable to ensure ample storage for the OS, Magic Mirror software, and any additional modules or data you may wish to include.
  • Monitor with HDMI Input: The size of the monitor will dictate the size of your Magic Mirror, so choose a monitor that fits the space where you plan to place your Magic Mirror. Ensure it has an HDMI input for easy connectivity with the Raspberry Pi.
  • Two-Way Mirror: This is the magical element of your project. A two-way mirror (also known as a one-way or semi-transparent mirror) allows light from the monitor to pass through while still reflecting like a traditional mirror.
  • Frame for the Mirror: A sturdy frame is necessary to house the monitor and the two-way mirror. You can either build one from scratch to fit your dimensions or modify an existing frame to suit your needs.
  • Various Cables:
    • HDMI Cable: To connect the Raspberry Pi to the monitor.
    • Power Cables: For powering both the Raspberry Pi and the monitor.
  • Optional: USB Keyboard and Mouse for Setup: These will be necessary for the initial setup of your Raspberry Pi, although once the setup is complete, you can operate your Magic Mirror without them.

Having all your materials prepared beforehand will ensure a smooth and enjoyable building process as you bring your Magic Mirror to life. In the following sections, we'll delve into how each component plays a part in the creation of your sophisticated, informative mirror.

Item Recommended Source
Raspberry Pi Raspberry Pi Official Site
MicroSD Card (16GB) Amazon
Monitor Best Buy
Two-Way Mirror TwoWayMirrors
Frame Custom or Amazon
HDMI Cable Amazon
Power Cables Included with purchase or Amazon
USB Keyboard Amazon
USB Mouse Amazon

Find the best Raspberry Pi Magic Mirror Items →

Preparing Your Raspberry Pi

The first step towards creating your Magic Mirror is setting up the Raspberry Pi. This pocket-sized computer is the powerhouse that will run the software for your Magic Mirror. Here’s a step-by-step guide to get it up and running:

Installing Raspberry Pi OS on the MicroSD Card

  1. Download Raspberry Pi Imager: Navigate to the official Raspberry Pi downloads page and download the Raspberry Pi Imager for your operating system.
  2. Insert MicroSD Card: Insert your MicroSD card into your computer using a card reader.
  3. Launch Raspberry Pi Imager: Open the Raspberry Pi Imager application and choose the “Raspberry Pi OS (32-bit)” from the list of available operating systems.
  4. Select MicroSD Card: Choose the MicroSD card you’ve inserted as the write target.
  5. Write Image: Click on the “Write” button and wait for the process to complete. Once done, eject the MicroSD card from your computer.

Setting up WiFi and SSH for Remote Access

  1. Enable SSH:
  • Create an empty file named ssh (without any extension) and place it in the root directory of the MicroSD card.
  1. Configure WiFi:
  • Create a file named wpa_supplicant.conf in the root directory of the MicroSD card.
  • Open the file with a text editor and paste the following, replacing your_SSID and your_PASSWORD with your WiFi details:
country=US
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="your_SSID"
    psk="your_PASSWORD"
}

Updating the Raspberry Pi to the Latest Software Versions

  1. Insert MicroSD Card into Raspberry Pi: Place the MicroSD card into the Raspberry Pi and connect it to power. Allow it some time to boot up.
  2. Access Raspberry Pi via SSH: Use an SSH client like PuTTY or the terminal on Mac/Linux to SSH into your Raspberry Pi. The default hostname is raspberrypi.local and the default username is pi with the password raspberry.
  3. Update Software List: Run the following command to update the list of available software:
sudo apt-get update
  1. Upgrade Software: Run the following command to upgrade all installed software to their latest versions:
sudo apt-get upgrade

With these steps completed, your Raspberry Pi is now ready and fully updated, setting a solid foundation for the installation of the Magic Mirror software in the next section.

Installing Magic Mirror Software

Creating a Magic Mirror involves setting up the software that will run on your Raspberry Pi, displaying the desired information on your mirror. MagicMirror² is a prevalent choice due to its ease of installation and a vibrant community that contributes to its list of installable modules. Here's how to get MagicMirror² up and running on your Raspberry Pi:

MagicMirror² Installation

  1. Download MagicMirror²:
  1. Alternative Installation (MagicMirrorOS):
  • As an alternative, you can use MagicMirrorOS, a full OS based on Raspberry Pi OS that comes pre-configured with MagicMirror. It provides a straightforward setup process, reducing the manual configuration steps​2​.
  1. Snap Installation:
  • MagicMirror² is also available on the Snap Store, offering an easy installation method for those familiar with Snap packages​3​.
  1. Third-Party Platforms:
  • Other platforms also offer MagicMirror software, like the one mentioned on Digital Lab's website, which provides a guide on how to install and configure the software on Raspberry Pi 2/3/4​4​.

Basic Configuration of Magic Mirror Software

After successfully installing MagicMirror² on your Raspberry Pi, it's time to tailor the software to your preferences:

  1. Access Configuration File:
  • Locate and open the config.js file, usually found in the config directory of your MagicMirror installation.
  1. Modify Default Modules:
  • The default configuration comes with a set of modules. You can modify, add, or remove modules to suit your needs.
  1. Add New Modules:
  • Explore the MagicMirror² modules to discover new functionalities you can add to your Magic Mirror.
  1. Save and Restart:
  • After making your changes, save the config.js file and restart your Magic Mirror to see your modifications take effect.

This basic configuration should provide a solid starting point. As you become more familiar with MagicMirror² and its module ecosystem, you'll likely find new ways to customize your Magic Mirror to better suit your needs.

Preparing the Monitor

Now that the Raspberry Pi is set up with the Magic Mirror software, it's time to prepare the monitor that will display your Magic Mirror's information. This section will guide you through removing any unnecessary parts of the monitor and attaching the two-way mirror to it.

Removing the Bezel and Stand

  1. Safety Precautions:
  • Before you begin, ensure the monitor is unplugged from any power source to avoid electric shock. It's also advisable to work on a clean, flat surface to prevent any damage to the screen.
  1. Removing the Stand:
  • Most monitors have a removable stand, usually attached with screws at the back. Use a screwdriver to remove these screws and take off the stand.
  1. Removing the Bezel:
  • The bezel is the plastic frame around the monitor screen. To remove it, you may need a flat-head screwdriver or a plastic prying tool to gently separate the bezel from the screen.
  • Start at one corner and work your way around the monitor, gently prying the bezel away from the screen. Be patient and careful to avoid damaging the monitor.

Attaching the Two-Way Mirror

  1. Measure and Cut:
  • Measure the dimensions of your monitor screen and have your two-way mirror cut to the same dimensions by a professional, or use proper glass cutting tools if you have the skills and feel comfortable doing so.
  1. Clean Both Surfaces:
  • Before attaching the two-way mirror, ensure both the mirror and monitor screen are clean and free of dust or fingerprints to ensure a clear display.
  1. Apply Adhesive:
  • Apply a clear, strong adhesive such as E6000 or a similar industrial-strength adhesive around the edges of the monitor screen or the edges of the mirror. Ensure the adhesive is evenly spread to prevent any gaps.
  1. Attach the Two-Way Mirror:
  • Carefully place the two-way mirror onto the monitor, aligning the edges precisely. Press down gently to ensure a good bond between the monitor and the mirror.
  • Allow the adhesive to cure for the recommended time on the adhesive’s packaging before moving or handling the monitor and mirror assembly.
  1. Inspect Your Work:
  • Once the adhesive has cured, inspect your work to ensure the mirror is securely attached and that the display is visible through the mirror.

With your monitor now prepared, you are one step closer to completing your Magic Mirror. In the next section, we will look at building a frame to house your newly assembled monitor and mirror.

Building the Frame

Creating a frame for your Magic Mirror is a crucial step that not only gives it a polished look but also provides a secure housing for the monitor, mirror, and Raspberry Pi. This section will guide you through measuring, cutting, and assembling the frame.

Measuring and Cutting the Frame

  1. Dimensions:
  • Measure the dimensions of your assembled monitor and mirror. Take note of the height, width, and depth as these measurements will determine the size of your frame.
  1. Material Choice:
  • Choose a material for your frame. Common choices include wood or metal. Ensure the material is sturdy enough to support the weight of the assembled monitor and mirror.
  1. Cutting:
  • Cut four pieces for the frame: two pieces for the height and two pieces for the width. If you're using wood, a miter saw will help achieve precise cuts for a clean finish.
  1. Depth:
  • Don’t forget to account for the depth of the monitor within the frame. The frame's sides should be deep enough to hold the monitor snugly.

Assembling the Frame around the Monitor and Mirror

  1. Dry Fit:
  • Before applying any adhesive or screws, do a dry fit to ensure all pieces align correctly and the monitor fits within the frame.
  1. Joining:
  • Join the frame pieces together using strong wood glue or metal connectors, depending on your material. Reinforce the joints with screws for added strength.
  1. Inserting the Monitor and Mirror:
  • Carefully place the assembled monitor and mirror into the frame. It should fit snugly without any force.
  1. Securing the Monitor and Mirror:
  • Once satisfied with the fit, secure the monitor and mirror to the frame using brackets or adhesive, ensuring they are firmly held in place.

Securing the Raspberry Pi to the Frame

  1. Choosing a Location:
  • Choose a location on the frame where the Raspberry Pi will be accessible yet out of sight. The back of the frame is a common choice.
  1. Mounting Hardware:
  • Use a Raspberry Pi case with mounting holes, and attach the case to the frame using screws.
  1. Cable Management:
  • Ensure all cables (power, HDMI, etc.) are securely routed and do not interfere with the frame or the monitor.
  1. Ventilation:
  • Ensure there's adequate ventilation for the Raspberry Pi to prevent overheating.

With the frame assembled and the Raspberry Pi securely mounted, your Magic Mirror is now structurally complete. The next sections will guide you through configuring your Magic Mirror to display your desired information, setting up voice recognition (if desired), and maintaining your Magic Mirror for years of use.

Configuring Your Magic Mirror

With the structural setup complete, it’s time to breathe life into your Magic Mirror by configuring it to display the information you need. This process is made straightforward thanks to the modular design of the MagicMirror² software, where features are added, removed, or customized through modules. In this section, we'll explore the configuration options and some popular modules you might consider adding to your Magic Mirror.

Overview of Configuration Options

The primary configuration of MagicMirror² is done through a file named config.js located in the config directory of your MagicMirror² installation. This file is written in JavaScript and allows you to:

  • Define General Settings: Such as the language, time format, and units (metric or imperial).
  • Configure Modules: Specify which modules to load, where to position them on the screen, and set module-specific configurations.

Adding, Removing, and Customizing Modules

MagicMirror² comes with a set of default modules, and you can add or remove modules as per your needs. Here’s how:

  1. Adding Modules:
  • Browse the MagicMirror² Modules github repository to find modules you're interested in.
  • Follow the installation instructions provided for each module to add it to your Magic Mirror.
  1. Removing Modules:
  • To remove a module, simply delete or comment out the respective entry in the config.js file.
  1. Customizing Modules:
  • Customization of modules is done within the config.js file. Each module has its own set of configuration options that you can tweak to your liking.

Examples of Popular Modules

Here are some popular modules that you might find useful for your Magic Mirror:

  1. Calendar:
  • Display your schedule by connecting to your Google Calendar, iCloud Calendar, or any other calendar that supports the iCal format.
  1. Weather:
  • Stay updated with the current weather conditions and forecasts for your location.
  1. News:
  • Catch up on the latest headlines from your preferred news sources.
  1. Compliments:
  • Receive random compliments to brighten your day.
  1. Clock:
  • A simple yet essential module to display the current time.
  1. MMM-NowPlayingOnSpotify:
  • Display the currently playing song on Spotify with album art and playback controls.
  1. MMM-Remote-Control:
  • Remotely control your Magic Mirror using a web interface from your phone or computer.

With the right combination of modules, your Magic Mirror becomes a powerful tool that provides a wealth of information at a glance, making your daily routine more efficient and informed. Explore the wide range of available modules, and don’t hesitate to dive into creating your own modules if you have coding skills. Your Magic Mirror is a canvas waiting for your personal touch!

Setting Up Voice Recognition (Optional)

Voice recognition adds a layer of interaction and accessibility to your Magic Mirror, allowing you to control it using voice commands. This can be particularly useful for hands-free operation, making your Magic Mirror even more integrated into your daily routine. In this section, we'll explore the possibilities of voice recognition and guide you through setting up voice recognition software on your Raspberry Pi.

Brief Overview of Voice Recognition Possibilities

Voice recognition technology has come a long way, and integrating it into your Magic Mirror opens up a plethora of possibilities. Here are some scenarios:

  • Command and Control: Control your Magic Mirror by switching between modules, requesting specific information, or even controlling other smart home devices.
  • Information Retrieval: Ask your Magic Mirror for the weather forecast, news headlines, or your schedule for the day.
  • Accessibility: Enhance accessibility for individuals with mobility impairments, providing a voice-activated interface to interact with the Magic Mirror.

Installing and Configuring Voice Recognition Software

There are several voice recognition software options available for the Raspberry Pi. One popular choice is Mycroft, an open-source voice assistant that can be tailored to your needs. Here’s how to set it up:

  1. Install Mycroft:
  • Navigate to the Mycroft website and follow the instructions for installing Mycroft on a Raspberry Pi.
  1. Configure Mycroft:
  • Once installed, open the Mycroft configuration file (usually located at ~/.mycroft/mycroft.conf) and tailor the settings to your preferences.
  • You may want to set up Mycroft to interact with your Magic Mirror specifically, which may require additional configuration or installing specific Mycroft skills.
  1. Test Voice Recognition:
  • After configuring Mycroft, test the voice recognition by asking Mycroft some questions or giving it commands. Ensure it can accurately recognize your voice and respond appropriately.
  1. Integrate with Magic Mirror:
  • Look for or create Mycroft skills that integrate with MagicMirror², allowing you to control your Magic Mirror using voice commands.
  • You can also explore other voice recognition software options like Snowboy or Jasper, and find or create integrations for MagicMirror².
  1. Customize Voice Commands:
  • Create custom voice commands to tailor the voice recognition to your specific needs, providing a personalized experience.

With voice recognition set up, your Magic Mirror becomes not only a visual aid but also an audible assistant, ready to help at the utterance of a command. This added level of interaction makes your Magic Mirror a truly interactive part of your daily routine.

Final Thoughts

Creating a Magic Mirror is an engaging project that blends aesthetics with functionality, resulting in a piece of interactive technology that can seamlessly integrate into your daily routine. However, the journey doesn't end once the construction is complete. Maintaining, updating, and continually customizing your Magic Mirror can ensure it remains a useful and delightful addition to your space. Here are some tips and ideas for the road ahead:

Resources

FAQs

<details> <summary>What Raspberry Pi model should I use for my Magic Mirror?</summary> Any Raspberry Pi with Wi-Fi capabilities will work, but a Raspberry Pi 3 or newer is recommended for better performance. </details> <details> <summary>Can I use a TV instead of a monitor for my Magic Mirror?</summary> Yes, a TV can be used instead of a monitor as long as it has an HDMI input for connecting to the Raspberry Pi. </details> <details> <summary>Is it necessary to have a two-way mirror?</summary> A two-way mirror is essential for achieving the magic mirror effect, allowing you to see the display through the mirror while still functioning as a regular mirror. </details> <details> <summary>How can I add new modules to my Magic Mirror?</summary> New modules can be added by following the installation instructions provided for each module on the MagicMirror² modules repository or other sources. </details> <details> <summary>Can I control my Magic Mirror remotely?</summary> Yes, modules like MMM-Remote-Control allow you to control your Magic Mirror from a web browser on another device. </details> <details> <summary>How do I update the MagicMirror² software?</summary> Updating the MagicMirror² software can be done via the terminal by navigating to the MagicMirror directory and running the command `git pull && npm install`. </details> <details> <summary>Can I integrate voice recognition into my Magic Mirror?</summary> Yes, voice recognition can be integrated using software like Mycroft, Snowboy, or Jasper, allowing you to control your Magic Mirror with voice commands. </details> <details> <summary>How do I customize the look of my Magic Mirror?</summary> Customizing the look can be achieved by modifying the CSS files associated with MagicMirror² and its modules, allowing you to change fonts, colors, and layout. </details> <details> <summary>Can I access the internet through my Magic Mirror?</summary> Yes, as long as your Raspberry Pi is connected to the internet, you can access online resources, and certain modules can display internet-based information. </details> <details> <summary>Is it possible to display videos or images on my Magic Mirror?</summary> Yes, there are modules available that allow you to display images, videos, or even stream live video feeds on your Magic Mirror. </details>

Hardware Requirements Checklist

Component Recommended Model
Raspberry Pi Raspberry Pi 4 Model B 2GB or 4GB
MicroSD Card 16GB or larger, Class 10
Monitor Any monitor with HDMI input
Two-Way Mirror Acrylic or glass two-way mirror
Frame Material Wood or metal
HDMI Cable Standard HDMI cable
Power Cables Micro USB (Raspberry Pi 3) or USB-C (Raspberry Pi 4)
USB Keyboard and Mouse Any standard USB keyboard and mouse
Additional Peripherals Camera, Microphone, Sensors etc.