Zbotic Logo Zbotic Logo
  • Home
  • Shop
  • Sale
  • 3D Print Service
  • PCB Service
  • B2B
  • Blogs
  • Contact Us
0 0

View Wishlist Add all to cart

0 0
0 Shopping Cart
Shopping cart (0)
Subtotal: ₹0.00

View cartCheckout

  • Shop
  • About Us
  • Contact Us
  • Reseller
  • Blogs
020 69134444
1800 209 0998
[email protected]
Help Desk
Facebook Twitter Instagram Linkedin YouTube
Zbotic Logo Zbotic Logo
0 0

View Wishlist Add all to cart

0 0
0 Shopping Cart
Shopping cart (0)
Subtotal: ₹0.00

View cartCheckout

All departments
  • 3D Print Service
  • 3D Printer
  • Batteries & Chargers
  • Development Boards
  • Drone Parts
  • EBike parts
  • Sensor Modules
  • Electronic Components
  • Electronic Modules
  • IoT and Wireless
  • Mechanical Parts and Workbench Tools
  • Motors & Drivers & Pumps & Actuators
  • DIY and Robot Kits
  • Show more
  • Home
  • Shop
  • Sale
  • 3D Print Service
  • PCB Service
  • B2B
  • Blogs
  • Contact Us
Return to previous page
Home Display Modules & Screens

ESP32 Smart Mirror: Display Clock, Weather & Calendar on LCD

ESP32 Smart Mirror: Display Clock, Weather & Calendar on LCD

March 11, 2026 /Posted byJayesh Jain / 0

An ESP32 smart mirror display clock weather project is one of the most satisfying builds for any Indian hobbyist. Imagine looking into a mirror that simultaneously shows you the current time, today’s weather forecast, and your upcoming calendar events — all powered by a tiny ESP32 microcontroller. This guide walks you through every step, from hardware selection to final code, so you can build your own smart mirror at home.

Table of Contents

  1. What Is an ESP32 Smart Mirror?
  2. Components You Need
  3. Choosing the Right Display
  4. Wiring the ESP32 to Your LCD
  5. Software Setup: Libraries and APIs
  6. Displaying Clock, Weather and Calendar
  7. Building the Mirror Enclosure
  8. Frequently Asked Questions

What Is an ESP32 Smart Mirror?

A smart mirror is a two-way mirror (also called a spy mirror or half-silvered mirror) with a display placed behind it. When the display is off, the mirror looks like a regular reflective surface. When the display lights up, the bright content shines through the mirror’s semi-transparent coating, giving the illusion that the information is floating inside the glass.

The ESP32 is the perfect brain for this project. It has built-in Wi-Fi, enough processing power to render graphics, and a rich ecosystem of libraries. Unlike an Arduino Uno, the ESP32 can connect to the internet to fetch live weather data, sync NTP time, and even pull your Google Calendar events — making it far more capable for IoT builds.

Indian makers have been building smart mirrors for under ₹2,000–₹3,000 using local components, making this one of the best-value IoT projects available today.

Components You Need

Before you start, gather these components. Most are available on Zbotic.in with fast delivery across India:

  • ESP32 development board (30-pin or 38-pin variant)
  • ILI9341 or ST7789 SPI LCD (2.8″ or 3.5″ recommended)
  • Two-way acrylic mirror sheet (available on Amazon India or local glass shops)
  • DHT20 or BME280 sensor for local temperature/humidity readings
  • 5V USB power supply (minimum 2A)
  • Jumper wires, breadboard or custom PCB, 3D-printed or wooden enclosure

For weather data, the project uses the free OpenWeatherMap API (1,000 calls/day free tier is more than enough). For time sync, it uses NTP (Network Time Protocol) servers — no RTC module required since the ESP32 reconnects to Wi-Fi on boot.

DHT11 Digital Relative Humidity and Temperature Sensor Module

DHT11 Digital Relative Humidity and Temperature Sensor Module

A reliable and affordable sensor for reading local temperature and humidity — ideal for displaying indoor conditions on your smart mirror.

View on Zbotic

BMP280 Barometric Pressure and Altitude Sensor

BMP280 Barometric Pressure and Altitude Sensor I2C/SPI Module

Measure local barometric pressure and altitude alongside temperature. Great for adding a weather-station widget to your smart mirror display.

View on Zbotic

DHT20 SIP Packaged Temperature and Humidity Sensor

DHT20 SIP Packaged Temperature and Humidity Sensor

The DHT20 is the upgraded successor to the DHT11 with I2C interface and improved accuracy — a cleaner wiring solution for your mirror build.

View on Zbotic

Choosing the Right Display

The display is the heart of any smart mirror. Here are the three best options for an ESP32 smart mirror project:

1. ILI9341 2.8″ TFT SPI LCD (320×240)

