---
title: "STM32 + W5500 기반 HTTP/HTTPS 통신 구현"
url: "https://maker.wiznet.io/bruno/projects/stm32-w5500--http-https--/"
markdown_url: "https://maker.wiznet.io/bruno/projects/stm32-w5500--http-https--/md"
type: "UCC: User Created Content"
author: "Renzo Mischianti"
author_url: "https://mischianti.org/stm32-ethernet-w5500-with-plain-http-and-ssl-https/"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "Renzo Mischianti"
original_url: "https://mischianti.org/stm32-ethernet-w5500-with-plain-http-and-ssl-https/"
published: "2025-11-28"
language: "ko"
hardware: ["WIZnet W5500"]
likes: 0
views: 663
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

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

> STM32에서 W5500으로 HTTP/HTTPS 구현

Original author: Renzo Mischianti (source: https://mischianti.org/stm32-ethernet-w5500-with-plain-http-and-ssl-https/)

## Components

- **WIZnet W5500** x 1 ([docs](https://docs.wiznet.io/Product/Chip/Ethernet/W5500))

WIZnet parts: W5500 ([Datasheet](https://docs.wiznet.io/Product/Chip/Ethernet/W5500/datasheet?utm_source=maker&utm_medium=project&utm_campaign=w5500), [product hub](https://maker.wiznet.io/products/w5500/))

## Article

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

## 1) Introduction![](https://maker.wiznet.io/upload/ckeditor5/1071063055%5F1764323892%2Epng)

본 프로젝트는 **STM32 MCU**와 **WIZnet 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 Pin | W5500 Pin | Description |
| --- | --- | --- |
| PA5 (SCK) | SCK | SPI Clock |
| PA6 (MISO) | MISO | Master In |
| PA7 (MOSI) | MOSI | Master Out |
| PB6 | CS | SPI Chip Select |
| PB7 | RESET | W5500 Reset |
| PB8 | INT | Interrupt Output |
| 3.3V | 3.3V | Power |
| GND | GND | Ground |

---

## 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 misconfig | SPI 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 제품 개발에 매우 실용적인 아키텍처입니다.

---

Source: https://maker.wiznet.io/bruno/projects/stm32-w5500--http-https--/
