Wiznet makers

bruno

Published November 24, 2025 ©

120 UCC

14 WCC

29 VAR

0 Contests

0 Followers

0 Following

Original Link

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

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

COMPONENTS
PROJECT DESCRIPTION

 

🔌 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 기반의 유연한 커스텀 기능 추가 가능

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

Documents
Comments Write