Raspberry Pi Pico W
Making A Basic Web Server

This page sets up a basic web page served from the Pico W.

from time import sleep
from network import WLAN, STA_IF
from secrets import secrets
from socket import socket, getaddrinfo

html = """<!DOCTYPE html>
<html>
<head>
<title>Pico Test</title>
</head>
<body>
<h1>Pico W</h1>
<p>Hello from the Pico W.</p>
</body>
</html>
"""

wlan = WLAN(STA_IF)

def connect():
    wlan.active(True)
    wlan.config(pm = 0xa11140)
    wlan.connect(secrets["ssid"], secrets["password"])

    # try to connect or fail
    max_wait = 10
    while max_wait >0:
        if wlan.status() <0 or wlan.status()>=3:
            break
        max_wait -= 1
        print("Waiting for connection...")
        sleep(1)

    # connection error
    if wlan.status() != 3:
        return False
    else:
        status = wlan.ifconfig()
        print("Connected to", secrets["ssid"], "on", status[0])
        print()
        return True

if not connect():
    print("Couldn't connect to WiFi.")
else:
    print("We're Online.")
    print()
    addr = getaddrinfo('0.0.0.0', 80)[0][-1]
    s = socket()
    s.bind(addr)
    s.listen()
    print("Listening on", addr)
    while True:
        try:
            cl, addr = s.accept()
            print("Client connected from", addr)
            cl_file = cl.makefile('rwb', 0)
            while True:
                line = cl_file.readline()
                if not line or line == b'\r\n':
                    break
            response = html
            cl.send('HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n')
            cl.send(response)
            cl.close()
        except OSError as e:
            cl.close()
            print("Connection closed")

You use the IP address that is printed to connect to the Pico W from another device on the same WiFi network. Make sure that you are on the same network. In a home, that's unlikely to be a problem. In a school, your WiFi and wired networks may not be the quite the same. I used a phone to connect to this page. The basic HTML is rendered quite small on a phone so I zoomed in for this test shot. You can use frameworks for responsive design to do a more phone-friendly job in more advanced projects. This is just to get things working.

Pico Circuit