Dominic Quigley - djq2
Gerardo Porras - gporras3
Introduction
Our goal is to create a “smart mirror” that displays information such as the weather, time, and to-do lists at the top of the mirror. While building this project is well-documented (Source 1), we want to challenge ourselves by writing some of the control programs ourselves and seeing how we can get a Raspberry Pi to interact with a display and user input.
This project is intriguing because of the ability for us to make it as complex as we could think of. Building the basic components of the mirror might be straightforward, so one of our thoughts on how to expand upon the project is by introducing sensors that detect human motion. In doing so, we can determine when to “wake up” the mirror and also implement certain hand gestures that act as commands.
Ultimately, what we hope to take away from this project is increased understanding of programming, basic machine learning, and input/output structures.
A few examples of magic mirrors are shown below.
Design Details
Parts
As recommended by The Verge (Source 2):
Part | Cost | Source |
---|---|---|
Raspberry Pi | $35.00 | https://www.adafruit.com/product/3775 |
Monitor | $69.99 | https://amzn.to/2udwYGe |
Mirror (acrylic) | $22.99 | |
HDMI Cable | $4.95 | https://www.adafruit.com/product/608 |
MicroSD Card | $9.95 | https://www.adafruit.com/product/1294 |
Raspberry Pi Camera - Small | -- | In inventory |
Ultrasonic Sensor | -- | In inventory |
Possible Challenges
Some challenges we foresee are difficulty in distinguishing hand gestures and selecting the correct function. Also, implementing a sleep timer could be difficult, especially since the Raspberry Pi will constantly have to be checking if the timer is 0. In terms of the physical build, minimizing the bulk of the mirror and making sure the display is bright enough are additional challenges.
Proposal Revisions
A major area we had to look more into was the gesture detection and how we're going to get hand movement data from the user into the Raspberry Pi. One article we came across approached this by integrating a Raspberry Pi camera, writing a program in Python that outlined the gesture, and performing some desired output (Source 3). We can approach our goal in a similar manner, by tracking the user's hand movement and determining what function to carry out based on that input.
In terms of a set of goals, we have a few in mind. In order of importance to us, they are as follows:
- Displaying information on the screen at all times (weather, calendar, and time to begin with)
- Implementing a sleep/wake feature to save power
- Connecting a camera and detecting gestures
- One gesture to magnify information (e.g. full-screen calendar)
- One gesture to minimize information (keep time at the top)
- One gesture to "click" (e.g. see daily agenda in detail)
If we meet these goals, some ways we can expand the project include adding other applications such as email, news, alarms, etc. We could also try to use the camera to detect faces and customize the mirror based on the user. However, to begin with, we will focus on the goals mentioned above.
After reading some previous smart mirror projects, we found out that the easiest way to implement the sleep/wake function will probably be with an ultrasonic sensor instead of a camera.
References
Source 1: https://docs.magicmirror.builders/
Source 3: https://medium.com/@CLiu13/gesture-detection-with-a-raspberry-pi-f72a6038e967
Figure 1: https://www.voiceinterconnect.de/en/detail/magic-mirror-voice-control
Figure 2: https://www.pinterest.com/pin/849069335974598792/
Attachments:
mirror2.jpg (image/jpeg)
mirror1.jfif (application/octet-stream)
mirror3.jpg (image/jpeg)