This is the most popular choice for beginner smart mirrors. The 320×240 resolution provides enough space for a clock, temperature widget, and a 3-day weather forecast. SPI communication is fast and well-supported by the TFT_eSPI library. Cost: around ₹300–₹400.

2. ST7789 1.9″ or 2.4″ IPS LCD

IPS panels offer wider viewing angles, which matters for a mirror you glance at from the side. The ST7789 is also supported by TFT_eSPI and offers better colour accuracy than TFT panels.

3. Large 7″ HDMI Display

For a full-length bathroom mirror project, a 7″ display connected to an ESP32-S3 or Raspberry Pi gives you much more screen real estate. However, this is a significantly more advanced and expensive build.

For most Indian hobbyists starting out, the 2.8″ ILI9341 SPI LCD offers the best balance of cost, ease of use, and visual impact.

Wiring the ESP32 to Your LCD

For an SPI LCD such as the ILI9341, connect the pins as follows:

LCD Pin ESP32 GPIO Notes
VCC 3.3V Most LCDs are 3.3V logic
GND GND Common ground
CS GPIO 5 Chip select
RESET GPIO 4 Hardware reset
DC/RS GPIO 2 Data/Command select
MOSI GPIO 23 SPI data out
SCK GPIO 18 SPI clock
LED 3.3V or GPIO (PWM) Backlight control

If you are adding a DHT20 or BME280 for local readings, connect them via I2C on GPIO 21 (SDA) and GPIO 22 (SCL). The I2C and SPI buses run independently on the ESP32, so there is no conflict.

Software Setup: Libraries and APIs

Install the following libraries in the Arduino IDE (or PlatformIO):

  • TFT_eSPI — fastest graphics library for ESP32 + SPI LCD. Configure User_Setup.h with your exact pin mapping.
  • ArduinoJson (version 6.x) — parse JSON responses from OpenWeatherMap.
  • HTTPClient — built into ESP32 Arduino core; no separate install needed.
  • WiFi.h — also built-in.
  • time.h — NTP time sync. Call configTime(19800, 0, "pool.ntp.org") to set IST (UTC+5:30 = 19800 seconds offset).

OpenWeatherMap API Setup

Register for a free account at openweathermap.org and copy your API key. The current weather endpoint is:

https://api.openweathermap.org/data/2.5/weather?q=Mumbai,IN&appid=YOUR_API_KEY&units=metric

Parse the JSON response to extract main.temp, weather[0].description, and main.humidity. Update weather data every 10 minutes to stay within the free tier’s call limits.

NTP Time Sync for IST

configTime(5*3600 + 30*60, 0, "pool.ntp.org", "time.nist.gov");

After the ESP32 connects to Wi-Fi and calls configTime(), use getLocalTime(&timeinfo) to retrieve hours, minutes, and seconds in IST without any manual offset calculation.

Displaying Clock, Weather and Calendar

Organise your screen real estate into logical zones. A popular layout for a 320×240 display:

  • Top zone (y=0–80): Large digital clock with date below it. Use the built-in fonts in TFT_eSPI (Font 7 is particularly large and clean).
  • Middle zone (y=80–160): Current weather icon (drawn with simple TFT shapes or bitmap), temperature, humidity, and city name.
  • Bottom zone (y=160–240): Scrolling text for upcoming calendar events (fetched from a simple JSON endpoint you host, since Google Calendar API requires OAuth2 which is complex on ESP32).

Refresh Strategy

Only redraw the portions of the screen that have changed. Redrawing the entire display every second causes visible flicker. Instead:

  • Redraw the clock seconds digit every second (small region).
  • Redraw the minutes digit once per minute.
  • Refresh weather data every 10 minutes by making a new API call in a separate non-blocking timer.

Use millis()-based timers (not delay()) to keep the display responsive. This is the same principle used in professional embedded UI development.

Building the Mirror Enclosure

The two-way mirror effect is achieved with a semi-transparent acrylic mirror sheet, available in sizes from A4 to A0 at most hardware stores or on Amazon India for ₹300–₹1,500 depending on size. The key requirement is that the room in front of the mirror should be brighter than the display behind it — just like a one-way interrogation room mirror.

For a tabletop clock build, a simple wooden or 3D-printed frame works well. Cut a hole in the back of the frame for the display, secure the ESP32 board with standoffs inside, and attach the acrylic mirror sheet to the front of the frame. For wall mounting, use a shadow box picture frame from a craft store (IKEA Ribba frames are a popular choice globally; in India, similar frames are available at Home Centre).

Ensure good ventilation — the ESP32 runs warm under continuous Wi-Fi operation. Adding a small cutout at the bottom of the enclosure is sufficient for passive airflow.

GY-BME280-3.3 Precision Altimeter Atmospheric Pressure Sensor Module

GY-BME280-3.3 Precision Altimeter Atmospheric Pressure Sensor Module

Combines temperature, humidity, and barometric pressure in one I2C module. Perfect for a complete indoor weather station widget on your smart mirror.

View on Zbotic

