You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Raspberry Pi Pico W上使用CircuitPython搭建Web服务器?

在Raspberry Pi Pico W(CircuitPython)上搭建Web服务器(基于已有的软AP)

准备工作

确保你的Pico W运行CircuitPython 7.0或更高版本,并将adafruit_httpserver库文件夹放入Pico W的lib目录中(从CircuitPython官方库集合中获取)。

完整整合代码

将以下代码替换或整合你现有的AP代码:

import wifi
import socketpool
from adafruit_httpserver import Server, Request, Response, GET

# 软AP配置
ap_ssid = "myAP"
ap_password = "password123"

# 启用WiFi并启动软AP
wifi.radio.enabled = True
wifi.radio.start_ap(ssid=ap_ssid, password=ap_password)

print(f"AP已创建:SSID={ap_ssid}, 密码={ap_password}")
print(f"AP的IP地址:{wifi.radio.ipv4_address}")

# 创建套接字池,用于HTTP服务器
pool = socketpool.SocketPool(wifi.radio)
# 初始化服务器,绑定到AP的IP和80端口
server = Server(pool, "/", wifi.radio.ipv4_address, 80)

# 定义根路径的请求处理函数
@server.route("/", method=GET)
def handle_index(request: Request):
    # 返回自定义HTML内容
    html_content = f"""
    <html>
        <head><title>Pico W Web Server</title></head>
        <body>
            <h1>成功连接到Pico W服务器!</h1>
            <p>服务器IP:{wifi.radio.ipv4_address}</p>
            <p>这是一个基于CircuitPython的轻量Web服务器</p>
        </body>
    </html>
    """
    return Response(request, html_content, content_type="text/html")

# 启动服务器,持续处理请求
print("Web服务器已启动,请访问 http://{}:80".format(wifi.radio.ipv4_address))
server.serve_forever()

关键代码说明

  • socketpool:CircuitPython专用的套接字管理工具,替代标准Python的socket模块,适配微控制器资源。
  • adafruit_httpserver:官方维护的轻量HTTP服务器库,语法简洁,适合Pico W这类资源有限的设备,比wgiserver更易上手。
  • @server.route():装饰器用于绑定URL路径和处理函数,这里定义了根路径/的GET请求处理逻辑。
  • server.serve_forever():让服务器持续运行,监听并响应客户端的请求。

调试要点

  1. 手机连接myAP热点后,确认手机IP处于192.168.4.x网段(Pico W的AP默认网段)。
  2. 查看Pico W的串口输出,确认AP启动成功且服务器IP正确。
  3. 若访问失败,检查lib目录下的adafruit_httpserver库是否完整,CircuitPython版本是否达标。

内容的提问来源于stack exchange,提问作者Baseed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 18:32:37