Wiznet makers

Grace_Koo

Published October 29, 2025 ©

8 UCC

10 WCC

0 VAR

0 Contests

0 Followers

0 Following

Original Link

ESP32-Wiznet-W5500-SSL-Micropython

ESP32-Wiznet-W5500-SSL-Micropython

COMPONENTS Hardware components

WIZnet - W5500

x 1


Espressif - ESP32

x 1

Software Apps and online services

micropython - MicroPython

x 1


PROJECT DESCRIPTION

Overview

The ESP32 is a widely adopted IoT platform thanks to its built-in Wi-Fi connectivity.
However, in industrial or security-sensitive environments, Wi-Fi connectivity may be restricted, unstable, or not permitted.

To address this, the WIZnet W5500 Ethernet controller can be connected to the ESP32 via SPI,
and the sma_esp32_w5500_requests library can be used in a MicroPython environment to enable wired HTTP networking.

This combination integrates the ESP32’s processing capability with the W5500’s hardware TCP/IP stack,
providing a stable and independent network interface.

System Architecture

The overall architecture is illustrated below:

[ESP32 MCU]

└─ MicroPython Firmware

└─ Python-level W5500 Driver

└─ socketpool / sma_esp32_w5500_requests Module

[SPI Bus]

[WIZnet W5500 Ethernet Controller]

└─ Hardware TCP/IP Engine (MAC + PHY)

└─ RJ45 / Ethernet Port

[Local Network / Internet]

ESP32 runs the MicroPython runtime and acts as the SPI master.

W5500 performs TCP/IP processing entirely in hardware, ensuring reliable and deterministic network communication.

All data exchange occurs through the SPI interface, completely independent of the ESP32’s Wi-Fi stack.

sma_esp32_w5500_requests.py

sma_esp32_w5500_requests is a MicroPython HTTP client library designed for SPI-based Ethernet interfaces such as the W5500.
It is derived from Adafruit’s CircuitPython Requests and ported specifically for the ESP32 environment.

Key Components

ClassRole
SessionManages socket pooling and connection reuse
ResponseHandles HTTP responses (status, headers, body, etc.)
_FakeSSLContextProvides a mock SSL context for non-SSL hardware such as the W5500
request(), get(), post()Exposes a familiar requests-style API for HTTP operations

This library enables HTTP communication without relying on the Wi-Fi stack.
Internally, it integrates with the socketpool and wiznet5k drivers to manage SPI-based network sessions between the ESP32 and W5500.

Conclusion

By combining the ESP32 and W5500, developers can implement a stable, deterministic wired network interface in MicroPython —
without using Wi-Fi.

This architecture is particularly effective in industrial, security-restricted, or closed network environments.
It leverages the ESP32 for application logic and the W5500 for hardware-based TCP/IP processing,
resulting in an efficient and reliable communication stack.

SMA_ESP32_W5500_Requests provides a standardized HTTP request API for Ethernet communication in ESP32-based MicroPython systems,
and its modular structure allows easy porting to other MCUs such as RP2040 or STM32.

 

ESP32 handles control and logic, while
W5500 ensures robust hardware-level Ethernet connectivity —
forming an ideal combination for embedded IoT networking.

Documents
  • ESP32-Wiznet-W5500-SSL-Micropython.git

Comments Write