Skip to content

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

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

bruno

Published November 24, 2025

Original author: ControllersTechOriginal source (new tab)

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

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 기반의 μœ μ—°ν•œ μ»€μŠ€ν…€ κΈ°λŠ₯ μΆ”κ°€ κ°€λŠ₯

이번 νŠœν† λ¦¬μ–Όμ€ λ„€νŠΈμ›Œν¬ μž„λ² λ””λ“œ 개발 μž…λ¬ΈμžλΆ€ν„°
μ‹€μ œ μ œν’ˆ κ°œλ°œμžκΉŒμ§€ λͺ¨λ‘μ—κ²Œ 도움이 될 수 μžˆλŠ” μ‹€μ „ μ˜ˆμ œμž…λ‹ˆλ‹€.

Comments

Similar projects you might like

Comments