Wiznet makers

matthew

Published April 15, 2026 ©

169 UCC

9 WCC

46 VAR

0 Contests

1 Followers

1 Following

Original Link

xugongke Solar energy

An STM32 and W5500 Ethernet controller for solar DC bus monitoring, distributed water-heater control, MPPT load management, and energy data logging.

COMPONENTS
PROJECT DESCRIPTION

Solar Energy Controller — STM32 Solar Water-Heating and Energy Management System with W5500 Ethernet

URL Link

GitHub Repository:
https://github.com/xugongke/-

Recommended Components

  • WIZnet W5500
  • STM32F4 Series MCU
  • FreeRTOS
  • LVGL
  • FATFS / SD Card
  • A7680C Cellular Module
  • MQTT
  • ES1642 Carrier Communication Module
  • RS485 / USART
  • RX8025T RTC
  • ADC
  • Solar DC Bus Voltage Sensing
  • MPPT
  • Resistive Water Heater Loads
  • LCD / Local HMI
  • Keypad Input

PROJECT DESCRIPTION

📌 Overview

The Solar_energy project in the xugongke/- repository is an STM32-based solar water-heating and energy management controller.

Rather than being a typical solar inverter project, this firmware appears to focus on managing how power from a solar DC bus is distributed to multiple water heaters or resistive heating loads. The project includes solar DC bus voltage sensing, an MPPT state machine, heater load control, distributed device discovery and binding, per-user energy data storage, a local LVGL display, W5500 Ethernet-based TCP communication, and A7680C cellular networking.

The project structure suggests a field-oriented STM32Cube / FreeRTOS system rather than a simple sensor demo. It is designed to manage multiple remote water-heating devices and track each device’s temperature, input voltage, heating state, communication fault, relay fault, temperature fault, and power-reverse condition.

In simple terms, this project is a W5500 Ethernet-based energy controller for using solar power directly with water-heating loads and managing energy usage by user, room, or device.


📌 Project / Author Context

This repository is published by the GitHub user xugongke. The repository name is simply -, and no clear commercial product description or top-level README was found.

However, the code structure is quite specific. Inside the Solar_energy folder, the project includes STM32Cube project files, FreeRTOS task configuration, LVGL UI, W5500 ioLibrary, A7680C cellular module code, ES1642 communication module logic, MPPT module, device manager, user data manager, SD card storage, and battery / solar voltage monitoring.

Therefore, for the WIZnet Maker Site, it is more natural to introduce this as an advanced STM32/W5500 firmware example for a complex solar energy management system, rather than as a commercial product.


📌 What is a Solar Energy Water-Heating Controller?

A solar energy water-heating controller manages how solar-generated DC power is delivered to water heaters, heating tubes, or other resistive loads.

In a typical photovoltaic system, DC power from solar panels is often sent to an inverter or stored in a battery. This project takes a different approach. It monitors the solar DC bus voltage and decides how many heater loads should be turned on.

This type of system also needs detailed energy accounting. It should know which user or room is connected to which water-heating device, whether that device is currently heating, what its temperature and voltage are, and how much energy it has used.

This project supports those requirements through device discovery, device binding, device status polling, heater control, energy calculation, per-user data storage, local UI display, and network communication.


📌 What This Project Does

This project centrally manages multiple devices in a solar-powered water-heating system.

Main functions include:

  • Solar DC bus voltage sensing
  • Battery voltage and battery percentage estimation
  • Discovery of distributed water-heating or heater-load devices
  • Device MAC address and communication address management
  • User address generation based on building / unit / room number
  • Reading each device’s temperature, input voltage, heating state, and error state
  • Turning each device’s heater on or off
  • MPPT-style load count adjustment
  • Per-user daily, monthly, annual, and total energy data storage
  • Recent 7-day energy history management
  • W5500 Ethernet-based communication with a host PC or management server
  • A7680C cellular module-based MQTT / HTTP / positioning / weather functions
  • LVGL-based local display
  • SD card-based device list and user data storage

The central idea of the project is how to use available solar energy efficiently with water-heater loads. The MPPT module estimates power from the DC bus voltage and the number of active heaters, then increases or decreases the number of active heating loads using a perturb-and-observe approach.


