$100 Smart Mirror Pi

139,854

1,656

62

Published

Introduction: $100 Smart Mirror Pi

About: I started making things at Victoria University in Design School while studying Industrial and Media Design. This degree has helped develop my creative ability in the fields of Wearable Tech, Electronics, Web...

I saw one of these mirrors online and instantly set out to make one in the cheapest, thriftiest and easiest way I could find and now you can too! This mirror is my second iteration, I used a Laptop first to write the code and eased my way into using the Raspberry Pi, The total cost of the build was $146 NZD = roughly $100 USD

I am using Raspberry Pi 3 model B for the brains of the project as it has built in WIFI which is perfect for this. Building this mirror was my first taste of the Pi, and it was delicious... If you like this instructable please vote for me in the Beyond the Comfort Zone or Internet of Things competitions :-) thaaanks

You will need:

(Expenses I paid in NZ Dollar)

  • Raspberry Pi 3 (with power supply) - $70
  • Desktop Monitor (recommend 19" or larger) - $20
  • HDMI to VGA adapter for display - $10
  • Picture frame with glass (or any piece of glass larger than your monitor) - $10
  • Silver Reflective Window Film - $20 - AMAZON
  • 3mm Black Acrylic plastic sheet (For laser cut) - $6
  • 6X small screws - $5
  • Superglue - $5

Fortunately I have cheap access to some powerful tools through Victoria University where I study Media Design which allowed me to do all the manufacturing myself. I have never laser cut anything before this project and have minimal experience with a 3D printer so if I can do it I am confident you can too! If you don't have access to this equipment there may be some local Maker facilities in your area such as: Techshop / MakerSpace / FabLab or somebody who will do it for a small fee.

Tools:

  • 3D Printer
  • Laser Cutter
  • Sand paper
  • Drill
  • Screw Driver

Step 1: Specifications

So, before I began building my Mirror I decided to jot down some project goals detailing exactly what attributes the Mirror will have in its final form.

It must display:

  • Today's Date and Time
  • The current weather conditions with icon and outside temprature
  • A list of reminders for things I need to do Today + Tomorrow
  • My upcoming hand-in dates for University projects
  • The current week in the year and what events I have on this week

The Design of the mirror itself must aim to be:

  • Lightweight for portability
  • Adjustable (height and angle)
  • Very strong and durable
  • Sexy

Step 2: Start Building

I started by tidying up an old picture frame I picked up from an op-shop for $20, I tried to explain to the old man who worked there that I was turning it into a Smart Mirror and I have never seen anybody look so confused. I was looking to buy one that had a glass surface larger than the 19" Monitor I planned to mount it too. I also wanted the wooden frame itself to be large + strong enough to support 6 small screws. Try get one with thick glass to avoid cracking it in the building process as I did with my first concept.

Once I had the perfect frame I sanded it back to its natural wood grain and tinted the glass with my one way mirror tint film. If you have never tinted anything with film I highly recommend watching a few youtube videos on How to install reflective window film, as there is a few tricks to doing it with no bubbles at the end. You will also need to pay attention to the VTL (Visual light Transmittance) level of the tint. The VTL of these films ranges from around 5% = Very Dark. 15% = Dark. 35% = Lightly Dark. 50% = Light. 65% = Very Light. For this specific project we are aiming to tint the glass in a way that provides surface reflection on the external side but also allows the graphical output of the Mirror to Transmit through the glass. I used 20% for mine but I believe there could be a more suitable VTL for achieving this effect.


Step 3: Mounting the Mirror to the Monitor

This is the part where I laser cut two rectangles out of 1 piece of acrylic sheet. The first rectangle cut out of the acrylic sheet was to the size of my wooden frame and the second one was to the size of my monitor 19".

I did this by making a very basic file in Illustrator and sending it to
the laser cutter. I would attach the file but your dimensions will likely be different to mine.

Once this piece is cut out to the perfect size it is superglued to the front of my monitor. I took the front of the monitor off for this step to avoid getting glue on the screen.

They bonded together extremely well and I then lined up the acrylic with the back of the wooden frame and started drilling small holes through the plastic and softly into the wood. Drilling holes is very important to allow the screws to go into the wood and plastic without causing cracks or splits. I did this with 3 screws running down each side, 6 in total to secure the frame to the acrylic / monitor.

Step 4: Lets Get Nerdy (Coding)

If you are new to Raspberry Pi like me and you are completely unsure
how to get started, also like me you should head over to this instructable

https://www.instructables.com/id/Setting-up-and-run...

to learn how to download and set up NOOBS the operating system for the Pi.

The Pi contains all the brains for the mirror and allows it to run a Processing sketch.

Once your Raspberry Pi is up and running with NOOBS installed you will need to install Processing.

Processing is an IDE (integrated development environment) used by Designer's for writing Java applications. Processing has only recently become supported by Raspberry Pi and you can create applications directly on your Pi without the need for another Laptop or PC. To install Processing on your Pi take the 'processing-linux-arm' file attached to this step, put it on a USB and transfer it to the Pi. Now just open it on the Raspberry desktop and Processing should begin to install.

I have attached the processing sketch (it is in the Mirror_Pi.zip file along with the weather icons and reminders.txt) I used to create the Application for the mirror. Go ahead and open it on your Pi and hit 'Run'. You will need to change the width and height values in the setup() loop to match the resolution of your screen.

This sketch pulls weather data from the internet for Wellington City and retrieves the current date and time from the Pi's default timezone settings. It also retrieves my upcoming hand-ins from a .txt file in the root folder called reminders.txt that can easily be edited to your needs. It has a calendar & week planner hard-coded into it so it knows what week it is in the year and displays your events for that week.

*** You will need a bit of coding skill to make the sketch pull weather data for your City. I Took this data straight off accuweather.com by using firefox's developer tools to find where in the sites code it shows today's conditions and temp and displaying that in the Application. You can do this with your weather website of choice or use an API like Yahoo Weather. ***

When you are happy with the sketch and how it looks on your screen hit the Export Sketch button at the top of the Processing window and export it as an application.

Step 5: Housing the Pi

I decided to 3D Print a case for my PI so I could mount it to the back of the monitor. I found this case on thingiverse courtesy of a maker named Normand:
http://www.thingiverse.com/thing:410003

I 3D Printed it in about 2 hours on an UP Mini. This case is ideal for this project as it protects the GPIO pins but allows access to the USB, HDMI, SD and Micro USB (power) ports.

I attached the bottom piece of the case to the back of my monitor with more superglue to avoid putting screws into the internal organs of the monitor.

Step 6: Power Up and Admire

Now all you need to do is power up your monitor and your Raspberry Pi and open the exported Application from Processing.

There you go !

if you followed along you should now own your very own smart mirror, congratz! I would love to see your projects and I'll be right here to answer any questions to help you along. If there is any advice you have for me i'd be glad to hear it. I plan on developing this Prototype further so if you want to see where it goes from here make sure to follow me for future updates :-) There are so many potential developments for this project and I hope this Instructable is a useful blueprint for the Maker Community.

