---
title: "STM32 Ethernet with W5500 (PART 5): STM32 as HTTP WebServer | LED Control"
url: "https://maker.wiznet.io/bruno/projects/stm32-ethernet-with-w5500-part-5--stm32-as-http-webserver-led-control/"
markdown_url: "https://maker.wiznet.io/bruno/projects/stm32-ethernet-with-w5500-part-5--stm32-as-http-webserver-led-control/md"
type: "UCC: User Created Content"
author: "ControllersTech"
author_url: "https://www.youtube.com/watch?v=t1MSGMjvroQ"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "ControllersTech"
original_url: "https://www.youtube.com/watch?v=t1MSGMjvroQ"
published: "2025-11-24"
language: "en"
likes: 0
views: 1617
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# STM32 Ethernet with W5500 (PART 5): STM32 as HTTP WebServer | LED Control

> STM32 Ethernet with W5500 (PART 5): STM32 as HTTP WebServer | LED Control

Original author: ControllersTech (source: https://www.youtube.com/watch?v=t1MSGMjvroQ)

## Article

[Embedded media](https://www.youtube.com/embed/t1MSGMjvroQ)

## 🔌 STM32와 W5500으로 구축하는 실용적인 HTTP 웹 서버

**— CGI 없이도 가능한 실전 LED 제어 튜토리얼 소개**

이번 콘텐츠에서는 **STM32 MCU와 WIZnet W5500 이더넷 칩**을 활용하여 **HTTP 웹 서버를 직접 구축하는 방법**을 단계별로 안내합니다. 네트워크에 연결된 장치에서 웹 브라우저를 통해 LED를 제어하는 실습까지 포함되어 있어, 임베디드 네트워크 개발을 처음 접하는 분들에게도 매우 실용적인 가이드를 제공합니다.

---

### 📌 튜토리얼 핵심 내용 요약

#### 1. 프로젝트 구성 및 환경 준비

WIZnet W5500 전용 **라이브러리 파일을 프로젝트에 복사**하여 사용

HTTP 서버 구동을 위한 예제 파일들도 함께 포함

W5500의 8개 소켓 중

**DHCP: 소켓 7**, **DNS: 소켓 6**

웹 서버용 소켓: **2개(0, 1) 사용**

---

### 2. 정적 웹 페이지 등록

서버는 기본적으로 다음 **세 가지 정적 페이지**를 제공하도록 설정됩니다.

`/index.html` — 메인 페이지

`/ledon.html` — LED 켜기

`/ledoff.html` — LED 끄기

각 페이지는 `register_http_server_web_content()` 함수를 통해 URI와 매핑되어 서버에 등록됩니다.

---

### 3. CGI 없이 구현하는 동적 동작 처리 (핵심)

일반적으로 URI 요청에 따른 특정 행동을 구현하려면 **CGI 방식**을 사용해야 하지만, 구조가 복잡하고 임베디드에서는 부담이 될 수 있습니다.

이 튜토리얼에서는 CGI를 사용하지 않고, **HTTP Dynamic Handler**라는 커스텀 함수를 직접 구현하여 URI 요청을解析하고 LED 제어 로직을 수행합니다.

#### 구현 방식

**커스텀 핸들러 함수 작성**

`http_dynamic_handler()` 형태의 사용자 정의 함수

요청된 URI를 확인해 LED ON/OFF 수행

**HTTP Process Handler에 직접 연결**

HTTP 요청 처리 루틴의 `switch-case` 내부에서
기본 GET 처리 이후 **커스텀 핸들러를 수동으로 호출**

URI 정보는 구조체 형태로 전달

---

### 4. LED 제어 로직

STM32 보드의 **PC13 핀에 연결된 LED 제어**

LED는 **Active Low** 방식
→ LOW 쓰기: LED 켜짐
→ HIGH 쓰기: LED 꺼짐

`if(strcmp(uri, "/ledon.html") == 0) { led_control(LED_ON); } else if(strcmp(uri, "/ledoff.html") == 0) { led_control(LED_OFF); } `

---

### 5. HTTP 서버 실행 구조

웹 서버는 `http_server_run()` 함수가 담당하며 다음 기능을 포함합니다:

소켓 연결 처리

HTTP 요청 파싱

페이지 전송

클라이언트 연결 유지 및 종료

이 함수는 **무한 루프(while)** 안에서 지속적으로 호출되어 웹 서버가 상시 동작하도록 합니다.

---

### 6. 실제 동작 결과

테스트 환경에서 W5500의 IP 주소인 **192.168.1.4**에 접속한 후:

인덱스 페이지 정상 로드

LED On / Off 버튼 클릭 시 LED가 즉시 반응

URI 요청 → 핸들러 → GPIO 제어로 이어지는 전체 흐름이 안정적으로 동작함을 확인

---

## 🎯 이 튜토리얼의 의미

이 예제는 단순히 LED를 제어하는 수준을 넘어,

> **“W5500 기반 HTTP 서버에서 CGI 없이도 실용적인 동적 기능 구현이 가능하다”**

는 점을 명확하게 보여주는 사례입니다.

임베디드 환경에서 REST API, 장치 제어, 실시간 모니터링 페이지 등
확장형 서비스를 구현할 때 유용한 구조를 배울 수 있습니다.

---

## ✨ 마무리

STM32와 W5500 조합은 다음과 같은 장점이 있습니다:

하드웨어 TCP/IP 스택 기반의 안정적인 네트워크

소형 MCU에서도 구현 가능한 경량 웹 서버

URI 기반의 유연한 커스텀 기능 추가 가능

이번 튜토리얼은 네트워크 임베디드 개발 입문자부터
실제 제품 개발자까지 모두에게 도움이 될 수 있는 실전 예제입니다.

---

Source: https://maker.wiznet.io/bruno/projects/stm32-ethernet-with-w5500-part-5--stm32-as-http-webserver-led-control/