📌 What is Discrete-Load MPPT?

MPPT stands for Maximum Power Point Tracking. It is a control method used to find the operating point where a solar panel can produce the most power.

Typical MPPT systems adjust the duty cycle of a DC-DC converter continuously. This project uses a different approach. Based on the code comments, it implements a discrete-load MPPT method by increasing or decreasing the number of resistive heating loads.

Instead of continuously adjusting a power converter, the controller chooses how many water-heater heating elements should be turned on. It estimates power using DC bus voltage and the number of active heaters, then uses a perturb-and-observe method to decide the next direction.

This approach can simplify the hardware. It can estimate power without a dedicated current sensor and can search for a better operating point by changing the number of connected loads.


📌 Device Management and User Data

The project is designed to manage many remote devices.

The device management structure includes:

  • MAC address
  • Communication address
  • Temperature
  • Input voltage
  • DC heating state
  • Communication error state
  • Relay error state
  • Temperature error state
  • Power-reverse state

Device addresses are linked to building, unit, and room numbers. This allows the system to manage heaters or heating devices by user or location.

User data is stored on the SD card under the USER directory. File names are generated based on building, unit, and room number. Each user data file stores current temperature, current power, daily energy, monthly energy, annual energy, total energy, recent 7-day energy usage, creation time, and update time.

This means the project is not only turning heaters on and off. It also considers per-user energy accounting and long-term usage records.


📌 Local Display and UI

The project includes an LVGL-based local UI.

The firmware creates an LVGL task and initializes the display, input devices, file system port, user screens, event handlers, and custom UI logic. It also updates time display and screen information through FreeRTOS tasks.

A local screen is useful for field operation and maintenance. A system operator can check device status, user data, network information, battery level, signal strength, time, and weather information directly from the controller.

This makes the project a system with both remote communication and a local HMI for on-site monitoring and configuration.


📌 Role and Application of the WIZnet Chip

Related WIZnet product: W5500

In this project, the W5500 is the main Ethernet interface that connects the STM32 controller to a wired local network.

The code defines W5500 CS, reset, and interrupt pins, and includes W5500 ioLibrary components such as wizchip_conf, socket.h, DHCP, and TCP socket code. The W5500 task initializes the WIZnet chip, configures network information, and connects as a TCP client to a host PC or server.

The W5500 is used for:

  • TCP connection to a host PC or management server
  • Device list transmission
  • Device binding command handling
  • Start / stop device search commands
  • Real-time transmission of search results
  • TCP server IP / port configuration save and load
  • Local maintenance communication over wired Ethernet

The project also includes an A7680C cellular module, but the W5500 provides a fast and stable LAN-side communication path for local setup, maintenance, and host-server integration.


📌 Cellular, MQTT, and Weather Data

The project also includes A7680C cellular module support.

The A7680C network manager handles network initialization, SIM status checks, cellular attachment checks, location-based service access, HTTP, and MQTT connection management. The MQTT configuration includes broker.emqx.io and a client ID, and the project includes a structure for publishing device status to topics such as solar/status/building_unit_room.

The Weather task can also use the cellular module to obtain location information and then fetch weather data.

This means the project combines W5500 Ethernet for local wired management communication and cellular networking for external communication, MQTT, HTTP, positioning, and weather data features.


📌 Features

  • W5500 Ethernet TCP client
    The controller connects to a host PC or management server over TCP using W5500 Ethernet, handling device lists, binding commands, and search commands.
  • Device search and binding
    Through the ES1642 communication module, the controller can search for remote devices and bind MAC addresses to building / unit / room-based addresses.
  • Distributed water-heater management
    The system registers multiple water heaters or resistive heating devices and manages their temperature, input voltage, heating status, and error state.
  • Discrete-load MPPT
    The MPPT logic estimates power from DC bus voltage and active heater count, then adjusts the number of heating loads using a perturb-and-observe method.
  • Energy accounting
    The controller calculates energy usage from each device’s voltage and heating time, then stores daily, monthly, annual, and total energy data.
  • User data storage
    User data files are stored on the SD card based on building, unit, and room number.
  • LVGL local interface
    The project provides an LCD-based local UI for on-site monitoring and operation.
  • A7680C cellular networking
    The project includes cellular networking features such as HTTP, MQTT, positioning, and weather data.
  • Battery and solar voltage monitoring
    ADC is used to monitor battery voltage and solar DC bus voltage, and the data can be reflected in the UI.
  • FreeRTOS task architecture
    LVGL, A7680C, W5500, ES1642, RTC, Weather, RS485, and Device Polling are separated into dedicated FreeRTOS tasks.

