ECE434 Smart Mirror

Revision as of 14:02, 18 November 2019 by Abarbour (talk | contribs)
Jump to: navigation, search

thumb‎ Embedded Linux Class by Mark A. Yoder

Team Members: Mark Procter and Andy Barbour

Grading Template

I'm using the following template to grade. Each slot is 10 points. 0 = Missing, 5=OK, 10=Wow!

00 Executive Summary
00 Installation Instructions 
00 User Instructions
00 Highlights
00 Theory of Operation
00 Work Breakdown
00 Future Work
00 Conclusions
00 Demo
00 Late
Comments: I'm looking forward to seeing this.

Score:  10/100

(Inline Comment)

Executive Summary

This project consists of a reflective pane of acrylic with a monitor behind it, creating a mirror that can display useful widgets like the date, the weather, and a daily fortune, among other things. It is a sleek device useful for quickly gathering daily information while, for instance, getting dressed or brushing teeth.


All hardware components of this smart mirror are enclosed in a wooden frame that hides and protects the monitor, BeagleBone, and electrical wiring.

Installation Instructions

  1. . Install Debian [link and version number here]
  2. . Clone the repository using $git clone
  3. . Enter the repository and run the install file with $./
  4. . [info on how to make program run on start]
  5. . Create a Blynk project with a single button labelled "Toggle Mirror Display" that will toggle the V0 pin between 1 and 0, starting at 1
  6. . Retrieve the Blynk authorization key and copy it into the variable BLYNK_AUTH in the file

User Instructions

[info on using Blynk]


Here is where you brag about what your project can do.

Include a YouTube demo the audio description.

Theory of Operation

The customization of the appearance of the displayed widgets was done through InitialState, a tool used for collecting and displaying data fed to it. The raw InitialState page created for this project can be seen here. On the startup of the BeagleBone system, the main Python script will run. It will first open the customized HTML for the InitialState page that formats it properly, then simulate an F11 key press to enter full-screen. The program will then continually listen for button presses in the Blynk program to toggle the output to the HDMI port. Periodically, the Python script will retrieve information from various APIs to obtain the current data to display, then feed it to the InitialState dashboard, causing it to update.

Work Breakdown

Mark Procter

  • Integration of weather API

Andy Barbour

Both Team Members

Future Work

Suggest addition things that could be done with this project.


Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.

thumb‎ Embedded Linux Class by Mark A. Yoder