ESP32-Wiznet-W5500-SSL-Micropython
ESP32-Wiznet-W5500-SSL-Micropython
Software Apps and online services
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 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
| Class | Role |
|---|---|
| Session | Manages socket pooling and connection reuse |
| Response | Handles HTTP responses (status, headers, body, etc.) |
| _FakeSSLContext | Provides 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.