📌 System Architecture

The project can be understood through six layers: power sensing layer, distributed device layer, local control layer, network layer, data storage layer, and UI layer.

In the power sensing layer, STM32 ADC measures battery voltage and solar DC bus voltage.

In the distributed device layer, the ES1642 communication module talks to remote water-heating or heating-load devices. Each device has a MAC address and communication address, and the central controller uses these to search, bind, read status, and control heating.

In the local control layer, the MPPT module and device manager adjust the number of active heating loads based on device states and bus voltage.

In the network layer, W5500 Ethernet provides TCP communication with a host PC or local management server. The A7680C cellular module handles MQTT, HTTP, positioning, and weather data.

In the data storage layer, SD card and FATFS store device lists, TCP configuration, and per-user energy data files.

In the UI layer, LVGL provides a local LCD-based HMI for checking and controlling the system on-site.


📌 Usage, Market, and Application Value

This project is suitable for systems that use solar power directly with water heaters or resistive heating loads.

Possible applications include:

  • Solar water-heating management systems
  • Dormitory, apartment, or multi-room hot-water energy management
  • Distributed electric water-heater control
  • Solar DC bus-based resistive load control
  • Per-user energy accounting
  • Remote device discovery and binding systems
  • Energy controllers with local LCD HMI
  • SD card-based local energy data storage
  • Field devices that need both Ethernet and cellular communication
  • MPPT education and experimentation with distributed heater loads

From a market perspective, this project looks more like an advanced embedded control system than a finished consumer product.

For the WIZnet Maker Site, it can be introduced as a W5500 Ethernet-based local management communication example inside a complex solar energy management system.


📌 Additional Insight for W5500 Makers

This project is interesting for W5500 makers because W5500 is not just used as a simple web server interface. It is used as a real device-management communication channel.

Notable points include:

  • W5500 ioLibrary-based TCP client implementation
  • TCP frame parser with CRC16 validation
  • Device list transmission to a host PC or management server
  • Real-time device search result push
  • Device binding command processing
  • TCP server IP and port configuration stored on TF/SD card
  • DHCP or static network configuration handling
  • W5500 communication separated into a FreeRTOS task

This project shows W5500 being used as a local Ethernet interface for field device management and maintenance communication, rather than only as an Internet connectivity module.


📌 Things to Know Before Building

This is a large STM32Cube-based firmware project. It is not a simple Arduino-style example. It combines STM32F4, FreeRTOS, LVGL, SDIO/FATFS, W5500, A7680C, ES1642, RS485, ADC, and RTC.

Before building, users should check:

  • STM32F4 development environment and CubeMX / Keil project setup
  • W5500 CS / INT / RST pin wiring
  • SPI bus and W5500 ioLibrary settings
  • ES1642 module and remote slave device configuration
  • A7680C cellular module and SIM card
  • SD card and FATFS operation
  • LVGL display, keypad, and external SRAM/FMC configuration
  • RX8025T RTC operation
  • Solar DC bus voltage sensing circuit
  • Voltage, current, insulation, and safety design for water-heater loads
  • Device address scheme and user data file structure
  • Whether MPPT task, MQTT publishing, and other optional functions are enabled in the build

Because the project deals with a solar DC bus and water-heater loads, any real hardware deployment should carefully consider high-voltage DC, relay isolation, grounding, over-voltage protection, and fire safety.


📌 Summary

The Solar_energy project in xugongke/- is an STM32-based solar water-heating and energy management controller. It combines W5500 Ethernet, A7680C cellular networking, ES1642 communication, LVGL, FreeRTOS, SD card, FATFS, MPPT logic, device management, and user data management in one system.

From a WIZnet perspective, the key point is that W5500 handles TCP communication with a host PC or management server. It is used for device list transmission, device binding, start/stop search commands, real-time search result push, and TCP configuration storage.