Happy Making peeps !

Beyond the Comfort Zone Contest

Second Prize in the
Beyond the Comfort Zone Contest

Internet of Things Contest 2016

Grand Prize in the
Internet of Things Contest 2016

Share

    Recommendations

    • Microcontroller Contest

      Microcontroller Contest
    • Casting Contest

      Casting Contest
    • Make it Move Contest

      Make it Move Contest
    user

    We have a be nice policy.
    Please be positive and constructive.

    Tips

    Questions

    62 Comments

    I'm struggling with the wdata section. What line of code are you looking to retrieve? Do you have an example of what it looked like for you?

    When I look at the source code for accuweather, line 217 (what you used) is blank, even for the source you used (Wellington). I'd appreciate any and all help! Thanks!

    That's awesome. We just need a DIY of doing that to an HUD :)

    im having a hard time to get wdata of the prefered weather for my country. http://www.accuweather.com/en/ph/pag-asa/1894661/weather-forecast/1894661 hope u can reply asap.

    Dude this is an awesome design. Literally just what I want for my make shift robotics lab. Is there a way that I can hook up a tablet/ phone up to this? If so how would I do it?

    I will definitely make sure to vote for you.

    3 replies

    I think this would look great in your robotics lab there is another instructable where the mirror uses an Android tablet for its display I will find it for you. I am still researching to find a way to update the event and reminder cycles from a smart phone / device.

    Google Calendar all the way for adding from a mobile device, I'm working on it but not sure how far I will get, I haven't a clue where to start lol. Looking at the Java APIs, it's on about installing a Google Calendar library but there isn't a version for Processing so not sure if one of their other ones will work with it.

    https://www.instructables.com/id/Android-Motion-Sensing-Smart-Mirror/

    I was tempted to do this for the one I'm making but wasn't sure about fingerprints + mirror lol

    Funny you mention touch screen. There are a few instuctables about converting LCDs into touch screens.

    wow I have never heard of touchscreen overlay's that is a great idea. Do you know where to buy them ?

    http://www.ebay.com/bhp/touch-screen-kit

    How does a man autostart a jar file after the pi booted? =)

    It will be awesome if you add voice and talk back functionality to it

    That is awesome! I read somewhere that hdmi to vga adaptors were causing pi systems to overheat and freeze. Apparently that adaptor is working okay though. Would you be willing to share brand of your hdmi to vga adaptor.

    1 reply

    I can't say I've heard of these issues before but I've had Pi's overheat just running as a basic board so I always put heatsinks on the cpu and other chips, heatsinks are about £2 on ebay. The freezing sounds to me like it could be a lack of power, as long as the Pi's USB adapter is rated at 2A I wouldn't expect to see any freezing issues. I've had loads of HDMI to VGA adapters in the past I just get whatever is cheapest on ebay, normally about £3 or so from China and I haven't had any problems from them, this was the last one I bought about a year ago and it's still going strong: http://www.ebay.co.uk/itm/291751430337

    Thanks for the great guide. I've been wanting to do something like this for a while and recently saw a Microsoft Windows 10 version (http://lifehacker.com/microsofts-official-guide-fo... but the coding on that one seemed a bit beyond my capabilities.

    Your one however looks perfect and is well documented. I'll be looking to modify it slightly so that the monitor will only turn on when someone is standing in front of the mirror (the Pi will remain on all the time). I haven't yet decided how to do it but I'm thinking of a mini PIR sensor (https://learn.adafruit.com/pir-passive-infrared-pr... which will control a relay connected to the power of the monitor. I'll also be completely stripping down the monitor to it's bare parts so I can make the casing smaller and wall-mountable. I also hope to use Google Calendar instead of the text file as well so I can add appointments from my smartphone or computer and have it sync across to the mirror.

    This is the perfect starting point that I've been looking for though so thanks for the guide, I'll let you know how it goes when I get it finished :D

    1 reply

    Or a sensor this size would be better than the adafruit one for my use: https://www.parallax.com/product/28033