Magic Mirror

Voice Controlled by Alexa

There are 3 components to the Magic Mirror: The mirror, the monitor, and the frame. The monitor is powered by a Raspberry Pi 3 that displays the Magic Mirror interface. The frame encases both the mirror and monitor to create  the Magic Mirror illusion.


Sabrina T

Area of Interest

Finance/ Environmental Engineering


Lowell High School


Incoming Senior

Final Milestone

For my Final Milestone, I added Amazon’s voice control service, Alexa, to my Raspberry Pi. I chose Alexa over Jasper, another voice control service, because I have an Echo Dot and Alexa-activated smart light bulbs at home. I added a module that gives visual feedback on my MagicMirror interface when I interact with Alexa so I know when it’s working and processing my voice. For example, it displays a microphone when Alexa is available, a rotating circle to show that it is processing my request, and a volume rocker when Alexa is replying. This helped me debug the voice control service by letting me know whether the problem was a software bug or a hardware issue.

AlexaPi Status: Online, Processing, Offline

Second Milestone

My second milestone was building the wooden frame and putting the whole project together. Because we don’t have a wood shop, I had to think outside the box to make makeshift jigs from the tools I had available to me.

Cutting and Sanding Wood

First Milestone

My First Milestone for the Magic Mirror is to have a working interface. The software focuses on a modular plugin system and uses Electron as an application manager. Electron uses Node.js and Chromium to build using Javascript, CSS, and HTML. It translates the code so it can be cross platform (Linux, MacOS, Windows, etc). 

Before and After Modifications

Link to:  Magic Mirror Instructions 

How to customize the modules

All the customization is done in the config.js file within the MagicMirror folder. However, if I wanted to use a third party module, I would have to clone the repository into the MagicMirror/modules folder first. In the config.js file, I can choose where to display the module (top_left, center, bottom_bar, etc), the header, and the configurations specific to the individual modules. The configurations can be found at the GitHub repository.

Most modules use an Application Programming Interface. An API is set of protocols and routines to build software applications. For example, I use Twitter’s API. There are two types: Rest API (Data Base) and Search API (Connects to my account). In order to use an API, I needed an API key. API keys are used to track and control how to the API is being used i.e to prevent malicious use of the API. It also acts as unique identifier and as a secret token for authentication. 

Every single module on my MagicMirror uses an API because I wanted a customized interface that suited my personal needs.

Here is a link to the MagicMirror modules

Starter Project

My Starter Project is the Mini POV 4, a fully customizable light painting kit. When you wave the POV in front of a camera on long exposure, it displays an image that appears to be floating. I enjoyed this project because I learned about the different electrical components and their roles in this circuit as well as how to solder.


How it works

The Mini POV 4 is powered by a 4.5V source. The 100μF and 0.1μ F capacitors work together to stabilize the current and filter out noise. The potentiometer, also known as a variable resistor, controls the amount of current that flows to the microcontroller. When the dial is turned, the input to the micro controller changes, which changes the output (the LEDs’ blinking speed). The 2.2k resistors limit current flowing to the 3 transistors. Because the micro controller’s signal is not strong enough to communicate with the LEDs, the transistors amplify the signal. Each LED has it’s own 47 ohm resistor that prevents the LED from overheating. In between the resistors is a ceramic resonator which acts as the board’s metronome and makes sure that the LEDs blink at a consistent rate. The board also has two diodes to make sure electrostatic discharge does not occur. Electrostatic discharge is when static electricity is released when two objects come into contact. The diodes also ensure that the data being transferred from a computer to the POV does not get interrupted. Last of all, there is the USB type B port that allows the user to customize the image on a computer by using the Mini POV 4 software. Users are able to draw their own 8 pixel tall image and download it to their POV.

These are the instructions

Mini POV Schematic

Sabrina T
Image Source:

Leave a Comment

Start typing and press Enter to search

Bluestamp Engineering