---
title: "ESP32 Modbus TCP/IP over Ethernet (W5500) using Arduino IDE"
url: "https://maker.wiznet.io/bruno/projects/esp32-modbus-tcp-ip-over-ethernet-w5500-using-arduino-ide/"
markdown_url: "https://maker.wiznet.io/bruno/projects/esp32-modbus-tcp-ip-over-ethernet-w5500-using-arduino-ide/md"
type: "UCC: User Created Content"
author: "embeddedthere"
author_url: "https://embeddedthere.com/esp32-modbus-tcp-ip-over-ethernet-w5500-using-arduino-ide/"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "embeddedthere"
original_url: "https://embeddedthere.com/esp32-modbus-tcp-ip-over-ethernet-w5500-using-arduino-ide/"
published: "2025-12-22"
language: "ko"
likes: 0
views: 575
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# ESP32 Modbus TCP/IP over Ethernet (W5500) using Arduino IDE

> ESP32 + W5500 조합으로 Modbus TCP 서버를 구현하는 방법을 단계적으로 설명한 실습 중심 튜토리얼

Original author: embeddedthere (source: https://embeddedthere.com/esp32-modbus-tcp-ip-over-ethernet-w5500-using-arduino-ide/)

## Article

## 0️⃣ 소개 (원글은 어떻게 쓰였는가)

이 글은 **ESP32 + W5500 조합으로 Modbus TCP 서버를 구현하는 방법**을 단계적으로 설명한 **실습 중심 튜토리얼**다.
글의 구성은 비교적 명확하다.

**ESP32에서 Wi-Fi 대신 Ethernet(W5500)을 사용하는 이유 제시**

Arduino IDE 환경에서

W5500 Ethernet 라이브러리

Modbus TCP 라이브러리
를 결합하는 구조 설명

**Modbus TCP Server(Slave)** 역할을 ESP32가 수행하도록 설정

레지스터(Read/Write) 예제를 통해 **산업용 프로토콜의 실제 동작 확인**

의도적으로 생략된 부분도 분명하다.

Modbus RTU vs TCP에 대한 깊은 이론 비교 ❌

대규모 노드 운영, 장애 복구, 보안(TLS 등) ❌

Ethernet PHY 레벨 튜닝, 네트워크 부하 분석 ❌

즉, 이 글은 **“어디까지나 동작 기준선을 만드는 글”**이다.
그럼에도 불구하고 기준(reference)으로 삼을 가치가 있는 이유는,
👉 **Ethernet 기반 산업 프로토콜을 MCU 단에서 구현할 때의 최소 구조를 정확히 보여주기 때문**이다.

---

## ① 비교 – 구조적 분석 정의

### 🔹 이 글이 정의하는 구조

**ESP32 = 애플리케이션/제어 로직W5500 = Ethernet + TCP/IP 전담Modbus TCP = 산업용 상위 프로토콜**

이 구조는 “ESP32가 모든 네트워크를 직접 처리한다”는 발상을 버린 설계다.

---

### 🔹 기존 방식 / 대안 비교

#### 1️⃣ ESP32 Wi-Fi + Modbus TCP

장점: 추가 칩 불필요, BOM 단순

단점:

Wi-Fi 불안정성

산업 현장 유선 인프라와 부조화

실시간성 저하

👉 **이 글은 Wi-Fi를 명확히 배제한다는 점에서 산업 지향적**

---

#### 2️⃣ Linux SBC + Ethernet + Modbus

장점: 풍부한 라이브러리, 확장성

단점:

과도한 전력/비용

부팅 시간

유지관리 복잡도

👉 이 글은 **MCU 레벨에서 산업 프로토콜을 충분히 소화할 수 있음을 증명**

---

#### 3️⃣ MCU + Software TCP/IP (lwIP 직접 처리)

장점: 칩 수 감소

단점:

네트워크 스택 부담

실시간 태스크와 충돌

디버깅 난이도 증가

👉 **W5500 선택은 구조적 판단의 결과**

---

## ② 핵심 구조 요약 (How it is designed)

### 📐 아키텍처 개요

`[ Modbus Client (PLC / PC) ] │ Ethernet │ [ W5500 ] (TCP/IP Offload) │ SPI [ ESP32 ] - Modbus TCP Server - Register Logic - Application Control `

---

### 🔧 구성 요소 (원글 기준)

MCU: ESP32

Ethernet Controller: **W5500**

개발 환경: Arduino IDE

사용 라이브러리:

Ethernet(W5500) 관련 라이브러리

Modbus TCP 라이브러리
→ **구체적 라이브러리 명/버전: None (원글 기준 명시 수준까지만 확인)**

---

### ⚙️ 구현 흐름

SPI 기반 W5500 초기화

고정 IP 또는 네트워크 파라미터 설정

Modbus TCP Server 시작

Holding/Input Register 매핑

Client 요청에 따른 Read / Write 처리

---

## ③ 이 구조가 갖는 기술적 의미

이 접근이 합리적인 이유는 명확하다.

> **Because** TCP/IP 처리를 W5500이 전담함으로써
> ESP32는 Modbus 로직과 제어 태스크에 집중할 수 있기 때문이다.

### ✔️ 장점

네트워크 안정성 향상

실시간 태스크 분리

코드 복잡도 감소

산업용 Ethernet 인프라 친화적

### ⚠️ 트레이드오프

SPI 대역폭 한계

W5500 추가로 인한 BOM 증가

고급 보안(TLS)은 별도 설계 필요

---

## ④ WIZnet / Ethernet 관점에서의 해석

이 글은 **WIZnet 하드웨어 TCP/IP 오프로딩 철학을 그대로 반영한 사례**다.

ESP32는 **“무엇을 처리할 것인가”**에 집중

W5500은 **“어떻게 네트워크를 유지할 것인가”**를 책임

즉,

연결 관리

세션 유지

TCP 상태 머신

을 MCU 코드에서 제거한다.

👉 이 분리는
**MCU 성능이 곧 네트워크 안정성으로 직결되지 않게 만드는 핵심 포인트**다.

---

## ⑤ 확장 가능성 및 활용 시나리오

이 글이 실무적으로 좋은 이유는, **단일 예제가 아니라 패턴이기 때문**이다.

### 🔁 치환 가능성 1

ESP32 → RP2040 / STM32

구조 동일, SPI + W5500 유지

### 🔁 치환 가능성 2

Modbus TCP →

TCP 기반 커스텀 프로토콜

MQTT over TCP (Broker 직접 연결)

---

### 📦 실무 확장 시나리오

공장 설비 센서 노드

Ethernet 기반 데이터 수집 장치

PLC 보조 모듈

장거리·고신뢰 제어 노드

---

## ⑥ 결론

이 링크는 단순한 “ESP32 Ethernet 예제”가 아니다.

✔️ **Ethernet을 왜 분리해야 하는지**

✔️ **산업용 프로토콜을 MCU에서 다루는 기준선**

✔️ **W5500이 어떤 역할을 맡아야 구조가 깔끔해지는지**

---

Source: https://maker.wiznet.io/bruno/projects/esp32-modbus-tcp-ip-over-ethernet-w5500-using-arduino-ide/
