Weather Monitoring System Using Esp32-s3 Smart Display

About the project

Learn how to build Smart Weather Monitoring System Using ESP32-S3 Smart Display and LVGL

Project info

Items used in this project

Hardware components

VIEWE ESP32 Display Module VIEWE ESP32 Display Module x 1
7Semi BME280 Sensor 7Semi BME280 Sensor x 1
Rain Sensor Rain Sensor x 1
Light Sensor Light Sensor x 1
Jumper Wires Jumper Wires x 1
breadboard breadboard x 1

Software apps and online services

Visual Studio Code, v1.116.0 or above Visual Studio Code, v1.116.0 or above

Story

In this project, an ESP32-S3 Smart Display is used to build a weather monitoring system that measures temperature, humidity, atmospheric pressure, altitude, rainfall conditions, and ambient light levels. The measured data is presented on an interactive dashboard created with LVGL, giving the system a polished and user-friendly appearance.

How Does the Weather Monitoring System Work?

The system continuously acquires environmental information from different sensors. These measurements are processed by the ESP32-S3 and displayed through a graphical interface.

The overall workflow consists of:

  • Collecting environmental data.

  • Processing sensor measurements.

  • Updating the weather dashboard.

Collecting Environmental Data

The project uses multiple sensors to observe surrounding conditions.

A BME280 sensor is responsible for measuring temperature, humidity, and atmospheric pressure. Since atmospheric pressure changes with elevation, altitude can also be estimated from the same sensor.

Rain detection is performed using an analog rain sensor. The conductivity of the sensor changes when water droplets are present, allowing the ESP32-S3 to determine whether rain is detected.

Ambient light conditions are monitored using an LDR sensor module. Changes in resistance caused by varying light intensity make it possible to distinguish between daytime and nighttime environments.

Processing Sensor Data

The ESP32-S3 integrated inside the smart display acts as the processing unit of the system.

Its responsibilities include:

  • Reading BME280 measurements.

  • Acquiring analog values from the rain sensor and LDR module.

  • Calculating altitude from atmospheric pressure.

  • Detecting rainfall conditions.

  • Determining day and night status.

  • Updating the graphical interface.


By processing sensor readings in real time, the system provides continuously refreshed weather information.

Displaying Weather Information

A graphical dashboard makes environmental data easier to interpret.

Instead of displaying plain text values, the system uses icons and labels to organize information in a more intuitive way. Temperature, humidity, pressure, altitude, rain status, and light conditions are continuously updated on the screen.

Using LVGL for the User Interface

The display interface is built using LVGL (Light and Versatile Graphics Library), one of the most popular graphics frameworks for embedded systems.

LVGL provides components such as:

  • Labels

  • Icons

  • Images

  • Buttons

  • Animations


These components make it possible to create visually appealing dashboards even on resource-constrained microcontrollers.

Building the Weather Monitoring System

After understanding the operating principle, the next step is connecting the sensors to the ESP32-S3 Smart Display.

Software Requirements

The firmware is developed using Visual Studio Code and ESP-IDF.

Additional libraries used in the project include:

  • Bosch BME280 library

  • LVGL v8

  • Display support libraries

Circuit Connections


The BME280 sensor communicates through the I2C interface. Its SDA and SCL lines are connected to GPIO9 and GPIO10 respectively.

The rain sensor uses an analog output connected to GPIO7.

The LDR module is connected to GPIO6 and is used for ambient light detection.

All sensors operate from the 3.3 V supply provided by the ESP32-S3 Smart Display and share a common ground connection.

Software Overview

The application follows a modular structure.

main.cpp

This file initializes the display, configures LVGL, creates dashboard elements, and updates sensor values continuously.

sensors.c

This module performs sensor acquisition and environmental condition detection. It provides processed data to the graphical user interface.

Separating sensor management from display logic improves maintainability and makes the project easier to extend.

Applications

The same architecture can be adapted for:

  • Smart home systems

  • Greenhouse monitoring

  • Data logging

  • Industrial dashboards

  • IoT weather stations

  • Environmental monitoring projects

Conclusion

Combining the ESP32-S3 Smart Display with environmental sensors and LVGL makes it possible to build a compact and interactive weather station. Besides monitoring environmental conditions, the project provides practical experience with ESP-IDF, sensor interfacing, and embedded GUI development.

The complete implementation, including source code, ESP-IDF setup, firmware flashing procedure, and detailed circuit explanations on Play with Circuit.

https://playwithcircuit.com/how-to-build-a-weather-monitoring-system-using-esp32-s3-smart-display-and-lvgl/

Code

Code

Credits

Leave your feedback...