This project can be introduced on the WIZnet Maker Site as an advanced STM32 embedded project combining solar energy, distributed water-heater control, per-user energy records, and W5500 Ethernet-based field management communication.


📌 Similar Existing WIZnet Maker Site Content

It is difficult to find an existing WIZnet Maker Site post that exactly matches this project as a “solar DC bus / distributed water-heater energy management system.” However, the following existing contents can be connected from the perspectives of temperature-based control, Ethernet monitoring, relay automation, sensor threshold handling, and energy/facility management.


1. WizOnOff

URL Link:
https://maker.wiznet.io/nk_maker/contest/wizonoff/

Why it is similar:
WizOnOff is introduced as a standalone automation controller with relays and a DS18B20 temperature sensor. It is similar to the Solar_energy project because both systems use sensor data to control external loads.

The Solar_energy project also manages heating loads based on measured values such as solar DC bus voltage, device temperature, and heater state. Both projects share the concept of sensor-driven load control, where the embedded controller reads field conditions and then decides whether external devices should be turned on or off.

Difference:
WizOnOff is closer to a general-purpose relay automation controller. It is suitable for simple automation, sensor testing, and IoT relay control.

The Solar_energy project is much larger and more application-specific. It is designed around solar energy, distributed water-heater loads, MPPT-style load adjustment, device discovery, user binding, per-user energy accounting, local UI, SD card storage, W5500 Ethernet, and cellular networking. It expands simple relay automation into a multi-device solar energy management system.


2. Programmable IoT Edge ESP32 Ethernet IO Module

URL Link:
https://maker.wiznet.io/matthew/resellers/programmable-iot-edge-esp32-ethernet-io-module/

Why it is similar:
This content introduces an ESP32-based Ethernet I/O module for remote monitoring, secure I/O control, MODBUS TCP, MQTT, Ethernet, Wi-Fi, Bluetooth, utilities and energy monitoring, environmental monitoring, alarm applications, and automated task applications.

The Solar_energy project is also a network-connected monitoring and control system. It collects field data, manages remote devices, stores energy records, and communicates with a host PC or management server through W5500 Ethernet.

Both contents are similar in that they treat Ethernet not just as an Internet connection, but as a reliable control and monitoring interface for field equipment.

Difference:
The Programmable IoT Edge ESP32 Ethernet IO Module is a broad I/O product for general industrial or facility use cases.

The Solar_energy project is not a generic I/O module. It is an application-specific STM32 system that combines MPPT logic, solar DC bus measurement, distributed water-heater control, ES1642 device networking, A7680C cellular communication, LVGL local HMI, and SD card-based energy records. It expands the Ethernet I/O concept into a complete solar water-heating energy management controller.


3. Alert System Using W5100S-EVB-Pico & AWS SNS

URL Link:
https://maker.wiznet.io/gemma/projects/alert-system-using-w5100s-evb-pico-aws-sns/

Why it is similar:
This project sends alerts through AWS IoT Core and AWS SNS when a sensor value exceeds a configured threshold. It is similar because both projects use sensor or system state changes to trigger network-connected actions.

The Solar_energy project also monitors device status, error flags, input voltage, temperature, DC heating state, communication faults, relay faults, and power-reverse conditions. These status values can trigger actions such as device polling, alarm scanning, energy calculation, or host communication.

Difference:
The AWS SNS Alert System is mainly a cloud notification example. It focuses on sending an alert when a threshold is crossed.

The Solar_energy project goes further into local field control and long-term energy management. Instead of only notifying the user, it manages distributed devices, binds them to user addresses, controls heating loads, calculates energy usage, stores data to SD card, and communicates with both a local TCP host and cellular network services. It expands from threshold alerting to device control, energy accounting, and solar load management.


📌 Difference and Expansion Value

The biggest differentiator of the Solar_energy project is that it is not just a sensor demo, relay controller, or alert example. It is a complex STM32-based solar energy management system that combines local control, distributed device management, W5500 Ethernet, cellular networking, MPPT-style load control, local HMI, and SD card-based energy records.

