KevsRobots Learning Platform
72% Percent Complete
By Kevin McAleer, 2 Minutes
Page last updated May 10, 2025
Bluetooth is great, but with the Pico W, you can control your robot over Wi-Fi — even from a browser on your phone or computer. In this lesson, we’ll host a simple web interface that sends commands to your robot in real time.
⚠️ This lesson requires the
rp2-pico-w
MicroPython firmware (with networking support).
Update your Pico W with the latest MicroPython firmware, then connect it to Wi-Fi:
import network
import time
ssid = 'YOUR_SSID'
password = 'YOUR_PASSWORD'
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)
while not wlan.isconnected():
time.sleep(1)
print('Connected, IP:', wlan.ifconfig()[0])
This example creates a web server that lets you send movement commands by clicking buttons:
import socket
html = """<!DOCTYPE html>
<html>
<head><title>Robot Control</title></head>
<body>
<h2>Robot Control Panel</h2>
<form>
<button name="cmd" value="f">Forward</button>
<button name="cmd" value="b">Backward</button><br><br>
<button name="cmd" value="l">Left</button>
<button name="cmd" value="r">Right</button><br><br>
<button name="cmd" value="s">Stop</button>
</form>
</body>
</html>
"""
addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]
s = socket.socket()
s.bind(addr)
s.listen(1)
print("Listening on", addr)
while True:
cl, addr = s.accept()
print("Client connected:", addr)
request = cl.recv(1024).decode()
print("Request:", request)
if '/?cmd=f' in request:
forward()
elif '/?cmd=b' in request:
backward()
elif '/?cmd=l' in request:
left()
elif '/?cmd=r' in request:
right()
elif '/?cmd=s' in request:
stop()
cl.send('HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n')
cl.send(html)
cl.close()
Make sure to define forward(), backward(), etc., from earlier lessons.
Now your robot has a wireless dashboard, ready to drive from across the room!
Next up: Creating Simple Autonomous Behavior
You can use the arrows ← →
on your keyboard to navigate between lessons.