Weather monitoring projects are an excellent way to explore sensor interfacing and embedded graphics. In this project, I combined an ESP32-S3 Smart Display with several sensors to build a compact weather station capable of displaying environmental information in real time.
The system measures temperature, humidity, atmospheric pressure, altitude, rainfall conditions, and ambient light levels. A graphical dashboard designed with LVGL makes the readings easier to understand and gives the project a modern appearance.
Understanding the Working Principle
The weather station relies on multiple sensors to observe environmental conditions continuously. The measurements are processed by the ESP32-S3 and presented on the TFT display through a graphical interface.
Instead of simply sending values to the serial monitor, the project transforms the collected information into a visual dashboard that updates automatically.
Measuring Temperature, Humidity, and Pressure
A BME280 environmental sensor is used to monitor three important weather parameters:
Temperature
Relative humidity
Atmospheric pressure
Because atmospheric pressure varies with elevation, the same sensor can also be used to estimate altitude.
Communication with the ESP32-S3 takes place through the I2C interface, allowing the controller to acquire calibrated digital measurements with only two signal lines.
Detecting Rainfall
To detect rainfall, the project uses a rain sensor module.
When water droplets land on the sensing plate, the conductivity between the conductive tracks changes. These changes produce variations in output voltage that are measured by the ESP32-S3 through an ADC channel.
By analyzing the voltage level, the controller determines whether rain is present or the sensor surface remains dry.
Day and Night Detection
An LDR module is responsible for monitoring ambient light intensity.
The resistance of the photoresistor changes according to the amount of light falling on its surface. Under bright conditions, the resistance decreases, while darkness causes it to increase.
These resistance variations are converted into analog voltages that enable the ESP32-S3 to distinguish between day and night conditions.
Processing the Sensor Measurements
The ESP32-S3 serves as the central processing unit of the weather station.
Its tasks include:
Reading BME280 measurements
Acquiring analog values from the rain sensor.
Measuring ambient light intensity.
Calculating altitude from pressure data.
Detecting rainfall conditions.
Determining day and night status.
Updating the display.
Because sensor values are refreshed continuously, the dashboard always shows current environmental conditions.
Graphical Interface with LVGL
A major advantage of this project is the graphical user interface built using LVGL.
Instead of displaying raw numbers, the dashboard uses icons and labels to organize weather information into an intuitive layout.
The screen shows:
Temperature
Humidity
Pressure
Altitude
Rain status
Day/night indication
This approach makes the weather station easier to use and gives it the appearance of a commercial device.
Hardware Setup
The hardware consists of:
ESP32-S3 Smart Display
BME280 Sensor
Rain Sensor
LDR Module
Breadboard
Jumper Wires
Since the smart display integrates both the controller and display, the circuit remains simple and compact.
Sensor Connections

The BME280 communicates with the ESP32-S3 using I2C.
Connections:
VCC → 3.3 V
GND → GND
SDA → GPIO9
SCL → GPIO10
The rain sensor is connected through its analog output:
VCC → 3.3 V
GND → GND
AO → GPIO7
The LDR module is connected to another ADC channel:
VCC → 3.3 V
GND → GND
AO → GPIO6
All sensors operate from the same 3.3 V supply and share a common ground connection.
Software Structure
The firmware follows a modular approach.
main.cpp
This file initializes the display, configures LVGL, and continuously updates the weather dashboard.
sensors.c
This module handles sensor communication and measurement processing. It provides environmental data to the graphical interface and keeps the application organized.
Separating sensing routines from display management improves readability and makes the project easier to extend.
Output

Applications
The same design can be adapted for:
Smart home systems
Greenhouse monitoring
IoT weather stations
Environmental data logging
Educational projects
Industrial dashboards
Final Thoughts
Combining the ESP32-S3 Smart Display with environmental sensors and LVGL creates a compact platform capable of visualizing weather information in real time.
Besides providing useful measurements, the project is also a great introduction to sensor interfacing, embedded graphics, and GUI development with LVGL.
The complete implementation, including source code, ESP-IDF setup, firmware flashing procedure, and detailed explanations, is available on Play with Circuit.









