如何在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():让服务器持续运行,监听并响应客户端的请求。
调试要点
- 手机连接
myAP热点后,确认手机IP处于192.168.4.x网段(Pico W的AP默认网段)。 - 查看Pico W的串口输出,确认AP启动成功且服务器IP正确。
- 若访问失败,检查
lib目录下的adafruit_httpserver库是否完整,CircuitPython版本是否达标。
内容的提问来源于stack exchange,提问作者Baseed
相关产品推荐
相关产品推荐

