Wiznet makers

bruno

Published November 28, 2025 ©

128 UCC

14 WCC

29 VAR

0 Contests

0 Followers

0 Following

Original Link

STM32 + W5500 기반 HTTP/HTTPS 통신 구현

STM32에서 W5500으로 HTTP/HTTPS 구현

COMPONENTS Hardware components

WIZnet - W5500

x 1


PROJECT DESCRIPTION

원본링크 : https://mischianti.org/stm32-ethernet-w5500-with-plain-http-and-ssl-https/

1) Introduction

본 프로젝트는 STM32 MCUWIZnet W5500 Ethernet Controller를 사용하여
일반 HTTP 요청뿐 아니라 SSL 기반 HTTPS 연결까지 구현하는 방법을 상세히 다룹니다.

특히 W5500은 TCP/IP 스택이 완전히 내장된 하드웨어 기반의 Ethernet 칩으로,
MCU가 복잡한 네트워크 스택을 직접 처리할 필요 없이 SPI 인터페이스만으로 안정적인 인터넷 통신을 제공하는 것이 장점입니다.

HTTPS는 CPU 부하가 큰 SSL 처리 과정이 필요하기 때문에
STM32에서 직접 TLS 처리를 수행하는 대신,
라이브러리 기반 접근과 W5500 소켓 구조를 활용한 안전한 처리 방법이 소개됩니다.


2) Required Components

STM32 보드 (예: STM32 Nucleo, Blue Pill 등)

W5500 Ethernet 모듈

RJ45 커넥터 포함 Ethernet 포트

LAN 케이블

3.3V 전원

SPI 연결용 점퍼 케이블

OpenSSL 또는 mbedTLS 라이브러리 (HTTPS용)


3) Hardware Setup

W5500은 3.3V 구동, SPI 인터페이스, 하드웨어 TCP/IP 스택을 제공하므로
STM32와 직접 연결만 하면 바로 동작합니다.

기본 연결 구조:

STM32 ↔ W5500 SPI

STM32 ↔ W5500 INT(인터럽트 핀)

STM32 ↔ RESET 핀

3.3V 전원 및 GND 연결

RJ45 → LAN


4) Interface Explanation (SPI / W5500 Socket)

■ SPI 인터페이스

W5500은 4-선식 SPI를 사용합니다:

SCK

MISO

MOSI

CS(Chip Select)

SPI 속도는 최대 80MHz까지 가능하지만 보드 환경에 따라 20~40MHz 정도가 안정적입니다.

■ W5500 Socket 구조

W5500은 8개의 독립 소켓(0~7) 제공
각 소켓에서 다음을 설정 가능:

TCP / UDP 모드

포트

RX/TX 버퍼 크기

인터럽트 플래그

HTTP/HTTPS 클라이언트에서는 보통 다음 소켓을 사용:

Socket 0: HTTP/HTTPS Request 전송

Socket 1: 추가 데이터 수신용 or 다른 서버 연결


5) Wiring Table

STM32 PinW5500 PinDescription
PA5 (SCK)SCKSPI Clock
PA6 (MISO)MISOMaster In
PA7 (MOSI)MOSIMaster Out
PB6CSSPI Chip Select
PB7RESETW5500 Reset
PB8INTInterrupt Output
3.3V3.3VPower
GNDGNDGround

6) Software Environment Setup

필수 요소

STM32CubeIDE 또는 PlatformIO

STM32 HAL 라이브러리

WIZnet W5500 라이브러리

HTTP/HTTPS 클라이언트 코드

mbedTLS (HTTPS용 → MCU에서 TLS 처리)

프로젝트 구조 예

 
/Core  /Src    main.c    w5500.c    http_client.c  /Inc    w5500.h    http_client.h /Drivers  STM32_HAL_Driver  WIZnet_W5500 /mbedtls

7) Full Code Examples

(1) W5500 초기화 코드

 
wiz_NetInfo netInfo = {    .mac = {0x00, 0x08, 0xdc, 0x01, 0x02, 0x03},    .ip = {192, 168, 1, 120},    .sn = {255, 255, 255, 0},    .gw = {192, 168, 1, 1},    .dns = {8, 8, 8, 8},    .dhcp = NETINFO_STATIC }; wizchip_init(tx_size, rx_size); wizchip_setnetinfo(&netInfo);

(2) HTTP 요청 코드

 
int sock = socket(0, Sn_MR_TCP, 0, 0); connect(sock, (uint8_t*)"78.47.32.215", 80); char request[] =    "GET / HTTP/1.1\r\n"    "Host: www.example.com\r\n"    "Connection: close\r\n\r\n"; send(sock, request, strlen(request)); recv(sock, buffer, sizeof(buffer));

(3) HTTPS 요청 코드 예제

HTTPS에서는 TLS Handshake + W5500 raw socket 사용

 
mbedtls_ssl_setup(&ssl, &conf); mbedtls_ssl_set_bio(&ssl, &sock, w5500_send, w5500_recv, NULL); mbedtls_ssl_handshake(&ssl); mbedtls_ssl_write(&ssl, request, strlen(request)); mbedtls_ssl_read(&ssl, buffer, sizeof(buffer));

8) Testing Steps

LAN 케이블을 연결하고 W5500에 전원 공급

STM32에서 SPI 초기화

네트워크 정보(IP/DNS/GW) 적용

Ping으로 W5500의 정상 작동 확인

HTTP 요청 테스트

HTTPS 요청 테스트 (SSL Handshake 확인)

서버 응답 데이터 확인


9) Troubleshooting

문제원인해결법
Socket OPEN 실패SPI misconfigSPI mode 0인지 확인
DHCP 할당 불가GW/DNS 설정 오류Static IP 사용
HTTPS Handshake 실패TLS 버전 또는 인증서 문제서버 TLS 1.2인지 확인
데이터 손실버퍼 부족소켓 버퍼 4KB 이상 설정

10) Use Cases & Market Potential

산업용 IoT 기기 → 보안 통신 필요

데이터 로거 → HTTPS POST

원격 모니터링 시스템

스마트 미터, 스마트 빌딩

제조 장비의 클라우드 연동

W5500 기반 보안 게이트웨이

WIZnet W5500은 MCU 부하를 낮추면서도 Ethernet 연결을 안정적으로 제공하여
산업용 및 상용 시장에서 활용도가 매우 높습니다.


11) Module/Chip Technical Overview

■ W5500 특징

하드웨어 TCP/IP 스택

8개 소켓 지원

최대 80MHz SPI

TX/RX 버퍼 32KB

IPv4, TCP, UDP, ICMP, ARP 지원

Extremely low MCU load

■ STM32 특징

ARM Cortex-M 기반

고속 SPI 지원

mbedTLS 구동 가능

저전력 및 산업용에 적합


12) Conclusion

본 프로젝트는 STM32 + W5500 조합으로 HTTP/HTTPS 클라이언트 시스템을 구축하는 전체 과정을 정리했습니다.

W5500의 하드웨어 네트워크 스택과 STM32의 효율적 SPI 처리 능력을 결합하면
안정적이고 MCU 부하가 적은 Ethernet 기반 IoT 디바이스를 손쉽게 개발할 수 있습니다.

HTTPS까지 구현하여
보안성, 확장성, 산업용 신뢰성을 모두 확보할 수 있으며,
IoT 제품 개발에 매우 실용적인 아키텍처입니다.

Documents
Comments Write