DIY Magic Mirror


Magic Mirrors! Everyone loves them and they're quite popular in the maker world. However, a lot of DIY guides for building magic mirrors can be quite hefty -- you'll typically need to hack up a LCD monitor which can easily increase the cost and time required to complete the project. If you're looking to display large graphics/text, then a LCD monitor is probably the way to go. But we just needed simple text, and so we decided to build a low-cost one ourselves with Beam! 

Here's why Beam is perfect for building a magic mirror: 

  • You don't need to sacrifice a whole monitor!
  • The Beam grid is optimized for crisp and readable text. 
  • The Beam LED is super bright - it shines right through a two-way mirror. 

The total cost of this project is approximately $150! Let's get started. We're going to use the following parts:

  • 2x Beam grids (currently on sale!)
  • Particle Photon
  • Two-way mirrored acrylic sheet (16x24 inches) - you can get custom sizes here
  • Large Photo Frame (16x24 inches)
  • Miscellaneous (black bristol board, wires, breadboard, tape)


Connect Beam to Particle Photon

Follow the hookup guide here to make sure your circuit works as expected. Once the circuit is verified, we can start putting everything together.

We're using two Beam units chained together for this example but you can use three or up to four Beams chained together. 

Modify the frame

First, we're going to fit our 16x24 two-way acrylic sheet into our picture frame which also measures 16x24.

The two-way acrylic sheet (or two-way mirror) is reflective one one side and translucent on the other side. You can see how it works in this video here

Note: The display frame might have a thin plastic sheet - we recommend removing this so that the mirror is more reflective. 

Next, place a black sheet to cover the entire translucent (back) side of acrylic sheet. This black sheet can be any dark paper or cloth - it's required so that our mirror actually reflects on the front side. Without this dark sheet, you'll see right through the sheet and it won't act like a mirror at all!




Cut off the excess and tape it down. 







Then connect the Beam units together and place them where you would like the LEDs to shine through. We picked the center of the frame. Mark the outline of the Beam grids. 






Cut out the outline where the Beam grids will be placed.








Place the Beam units in the cutout and use some tape to hold it in place. We used black electrical tape so that the opposite reflective side is perfectly uniform.

Leave one of the side connectors on Beam accessible so that we can connect the wires and built the circuit next. 




Now flip over the frame to check the opposite side - you should not be able to see the Beam grids. When the LEDs are lit up, it will shine right through the mirrored acrylic sheet. 







Now let's finish off the rest of the electronics. Grab your Particle Photon/Core and wire it up according to Step 1 above.

Our frame is pretty thick so we used a breadboard to hookup everything. If you're using a thin frame, you might need to use proto board instead to connect all the wiring. 





Here's a close up of all the electronics in place.

Pretty simple eh?














Download Code from Github and Flash!

In this example, we alternate between three sets of data: transit (BART) schedules, weather stats, and stocks. You can use any API out there to grab more textual data and display it using this code as an example.

Download the library and use the /examples/BeamTransit or /examples/BeamWeatherStocks folders. Copy the library over to the Particle IDE and flash!

Note: If this is your first time using external APIs with Particle, we recommend following the code explanation in this example - it goes over all the details on how to register callback functions on the Particle cloud so that we can call any API available. 

Going further

You can add even more Beams on the same mirror to spread out the content - for example, the top edge can be used for weather data and the bottom edge can be used transit schedules.