GY-BME280-5V Temperature and Humidity Sensor

GY-BME280-5V Temperature and Humidity Sensor

5V-compatible BME280 module — no level shifter required when powering the entire project from a 5V USB supply. Plug and play with ESP32 5V pin.

View on Zbotic

Frequently Asked Questions

Can I use a regular mirror glass instead of two-way acrylic?

Regular mirrors are fully reflective and will block the display completely. You must use a two-way (semi-transparent) mirror or spy mirror sheet. Acrylic sheets are cheaper and lighter than glass and are the recommended choice for DIY builds.

Does the ESP32 need to stay connected to Wi-Fi the whole time?

The ESP32 needs Wi-Fi to fetch weather data and sync NTP time. However, you can configure it to reconnect only every 10 minutes for weather updates, putting the Wi-Fi radio to sleep in between to save power and reduce heat. The clock will still tick accurately between syncs using the internal RTC.

How do I show my Google Calendar on the ESP32?

Google Calendar’s API requires OAuth2, which is complex for ESP32. The easiest approach is to write a simple Python Flask or Node.js script on a Raspberry Pi or home server that queries the Calendar API and exposes a simple JSON endpoint. Your ESP32 then fetches this simplified JSON instead.

What if the display is too dim to shine through the mirror?

Use the backlight PWM control to run the display at maximum brightness. Also, use a darker room or ensure the display faces a wall rather than a window. A display with at least 400 nits brightness works well. Avoid placing the mirror in direct sunlight.

Can I add voice assistant support?

Yes — you can add a MAX4466 microphone module and use the ESP32’s I2S interface to capture audio, then send it to a home assistant server (like Home Assistant with Assist). However, this significantly increases project complexity and is best tackled after the basic display is working.

Ready to build your ESP32 smart mirror? All the sensors you need — DHT20, BME280, BMP280 — are available on Zbotic.in with fast delivery across India. Start with a sensor combo and an ESP32 dev board for a complete weather-station mirror that costs less than a single commercial smart display.

Shop Display Modules on Zbotic

Tags: Arduino, ESP32, iot projects, LCD Display, smart mirror
Share Post
  • Facebook
  • Linkedin
  • Whatsapp
ESP32 ePaper Weather Display: ...
blog esp32 epaper weather display openweathermap api project 596755
blog gc9a01 round tft display 240x240 circle screen for gauges 596760
GC9A01 Round TFT Display: 240&...

Related posts

Svg%3E
Read more

Multi-Display Sync: Run Same Content on Multiple Screens

April 1, 2026 0
Table of Contents When You Need Multiple Synchronised Displays Communication Protocols for Display Sync I2C Multi-Display Architecture SPI Daisy-Chain Approach... Continue reading
Svg%3E
Read more

Display Brightness Control: Ambient Light Auto-Adjust

April 1, 2026 0
Table of Contents Why Auto-Brightness Matters Light Sensors: LDR, BH1750, TSL2561 PWM Brightness Control Basics Implementing Auto-Brightness for OLED Auto-Brightness... Continue reading
Svg%3E
Read more

LCD Menu System: Multi-Level Navigation with Encoder

April 1, 2026 0
Table of Contents Why Build a Menu System Hardware: LCD + Rotary Encoder Menu Architecture Design Implementing the Menu Engine... Continue reading
Svg%3E
Read more

LED Running Text: Single Line Scrolling Marquee

April 1, 2026 0
Table of Contents Applications for Scrolling Marquee Displays Hardware Options: Dot Matrix vs LED Panel Building with MAX7219 Cascaded Modules... Continue reading
Svg%3E
Read more

Prayer Time Display: Mosque and Temple Timer India

April 1, 2026 0
Table of Contents The Need for Automated Prayer Time Displays Calculating Prayer Times Programmatically Display Options for Places of Worship... Continue reading

Add comment Cancel reply

Your email address will not be published. Required fields are marked

Facebook Twitter Instagram Pinterest Linkedin Youtube

Get the latest deals and more.

Download on Google Play Download on the App Store

Call us: 020 69134444 / 1800 209 0998

Monday - Saturday 09:30 AM - 06:00 PM
For Technical Supports Email: [email protected]
For Sales / Enquiries Email: [email protected]

  • My Account

    • Cart

    • Wishlist

    • Checkout

    • My Orders

    • Track Order

    • My Account

  • Information

    • FAQs

    • Blogs

    • Career

    • About Us

    • Contact Us

    • Payment Options

  • Policies

    • Privacy Policy

    • Terms & Conditions

    • GST Input Tax Credit

    • Shipping Return Policy

    • E-Waste Collection Points

    • Our Sitemap

© Zbotic.in is registered trademark of Moxie Supply Pvt Ltd – All Rights Reserved
Login
Use Phone Number
Use Email Address
Not a member yet? Register Now
Reset Password
Use Phone Number
Use Email Address
Register
Already a member? Login Now