Wiznet makers

Grace_Koo

Published February 06, 2026 ©

31 UCC

15 WCC

7 VAR

0 Contests

0 Followers

0 Following

How to Web Server Example (MicroPython)

This example demonstrates Web Server on W55RP20 S2E via UART/SPI using MicroPython on a Raspberry Pi Pico (Master)

COMPONENTS Hardware components

WIZnet - W5500

x 1

Software Apps and online services

micropython - MicroPython

x 1


PROJECT DESCRIPTION

How to Web Server Example (MicroPython)

This program demonstrates how to turn the W55RP20 S2E board into a simple Web Server via UART or SPI interface. The Raspberry Pi Pico (Host) configures the W55RP20 S2E as a TCP Server (OP1) listening on Port 80. When a PC or Mobile web browser connects to the module's IP, the Pico serves a simple HTML page.

Step 1: Prepare software

The following software is required to run and test the MicroPython example.

  • Thonny : An integrated development environment for MicroPython. used to write, upload, and run code.
  • Public Test Server: We will use httpbin.org (a simple HTTP Request & Response Service) for testing, so no local server software is strictly required.

⚠️ Browser Warning (Chrome/Edge): Modern browsers like Chrome try to open multiple connections (caching, favicon). This simple server handles one connection at a time.

  • Fix: Use Incognito Mode (Private Window) or press Ctrl+F5 if the page hangs.

Step 2: Prepare hardware

1. Connect GPIO13 according to the selected UART/SPI mode of the W55RP20 EVB Pico, as illustrated below.

GPIO13 Pin Desc
LOW(GND)UART mode (default)
HIGH(3.3V)SPI mode

2. Connect the Raspberry Pi Pico and the W55RP20 EVB Pico using jumper wires as shown below, depending on the selected UART/SPI mode.

  • Important Note on Mode Switching: In this example setup, GPIO 13 of the W55RP20 EVB Pico is physically connected to GPIO 13 of the Raspberry Pi Pico. The Host Pico sets the mode (High/Low) automatically based on the software configuration.
  • If you change the MODE in the code (e.g., UART ↔ SPI): You MUST reset both boards (Raspberry Pi Pico and W55RP20 EVB Pico) to ensure the mode is switched and recognized correctly.

If UART mode :

Raspberry Pi PicoW55RP20 EVB Pico
GPIO4 (UART_TX)GPIO5 (UART_RX)
GPIO5 (UART_RX)GPIO4 (UART_TX)
GPIO13 (MODE_SEL)GPIO13 (MODE_SEL)
GNDGND

If SPI mode :

Raspberry Pi Pico(Master)W55RP20 EVB Pico(Slave)
GPIO2 (SPI_CLK)GPIO2 (SPI_CLK)
GPIO3 (SPI_TX)GPIO4 (SPI_RX)
GPIO4 (SPI_RX)GPIO3 (SPI_TX)
GPIO5 (SPI_CS)GPIO5 (SPI_CS)
GPIO26 (SPI_INT)GPIO26 (SPI_INT)
GPIO13 (MODE_SEL)GPIO13 (MODE_SEL)
GNDGND

 

3. Connect the Raspberry Pi Pico to your PC (desktop or laptop) using a 5-pin Micro USB cable.

4. Connect the W55RP20 EVB Pico to your PC (desktop or laptop) using a USB Type-C cable.

Step 3: Setup Example

Please refer to the link below to install the MicroPython firmware on the Raspberry Pi Pico.

Please refer to the link below for instructions on how to use the W55RP20 S2E.

Step 4: Upload Code

  • Raspberry Pi Pico

Open Thonny IDE and connect to the Raspberry Pi Pico. Upload the following driver and example files to the Pico's storage.

PICO's storage

Required Files:

  1. w55rp20_s2e_uart.py (Required for UART mode)
  2. w55rp20_s2e_spi.py (Required for SPI mode)

Example Application Files (Choose one to test):

  • 08_web_server.py

Configuration: Before running an example, open the Python file you intend to use and modify the User Configuration section at the top.

# 06_webserver.py
#
# Web server example (Supports both SPI and UART modes):
# - Configure the module as TCP server + DHCP
# - Listen on local port and serve HTTP responses
# Select mode by changing the MODE variable below.

import time

# -------------------------------------------------------------------------
# Configuration
# -------------------------------------------------------------------------
MODE = "spi"   # Set to "spi" or "uart"

# IP Configuration Mode
USE_DHCP = True  # True: DHCP (IM=1), False: Static IP (IM=0)

# Network Configuration
LOCAL_IP    = "192.168.11.100"  # Local IP (Used when USE_DHCP=False)
SUBNET_MASK = "255.255.255.0"   # Subnet Mask (Used when USE_DHCP=False)
GATEWAY     = "192.168.11.1"    # Gateway (Used when USE_DHCP=False)
DNS_SERVER  = "8.8.8.8"         # DNS Server (Used when USE_DHCP=False)

LOCAL_PORT = "80"  # HTTP port to listen on
.
.
  • Note on Connection Status Check

Note: Real-time connection status verification using the ST (Status) command is recommended only for SPI mode. In UART mode, the module operates as a transparent data pipe. Sending AT commands (like ST) requires switching out of Data Mode using +++, which would interrupt the active Web Server connection. Therefore, this example relies on data polling for compatibility with both modes.

Step 5: Run

Pico (Thonny):

  • Open 08_web_server.py.
  • Run the script (F5).
  • If you used DHCP, check your Router's connected device list to find the "WIZnet" or "W55RP20" device IP.
  • If you used Static IP, use the IP you defined (e.g., 192.168.11.100).
  • Wait for the "Server is listening..." message.

 

Result:

  • Type the IP address in the address bar: http://192.168.11.100 (Replace with actual IP).
  • The browser should display the "W55RP20-S2E Web Server" page.
  • Thonny shell will show:
Documents
  • GitHub : W55RP20-S2E_master_Micropython

Comments Write