---
title: "ESP32-S3 Smart Display Portal with W5500 Ethernet and WS2812 LED Control"
url: "https://maker.wiznet.io/Benjamin/projects/esp32-s3-smart-display-portal-with-w5500-ethernet-and-ws2812-led-control/"
markdown_url: "https://maker.wiznet.io/Benjamin/projects/esp32-s3-smart-display-portal-with-w5500-ethernet-and-ws2812-led-control/md"
type: "UCC: User Created Content"
author: "wojtron2"
author_url: "https://github.com/wojtron2/ESP32-S3-ETH-Display-Portal-WFL"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "wojtron2"
original_url: "https://github.com/wojtron2/ESP32-S3-ETH-Display-Portal-WFL"
published: "2025-09-23"
language: "en"
tags: ["W5500", "ESP32", "WS2812"]
hardware: ["WIZnet W5500", "Espressif ESP32", "DFRobot WS2812B LED Strip"]
likes: 0
views: 4708
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# ESP32-S3 Smart Display Portal with W5500 Ethernet and WS2812 LED Control

> A comprehensive IoT display portal combining ESP32-S3 with W5500 hardware TCP/IP for stable ethernet connectivity, 4" TFT display, and addressable LED control

Original author: wojtron2 (source: https://github.com/wojtron2/ESP32-S3-ETH-Display-Portal-WFL)

## Components

- **WIZnet W5500** x 1 ([docs](https://docs.wiznet.io/Product/Chip/Ethernet/W5500))
- **Espressif ESP32** x 1 ([docs](https://www.espressif.com/en/products/socs/esp32))
- **DFRobot WS2812B LED Strip** x 1

WIZnet parts: W5500 ([Datasheet](https://docs.wiznet.io/Product/Chip/Ethernet/W5500/datasheet?utm_source=maker&utm_medium=project&utm_campaign=w5500), [product hub](https://maker.wiznet.io/products/w5500/))

## Article

## Introduction

This project builds a wired display and LED control portal using an ESP32-S3 microcontroller, a WIZnet W5500 Ethernet Controller, a 4″ ST7796 SPI TFT display, and WS2812 LED strips. It favors wired reliability and low latency over Wi-Fi, making it ideal for dashboards, visual controllers, or industrial indicators. Planned extensions include HTTP/REST APIs, PC applications, and smart home integration.

![](https://maker.wiznet.io/upload/ckeditor5/233275110%5F1758637845%2Epng)

---

## WIZnet Product Integration

The WIZnet W5500 is connected to the ESP32-S3 via SPI and handles Ethernet communications through its hardware TCP/IP stack. With support for multiple sockets, large internal buffers, and low-latency operation, the W5500 enables deterministic and reliable networking without burdening the MCU.

The intended data path is:
**ESP32-S3 MCU → SPI → W5500 → Wired LAN → HTTP/REST clients or servers**.

---

## Technical Implementation

### Hardware

**SPI Bus Allocation**: The W5500 and TFT display both use SPI, requiring chip-select management. When using WS2812 LEDs, the `led_strip` RMT backend is recommended to avoid bus conflicts.

**Critical Signals**:

- W5500: MOSI, MISO, SCLK, CS, optional INT/RST, 3.3 V logic.

- ST7796 TFT: SCK, MOSI, CS, DC, RST, BL.

- WS2812: Data line (5 V logic recommended), 5 V power, common ground.

**Power**: High-current LED strips need a separate 5 V power rail with a large electrolytic capacitor near the strip to stabilize voltage.

### Software

- **LED Control**: Uses the `led_strip` component. The RMT backend is preferred for precision and independence from SPI devices.

- **Display**: The ST7796 TFT can be driven via an ESP-IDF-compatible driver or with GUI libraries such as LVGL for advanced UIs.

- **Networking (Planned)**: Configuration of the W5500 for DHCP/static IP, automatic reconnection, and an HTTP/REST API service for remote control.

### Reproduction Steps

- Clone the repository and set the target: `idf.py set-target esp32s3`.

- Install required components via the ESP-IDF Component Manager.

- Configure LED pin and LED count in project settings.

- Build, flash, and monitor with `idf.py build flash monitor`.

- Connect LEDs to a proper 5 V power supply.

**Block Diagram**

- ESP32-S3 → SPI → TFT Display

- ESP32-S3 → SPI → WIZnet W5500 → LAN

- ESP32-S3 → RMT → WS2812 LEDs

---

## Core Features and Performance

### Implemented

- ESP-IDF scaffolding for ESP32-S3.

- WS2812 LED control with presets and button interaction.

### Planned

- W5500 Ethernet support.

- HTTP/REST API endpoints.

- Multi-strip LED control.

- Display configuration and UI rendering.

- PC application and Home Assistant integration.

### Performance (future measurement plan)

- LED frame rates vs. LED count and brightness.

- Ethernet latency and reconnect time.

- TFT refresh rate with partial and full updates.

---

## Code Analysis

> The repository includes a minimal LED pipeline based on the `led_strip` component. The get-started **blink** example shows the core loop—initialize the strip, set a pixel color, and refresh—providing a clean baseline for later features (Ethernet control, REST API, and TFT UI). This snippet captures the essential update flow we build upon.

```c
// path: test_examples/get-started/blink/main/blink_example.c
// func: app_main | purpose: init LED strip and blink one pixel
void app_main(void) {
    led_strip_handle_t strip;
    led_strip_config_t cfg = {
        .strip_gpio_num = CONFIG_BLINK_GPIO,
        .max_leds       = 1,
    };
    led_strip_rmt_config_t rmt = {
        .clk_src = RMT_CLK_SRC_DEFAULT,
        .resolution_hz = 10 * 1000 * 1000
    };
    led_strip_new_rmt_device(&cfg, &rmt, &strip);

    while (true) {
        led_strip_set_pixel(strip, 0, 16, 16, 16);   // dim white
        led_strip_refresh(strip);
        vTaskDelay(pdMS_TO_TICKS(500));
        led_strip_clear(strip);
        led_strip_refresh(strip);
        vTaskDelay(pdMS_TO_TICKS(500));
    }
}
```

---

## Applications and Use Cases

- **Home Dashboard**: Ethernet-connected control panel with LED status indicators.

- **Event Visuals**: Real-time LED animations for shows and interactive installations.

- **Industrial Indicators**: Low-latency wired display with LED alarms.

- **PC Companion**: Desktop application controlling presets over Ethernet.

- **Smart Home Integration**: Planned HTTP/REST hooks for Home Assistant.

- **Extension Ideas**
  - Add LVGL-based GUI with efficient SPI updates.
  - Implement robust DHCP/static IP fallback and reconnection.
  - Add OTA update capability over Ethernet.
  - Harden security with token authentication and HTTPS gateways.

---

## Safety Notes

- High current demand from LED strips requires careful power design.

- Always use a common ground between MCU and LED supply.

- Avoid SPI conflicts by using RMT for WS2812 instead of SPI backend.

---

## Conclusion

- This project demonstrates how WIZnet W5500 can add reliable wired networking to an ESP32-S3-based LED and display portal. With the LED control loop working and Ethernet plus HTTP/REST planned, it offers makers a strong foundation for stable dashboards, installations, and automation hubs.

- **Call to action**: Clone the repository, assemble the hardware, and contribute to expanding Ethernet and HTTP functionality for a fully networked portal.

---

Source: https://maker.wiznet.io/Benjamin/projects/esp32-s3-smart-display-portal-with-w5500-ethernet-and-ws2812-led-control/
