This project was developed as a Microprocessors course final project. It is an advanced embedded system application that monitors temperature and humidity data, visualizes them on a graphical HMI screen, indicates system status through an RGB LED ring, and transfers data to external systems via UART.
The system is built around the STM32F446ZE microcontroller, FT800 EVE graphics engine, DHT11 temperature-humidity sensor, WS2812 RGB LED ring, and KY-040 rotary encoder components.
The video below presents a general demonstration of the project, including FT800 EVE display and touch panel integration, system operation, menu and submenu navigation, rotary encoder control, and RGB ring LED system integration.
STM32F446ZE ADVANCED DATALOGGER AND HMI SYSTEM
The project was designed to monitor temperature and humidity data in industrial environments with high precision in real time, visualize them on an HMI screen, dynamically indicate system status through an RGB LED ring, and transfer collected data to external systems via UART.
User interaction is provided through the touch screen and KY-040 rotary encoder. The system presents measurement data both as real-time values and as historical data graphs.
| Component | Model / Type | Role in the System |
|---|---|---|
| Main Processor Board | STM32 Nucleo-F446ZE | ARM Cortex-M4 based main control unit. It manages sensor reading, data processing, display commands, timing, and LED control. |
| HMI Graphics Engine | FT800 EVE Board 4.3" | SPI-interface resistive touch display with 480x272 resolution and an integrated graphics engine. |
| Environmental Sensor | DHT11 | Measures temperature and relative humidity via a single-wire digital protocol. |
| Status Indicator | WS2812 5050 RGB Ring | Indicates normal operation, data transfer, and alarm states using colored LED feedback. |
| User Input | KY-040 Rotary Encoder | Used for menu navigation, parameter selection, and confirmation. |
| Component | Signal | STM32 Pin | Description |
|---|---|---|---|
| FT800 Display | SPI_MOSI | PA7 | SPI1 data output |
| SPI_MISO | PA6 | SPI1 data input | |
| SPI_SCK | PA5 | SPI clock line | |
| FT800_CS | PA4 | Active-low Chip Select control line | |
| FT800_PDN | PB2 | Power-down / hardware reset line | |
| DHT11 Sensor | DATA_LINE | PC0 | Input/output line requiring precise software timing |
| WS2812 LED Ring | DI | PB14 / PD1 | Dynamically timed single-wire LED control signal |
| PC Connection | TX / RX | PD5 / PD6 | USART2, debugging and data transfer, 115200 baud |
The software is built on the STM32 HAL architecture. A non-blocking timing approach is used in the main loop. Sensor data is read approximately every 2000 ms, while display refresh operations are performed approximately every 30 ms.
The FT800 EVE engine creates graphical objects using Display List commands. Buttons, indicators, dials, text, and graphical areas are sent by the STM32 to the FT800 command queue over SPI.
As a critical performance point, the REG_CMD_WRITE and REG_CMD_READ pointers are synchronized to prevent overflow of the FT800 internal SPI FIFO area.
The system is designed to support different data formats so that measured data can be transferred to host computer software or industrial systems:
A protective mechanical enclosure was designed in Fusion 360 to ensure stable operation under field conditions. The enclosure was modeled by considering the display, encoder, board placement, cabling, and ventilation requirements.