Smart Mirror Project

smart mirror

The phrase 'smart mirror' can mean many different things. It can be a simple mirror with automated lighting, or a mirror with built in audio, or a TV hidden behind a mirror, or an interactive touchscreen display which works through a one-way mirror.

The focus of this project is NOT on a complex, touch interactive smart mirror, that will come later. The focus is on improving the basic bathroom mirror functionality to deliver a zero touch user experience and improve quality of life.

Note:  This project is also an extension of my smart shower controller project and uses the same Arduino processor.

Design

For this initial smart mirror project, I have limited my ambitions based on the limitations of our current bathroom layout. This means, I'm using a standard mirror with a number of smart features, rather than having a full interactive display for now. I continue to research and plan for an interactive mirror later though.

So my initial design supports the following features:

Note that I already have quite a lot of other smart home features enabled in my bathroom, including:

Proximity

To accurately detect someone standing in front of our bathroom mirror, I'm using a JSN-SR04T ultrasonic proximity sensor. The front has been spray painted white, to make it much more subtle when installed. This does reduce the sensitivity slightly but I don't need to measure huge distances in this application.

The proximity sensor is configured to provide occupancy updates to my contextual smart home, so my smart home knows the bathroom is occupied if someone adds or removes a toothbrush to the stand.

The JSN-SR04T ultrasonic proximity sensor is mounted in a 3D printed enclosure at the bottom of the mirror, designed using Autodesk Fusion 360.

Lighting

The proximity sensor also drives the main lighting over the mirror. This is a single colour (warm white) LED strips and is dimmable.

More on the dynamic smart lighting later.

Demista

The mirror already has a heating element behind it, to stop it misting up. I have used Demista heating pads in our bathrooms for many years and this project puts it under intelligent smart home control. The Arduino will control the mains voltage using a solid-state relay to switch mains voltages.

Build

Proximity

The JSN-SR04T ultrasonic proximity sensor is mounted in a 3D printed enclosure at the bottom of the mirror, printed on my Ender 3 Pro 3D printer. This is screwed to the bottom of the mirror frame.

PCB

This project re-uses the same PCB that I designed for my smart shower controller, because it basically using a very similar set of sensors and digital outputs. This is one of my smart home 'Building Blocks'.

It is designed to connect to an Arduino using the 10-way connectors used on my shield PCB or header PCB.

Arduino

My shower controller is using an Arduino Mega 2560, so I'm basically extending this project to add this functionality. This is a slave processor and part of my contextual smart home. As part of my distributed smart home architecture, it handles a fair bit of functionality locally but it also talks to my Home Control System using my unified communications protocol and sends and receives events in this way.

Lighting

I'm using two types of lighting on my smart mirror. The first is a bright, single colour LED strip which is also dimmable. This is the main mirror lighting source.

I'm also using my own dynamic smart lighting.

Proximity

The ultrasonic proximity sensor is mounted at the base of the mirror and virtually invisible.

Further Reading