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)
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
MODEin 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 Pico | W55RP20 EVB Pico |
| GPIO4 (UART_TX) | GPIO5 (UART_RX) |
| GPIO5 (UART_RX) | GPIO4 (UART_TX) |
| GPIO13 (MODE_SEL) | GPIO13 (MODE_SEL) |
| GND | GND |
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) |
| GND | GND |
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
- Raspberry Pi Pico (Master) : Getting started with Raspberry Pi Pico (MicroPython)
Please refer to the link below to install the MicroPython firmware on the Raspberry Pi Pico.
- W55RP20 EVB Pico : Getting started with W55RP20 EVB 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.
Required Files:
w55rp20_s2e_uart.py(Required for UART mode)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:

