---
title: "(temp) Full-Stack Embedded System: ESP32-S3 W5500 Ethernet and Automatic Irrigation Control"
url: "https://maker.wiznet.io/josephsr/projects/temp-full-stack-embedded-system-esp32-s3-w5500-ethernet-and-automatic-irrigation-control/"
markdown_url: "https://maker.wiznet.io/josephsr/projects/temp-full-stack-embedded-system-esp32-s3-w5500-ethernet-and-automatic-irrigation-control/md"
type: "UCC: User Created Content"
author: "NhatTran-97"
author_url: "https://github.com/NhatTran-97/Full-Stack-Embedded-System"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "NhatTran-97"
original_url: "https://github.com/NhatTran-97/Full-Stack-Embedded-System"
published: "2026-07-04"
language: "ko"
likes: 0
views: 160
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# (temp) Full-Stack Embedded System: ESP32-S3 W5500 Ethernet and Automatic Irrigation Control

> 완성 제품보다 임베디드 IoT 학습·포트폴리오형 저장소

Original author: NhatTran-97 (source: https://github.com/NhatTran-97/Full-Stack-Embedded-System)

## Documents and links

- [Full-Stack-Embedded-System](https://github.com/NhatTran-97/Full-Stack-Embedded-System) (code)

## Article

## Project Overview

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

`Full-Stack-Embedded-System` is not a single integrated product. It is a compact embedded systems repository that combines two project paths: W5500 Ethernet examples for ESP32-based MCUs and an automatic irrigation system implemented as a submodule.

The `Ethernet_W5500` path explores how to connect MCUs with the W5500 Ethernet module for embedded systems and IoT applications. Its README lists ESP32 + W5500 examples for Arduino and ESP-IDF as completed, with STM32 + W5500 marked as planned.

The `Automatic_Irrigation_System` path is a 2022 automatic irrigation project developed for a national startup competition. Its README describes local keypad control, timer-based scheduling, remote mobile operation, and testing on the EIU campus before selection among the top 70 teams in the national finals.

---

## System Structure

```plaintext
[Ethernet_W5500]

PC / Python TCP Client
        ↓ TCP
Ethernet Network
        ↓
W5500 Ethernet Module
        ↓ SPI
ESP32-S3
        ↓
Arduino Ethernet Library
or ESP-IDF esp_eth + esp_netif + lwIP Socket
        ↓
TCP Echo Server
```

```plaintext
[Automatic_Irrigation_System]

Mobile App / Control Interface
        ↓ HTTP
PHP Backend
        ↓ Database
ESP32 Wi-Fi Gateway
        ↕ UART
STM8 Valve Controller
        ↓
Keypad / LCD / RTC / Motor / 8 Valve Outputs
```

The two project paths share an embedded IoT theme, but the repository does not show them as one merged W5500-based irrigation gateway.

---

## WIZnet Product Role

The WIZnet product used in this repository is the **W5500 Ethernet module**. It is used as an SPI-based Ethernet controller for ESP32 networking examples. The Arduino example defines W5500 reset, chip select, SCLK, MISO, and MOSI pins, initializes SPI, starts Ethernet, and opens a TCP server on port 5000.

The ESP-IDF implementation uses W5500 MAC/PHY creation, SPI bus setup, `esp_netif`, static IP configuration, and lwIP socket APIs. The TCP server is implemented through `socket`, `bind`, `listen`, `accept`, `recv`, and `send`.

| WIZnet Item | Role |
| --- | --- |
| W5500 Ethernet module | SPI-based Ethernet controller for ESP32-S3 |
| Interface | SPI |
| Network Function | Ethernet TCP server path |
| Software Layer | Arduino Ethernet library / ESP-IDF Ethernet + lwIP |
| TOE Assessment | Direct W5500 socket-register-level TOE control is not shown |

---

## Operation Flow

### W5500 Ethernet Flow

1. ESP32-S3 configures W5500-related GPIO and SPI pins.

2. Ethernet initialization is performed through Arduino Ethernet library or ESP-IDF Ethernet driver.

3. The board obtains or sets an IP address.

4. A TCP server listens on port 5000.

5. A PC-side client connects and exchanges TCP data.

6. The Python client validates the echo server behavior from the host side.

### Automatic Irrigation Flow

1. The STM8 controller manages local control components such as keypad, LCD, RTC, watchdog, and valve outputs.

2. The ESP32 gateway connects to Wi-Fi and communicates with backend PHP endpoints over HTTP.

3. Control data is received from the backend and transferred to the STM controller over UART.

4. Sensor and valve-state data are sent back to the backend.

5. The mobile application layer exists as a Flutter project scaffold with IoT-related dependencies.

---

## Technical Characteristics

| Area | Description |
| --- | --- |
| Ethernet Bring-up | Provides both Arduino and ESP-IDF paths for ESP32 + W5500 |
| TCP Test Path | Includes an ESP32 TCP server and a Python client |
| MCU-to-Gateway Design | Uses ESP32 as a network-facing gateway and STM8 as a local controller |
| Local Control | Includes keypad, LCD, RTC, watchdog, and valve control logic |
| Backend Link | Uses PHP scripts for data insertion and control-data retrieval |
| Mobile Layer | Flutter project and IoT-related dependencies are present |

---

## Strengths

| Strength | Description |
| --- | --- |
| Framework Comparison | Arduino and ESP-IDF implementations allow comparison of abstraction levels |
| Practical Hardware Path | W5500, ESP32-S3, STM8, UART, and valve outputs are represented in code |
| Layered IoT Structure | Firmware, gateway, backend, and mobile layers are all present |
| Testability | The Python TCP client provides a simple host-side verification path |
| Expansion Potential | The structure can be extended toward MQTT, REST API cleanup, or a more complete mobile dashboard |

---

## Limitations

| Limitation | Description |
| --- | --- |
| Integration Scope | The Ethernet example and irrigation system are not integrated into one product |
| Documentation | Root-level architecture and setup documentation are limited |
| TOE Detail | Direct W5500 socket-register programming is not shown |
| Network Configuration | Visible code includes fixed IP, Wi-Fi credential, and endpoint values |
| Backend Robustness | Visible PHP scripts use direct SQL string construction |
| UART Protocol | The visible code uses fixed-position data exchange; a complete packet specification is not confirmed |
| Mobile UI | The Flutter dashboard file is present, but visible implementation is limited |

---

## Application Value

This repository is useful as an embedded IoT prototype study case. It provides W5500 Ethernet bring-up examples, TCP server validation, ESP32 gateway logic, STM8-based local control, and backend/mobile integration elements in one project collection.

The strongest technical value is the combination of low-level device connectivity and higher-level IoT system layering. The repository shows how embedded networking, local control, backend communication, and app scaffolding can be arranged in a prototype-stage system.

---

## Author Information

| Item | Information |
| --- | --- |
| Repository Owner | NhatTran-97 |
| Main Repository | `NhatTran-97/Full-Stack-Embedded-System` |
| Related Submodule | `NhatTran-97/Automatic_Irrigation_System` |
| Public Description | The root repository is described as a collection of projects by the author |
| Irrigation Project Context | Developed in 2022 for a national startup competition |

The GitHub repository owner is `NhatTran-97`, and the automatic irrigation project is linked as a submodule from the main repository.

---

## Final Summary

`Full-Stack-Embedded-System` combines ESP32-S3 W5500 Ethernet examples with an automatic irrigation prototype based on STM8, ESP32 Wi-Fi, PHP, and Flutter. The W5500 section provides practical Ethernet and TCP validation examples, while the irrigation submodule shows a layered IoT structure with local control, gateway communication, backend scripts, and mobile-app scaffolding. The repository is best understood as a prototype-oriented embedded IoT project collection.

---

**Full-Stack Embedded System: ESP32-S3 W5500 Ethernet 및 자동 관수 Prototype**

## 프로젝트 개요

`Full-Stack-Embedded-System`은 단일 완성형 제품보다는 embedded IoT 예제와 prototype을 함께 정리한 저장소다. 구성은 크게 ESP32 기반 W5500 Ethernet 예제와 자동 관수 시스템 submodule로 나뉜다.

`Ethernet_W5500`는 MCU와 W5500 Ethernet module의 연결 방식을 다룬다. README는 ESP32 + W5500 Arduino 예제와 ESP-IDF 예제를 완료 상태로 표시하고, STM32 + W5500 지원은 planned 상태로 표시한다.

`Automatic_Irrigation_System`은 2022년 national startup competition 참여를 위해 개발된 자동 관수 프로젝트다. README는 local keypad control, timer 기반 scheduled irrigation, mobile application 기반 remote control을 주요 기능으로 설명한다.

---

## 시스템 구조

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

두 경로는 embedded IoT networking과 control이라는 공통 주제를 갖지만, 저장소 내에서 하나의 W5500 기반 자동 관수 gateway로 통합된 구조는 확인되지 않는다.

---

## WIZnet Product Role

이 저장소에서 확인되는 WIZnet 제품은 **W5500 Ethernet module**이다. W5500은 ESP32 networking 예제에서 SPI 기반 Ethernet controller로 사용된다. Arduino 예제는 W5500 reset, chip select, SCLK, MISO, MOSI pin을 정의하고, SPI 초기화 후 Ethernet을 시작하며 TCP port 5000에서 server를 실행한다.

ESP-IDF 구현은 W5500 MAC/PHY 생성, SPI bus 설정, `esp_netif`, static IP 설정, lwIP socket API를 사용한다. TCP server는 `socket`, `bind`, `listen`, `accept`, `recv`, `send` 흐름으로 구성된다.

| WIZnet 항목 | 역할 |
| --- | --- |
| W5500 Ethernet module | ESP32-S3용 SPI 기반 Ethernet controller |
| Interface | SPI |
| Network Function | Ethernet TCP server 경로 |
| Software Layer | Arduino Ethernet library / ESP-IDF Ethernet + lwIP |
| TOE 판단 | W5500 socket register 직접 제어 방식은 확인되지 않음 |

---

## 동작 흐름

### W5500 Ethernet 흐름

1. ESP32-S3가 W5500 관련 GPIO와 SPI pin을 설정한다.

2. Arduino Ethernet library 또는 ESP-IDF Ethernet driver를 통해 Ethernet을 초기화한다.

3. DHCP 또는 static IP 방식으로 IP를 설정한다.

4. TCP port 5000에서 server를 실행한다.

5. PC client가 TCP로 접속해 데이터를 송수신한다.

6. Python client는 host 측에서 echo server 동작을 검증한다.

### 자동 관수 흐름

1. STM8 controller는 keypad, LCD, RTC, watchdog, valve output 등 local control 요소를 담당한다.

2. ESP32 gateway는 Wi-Fi에 접속하고 PHP backend endpoint와 HTTP로 통신한다.

3. Backend에서 받은 control data는 UART를 통해 STM controller로 전달된다.

4. Sensor 및 valve state data는 backend로 전송된다.

5. Flutter mobile layer는 IoT 관련 dependency와 app scaffold를 포함한다.

---

## 기술적 특징

| 영역 | 내용 |
| --- | --- |
| Ethernet Bring-up | Arduino와 ESP-IDF 양쪽에서 ESP32 + W5500 연결을 다룸 |
| TCP Test Path | ESP32 TCP server와 Python client를 통한 검증 경로 포함 |
| MCU-to-Gateway 구조 | ESP32가 network-facing gateway, STM8이 local controller 역할을 담당 |
| Local Control | Keypad, LCD, RTC, watchdog, valve control logic 포함 |
| Backend 연동 | PHP script 기반 data insertion 및 control-data retrieval 구조 |
| Mobile Layer | Flutter project와 IoT 관련 dependency 포함 |

---

## 장점

| 장점 | 내용 |
| --- | --- |
| Framework 비교 가능 | Arduino와 ESP-IDF 구현을 모두 포함해 abstraction level 차이를 확인할 수 있음 |
| 실제 하드웨어 흐름 | W5500, ESP32-S3, STM8, UART, valve output이 코드상 확인됨 |
| 계층형 IoT 구조 | Firmware, gateway, backend, mobile layer가 모두 포함됨 |
| 테스트 용이성 | Python TCP client로 host 측 TCP 검증 가능 |
| 확장 가능성 | MQTT, REST API 정리, mobile dashboard 구현 등으로 확장 가능 |

---

## 한계

| 한계 | 내용 |
| --- | --- |
| 통합 범위 | Ethernet 예제와 자동 관수 시스템이 하나의 제품으로 통합되어 있지는 않음 |
| 문서화 | 루트 수준의 architecture 및 setup 문서가 제한적임 |
| TOE 상세 | W5500 socket register 직접 제어 방식은 확인되지 않음 |
| 네트워크 설정 | visible code 기준 IP, Wi-Fi credential, endpoint 값이 고정되어 있음 |
| Backend 안정성 | visible PHP script에서 직접 SQL 문자열 구성 방식이 확인됨 |
| UART Protocol | 고정 위치 기반 data exchange가 보이며, 완전한 packet specification은 확인되지 않음 |
| Mobile UI | Flutter dashboard 파일은 존재하지만 visible implementation은 제한적임 |

---

## 적용 가치

이 저장소는 embedded IoT prototype 분석 자료로 활용할 수 있다. W5500 Ethernet bring-up, TCP server 검증, ESP32 gateway logic, STM8 local control, backend/mobile integration 요소를 하나의 프로젝트 모음에서 확인할 수 있다.

기술적 가치는 low-level device connectivity와 higher-level IoT system layering의 조합에 있다. Embedded networking, local actuator control, backend communication, mobile app scaffold가 prototype 단계에서 어떻게 배치되는지 확인할 수 있다.

---

## 저자 정보

| 항목 | 내용 |
| --- | --- |
| Repository Owner | NhatTran-97 |
| Main Repository | `NhatTran-97/Full-Stack-Embedded-System` |
| Related Submodule | `NhatTran-97/Automatic_Irrigation_System` |
| Public Description | 작성자가 진행한 프로젝트를 보여주기 위한 저장소 |
| Irrigation Project Context | 2022년 national startup competition 참여 프로젝트 |

GitHub repository owner는 `NhatTran-97`이며, 자동 관수 프로젝트는 main repository에서 submodule로 연결되어 있다.

---

Source: https://maker.wiznet.io/josephsr/projects/temp-full-stack-embedded-system-esp32-s3-w5500-ethernet-and-automatic-irrigation-control/