Compared with the existing related Maker Site content, the connection can be summarized as follows:

  • WizOnOff is similar from the perspective of sensor-driven relay automation.
  • Programmable IoT Edge ESP32 Ethernet IO Module is similar from the perspective of Ethernet-based field monitoring and control.
  • Alert System Using W5100S-EVB-Pico & AWS SNS is similar from the perspective of threshold-based event handling.
  • Solar_energy expands these ideas into solar DC bus monitoring, distributed water-heater management, user-level energy accounting, and host-side TCP communication.

This project provides the following expansion value.

First, it can be introduced as an example of WIZnet Ethernet being used in a renewable energy management system.
Many Maker Site contents focus on sensors, smart home automation, cloud alerts, or I/O modules. This project extends the scope into solar energy, water-heating loads, MPPT-style control, and local energy management.

Second, it expands relay automation into distributed load management.
Instead of controlling only one or a few relays, the project is designed to manage multiple remote heating devices. Each device has a MAC address, communication address, temperature, input voltage, heating state, and error flags.

Third, it adds per-user energy accounting.
The project stores user data based on building, unit, and room number. It records daily, monthly, annual, total, and recent 7-day energy usage. This makes it closer to a small energy management platform than a simple controller.

Fourth, it shows W5500 as a field management communication interface.
The W5500 is used for TCP communication with a host PC or management server. It supports device list transmission, binding commands, device search commands, search-result push, and TCP server configuration storage. This is a stronger use case than a basic web server example.

Fifth, it connects local Ethernet and cellular networking in one energy controller.
W5500 Ethernet supports local host communication and maintenance, while the A7680C cellular module supports MQTT, HTTP, positioning, and weather data. This gives the project a richer communication architecture than many single-network examples.

Sixth, it expands Maker Site coverage into STM32 + FreeRTOS + LVGL + W5500 ioLibrary.
Many maker projects are Arduino or ESP32 focused. This project provides an example of W5500 being used in a larger STM32Cube ecosystem with FreeRTOS tasks, LVGL local UI, FATFS/SD card storage, and a structured TCP protocol.

Seventh, it can support new Maker Site keywords and discovery categories, such as:

Solar energy controller

  • Solar water heating
  • Distributed water heater
  • MPPT load control
  • W5500 TCP client
  • STM32 FreeRTOS
  • LVGL HMI
  • SD card energy logging
  • Cellular + Ethernet field equipment
  • Per-user energy accounting

In conclusion, when connected with existing Maker Site content, the Solar_energy project becomes a strong expansion case that links sensor-based relay automation → Ethernet field monitoring → threshold event handling → solar energy and distributed water-heater management.

 

📌 FAQ

Q1. What is this project?
It is an STM32-based solar water-heating and energy management controller. It includes solar DC bus monitoring, distributed water-heater management, MPPT load control, per-user energy records, and W5500 Ethernet communication.

Q2. Is it a typical solar inverter project?
No. It is closer to an energy management system that distributes solar DC power to water heaters or resistive heating loads.

Q3. Which WIZnet chip is used?
The project uses W5500. The code includes W5500 ioLibrary, wizchip_conf, socket.h, DHCP, TCP client, and a W5500 FreeRTOS task.

Q4. What does the W5500 do?
It connects to a host PC or management server over TCP and handles local management communication such as device list transmission, device binding, device search, search result push, and TCP setting storage.

Q5. What MCU does the project use?
The project is structured as an STM32F4 STM32Cube project using FreeRTOS, LVGL, FATFS, SDIO, SPI, USART, ADC, and FMC.

Q6. What is the ES1642 module used for?
The ES1642 module is used to communicate with remote slave devices. It supports device search, data transmission, response waiting, PSK setting, and network-join result handling.

Q7. What is the A7680C used for?
The A7680C module handles cellular networking, including MQTT, HTTP, location-based information, and weather data.

Q8. What data is stored?
The SD card stores device lists, TCP settings, and per-user data such as water-heater temperature, current power, daily/monthly/annual/total energy usage, and recent 7-day usage.

Q9. Why is this meaningful for the WIZnet Maker Site?
Because W5500 Ethernet is used not as a simple demo, but as the field management communication path inside a complex solar energy management system.

Documents
Comments Write