HMI Panel for Siemens S7-1200 using USM01 (STM32) + WIZnet W5500
A compact, low-cost HMI panel for Siemens S7-1200, built using an STM32-based USM01 board and a WIZnet W5500 for stable Ethernet communication.
Introduction
Let’s start with what this project is about.
The creator built a simple but fully functional HMI panel for the Siemens S7-1200 PLC using a custom STM32 board named USM01, and he added a W5500 to handle Ethernet communication.
So instead of using a commercial touch HMI, this setup lets you monitor values, change parameters, and trigger actions directly from a small LCD and three buttons.
It’s small, reliable, and industrial-friendly.
WIZnet Product Integration
Now let’s look at how the WIZnet device fits in.
The W5500 is used as the main Ethernet engine, and it communicates with the STM32 via SPI.
Because it offloads TCP/IP completely, the MCU only needs to manage simple socket operations.
This design leaves plenty of CPU resources available for FreeRTOS tasks, input handling, and LCD updates—perfect for small industrial modules like this.
Here’s the basic data flow:
In short: the STM32 handles UI + control logic, while the W5500 delivers stable, industry-grade Ethernet communication.
Technical Implementation
Let’s walk through the hardware first.
USM01 (STM32F103C8T6) as the main controller
WIZnet W5500 for Ethernet
HD44780 LCD for displaying values
Three push buttons for parameter control
S7-1200 PLC as the target controller
On the software side, the firmware is written in C++11 and runs on FreeRTOS, splitting responsibilities into multiple tasks:
Button handling
LCD updates
W5500 socket communication
Logic/PLC control loop
The system reads user-defined values, sends them to the S7-1200 over Ethernet, and receives status updates back from the PLC.
Reproduction Guide
Here’s how you would recreate it:
First, assemble the USM01 board and connect the W5500 through SPI.
Then, wire up the HD44780 LCD and the three push buttons.
Install FreeRTOS and set up your C++11 toolchain.
Create a periodic communication task that uses the W5500 socket API to talk to the S7-1200.
Finally, map PLC memory addresses (IO or DB blocks) and test reading/writing values.
With that, you get a compact HMI panel ready for real industrial use.
Core Features and Performance
Here’s what this little device can do:
Live display of PLC parameters on the LCD
Setpoint adjustment using three buttons
Reliable Ethernet communication handled by the W5500
FreeRTOS-based multitasking for stable execution
Compact industrial form factor (mountable next to the PLC)
Despite being simple, the system reacts quickly, updates values cleanly, and can run continuously with low CPU overhead.
Code Snippet
Here’s the core logic for sending data to the PLC (simplified):
This task runs inside FreeRTOS, formats the data, and sends it out over the W5500 socket.
Applications and Extensions
Let’s talk about where this can go.
A low-cost HMI panel for small industrial machines
Portable maintenance panels for Siemens PLCs
Parameter setup tools for on-site technicians
Monitoring modules for sensors, drives, or conveyors
(Planned) Support for S7-1500, Modbus-TCP, or W6100/W6300 migration
You can build many industrial mini-interfaces using this architecture.
Conclusion
To wrap up, this project demonstrates how a compact STM32 board combined with the WIZnet W5500 can form a practical, low-cost, and reliable HMI panel for Siemens PLCs.
It’s simple, robust, and ready for real-world industrial tasks.
👉 Try building your own industrial micro-HMI using WIZnet Ethernet solutions.
