Introduction
A Smart Mirror is an interactive mirror that displays useful information such as time, date, weather, news, notifications, and even health metrics, while functioning like a normal mirror.
By integrating IoT, Raspberry Pi/Arduino, and touch or voice controls, a Smart Mirror turns a regular household mirror into a smart home assistant.
Objective of the Project
- To create an interactive mirror that displays real-time information
- To integrate weather, clock, calendar, and notifications
- To provide voice or touch interaction
- To implement a simple IoT-based smart home device
Working Principle
- A two-way mirror allows the display to be visible while reflecting like a normal mirror
- A monitor or LCD panel is placed behind the mirror
- Raspberry Pi / Arduino controls the content displayed
- Optional: Voice commands or sensors can trigger display of personalized data
- IoT integration allows fetching weather, news, or notifications from the cloud
Components Required
- Raspberry Pi 4 (recommended) or Arduino with display
- Two-way acrylic mirror
- Monitor / LCD / LED panel
- HDMI cable
- PIR sensor (optional)
- Microphone (for voice control, optional)
- Speakers (optional)
- Wi-Fi for IoT integration
Block Diagram
Cloud (Weather, News, Calendar)
↓
Raspberry Pi
↓
Display / Monitor
↓
Two-Way Mirror Glass
↓
User Interaction (Voice/Touch)
Circuit Connections (Raspberry Pi Example)
- Raspberry Pi connected to HDMI monitor
- PIR sensor → GPIO pins (optional for motion activation)
- Microphone → USB or GPIO for voice input
- Speakers → USB or audio jack
- Wi-Fi connected for cloud updates
Software / IoT Code (Python Example)
import time
from datetime import datetime
import requests
from tkinter import Tk, Label
# Create GUI window for mirror display
root = Tk()
root.title("Smart Mirror")
root.configure(background='black')
root.geometry("800x480") # Match screen resolution
# Weather API
api_key = "YOUR_OPENWEATHER_API_KEY"
city = "Your_City"
def get_weather():
url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric"
response = requests.get(url)
data = response.json()
temp = data['main']['temp']
condition = data['weather'][0]['description']
return f"{city}: {temp}°C, {condition}"
# Labels
time_label = Label(root, font=("Helvetica", 48), fg="white", bg="black")
weather_label = Label(root, font=("Helvetica", 24), fg="white", bg="black")
time_label.pack(pady=50)
weather_label.pack(pady=20)
# Update function
def update():
now = datetime.now().strftime("%H:%M:%S")
time_label.config(text=now)
weather_label.config(text=get_weather())
root.after(60000, update) # Update every 1 minute
update()
root.mainloop()
Code Explanation
- Python script runs GUI on Raspberry Pi
- Displays real-time clock and weather info
- Fetches weather updates from OpenWeatherMap API
- Can be extended to include news, calendar, or notifications
- Optional: PIR sensor can turn display on/off automatically
Advantages
- Interactive and futuristic
- Real-time weather, news, and notifications
- Hands-free and touchless operation
- Enhances smart home experience
Applications
- Smart homes
- Offices and hotels
- Gyms and fitness centers
- Educational and research projects
Future Enhancements
- Voice assistant integration (Alexa / Google Assistant)
- Facial recognition for personalized info
- Smart home control (lights, fans, AC) via mirror
- Health monitoring (heart rate, BMI)
Conclusion
The Smart Mirror is a modern innovation that combines IoT, cloud services, and human-computer interaction. It transforms a simple mirror into a smart assistant for homes and offices, making daily life more convenient and futuristic.
