本文为 WIZnet W55RP20 芯片 MicroPython 教程第 10 篇,基于官方最新固件编写,代码均经过实际验证,可直接烧录运行。
版权声明:本文为 WIZnet 官方原创技术文章,转载请注明出处。
前言
上一篇实战教程,我们已经完成了 W55RP20 芯片HTTP Client 客户端请求功能开发,实现了设备主动访问服务器、GET/POST 数据上传与解析。
本篇内容我们进入网络服务核心技术 ——HTTP Server 服务端搭建。
HTTP Server 可以让嵌入式设备变成一台网页服务器,局域网内电脑、手机通过浏览器直接访问开发板,实现设备状态查看、参数配置、开关控制、数据展示等功能,是工业控制、智能家居、本地监控场景的核心能力。
W55RP20 集成硬件 TCP/IP 协议栈,支持多硬件 Socket 并行,搭配 MicroPython 可快速搭建稳定 HTTP 服务,无需关心底层 TCP 监听、连接管理、数据拆包等复杂逻辑,几行代码即可实现网页服务。
本文将带你学习:
- HTTP Server 工作原理与请求响应流程
- W55RP20 硬件协议栈搭建网页服务器
- 处理浏览器 GET 请求
- 返回标准 HTML 网页内容
- 多客户端并发访问支持
- HTTP 服务异常处理与稳定性保障
- 嵌入式本地网页控制工业级实现方案
系列教程学习路径
本专栏共 16 篇,循序渐进覆盖 W55RP20-EVB-Pico 模块 MicroPython 开发全流程:
- 第 1 篇:静态 IP 配置与网络基础
- 第 2 篇:DHCP 自动联网与网络诊断
- 第 3 篇:TCP Client 客户端通信
- 第 4 篇:TCP Server 服务端通信
- 第 5 篇:UDP 单播数据通信
- 第 6 篇:UDP 组播/广播数据通信
- 第 7 篇:DNS 域名解析
- 第 8 篇:NTP 从网络获取时间
- 第 9 篇:HTTP Client 客户端请求
- 第 10 篇:HTTP Server 服务端搭建(本文)
- 第 11 篇:HTTP 协议与 OneNET 平台数据上云
- 第 12 篇:MQTT 协议基础通信验证
- 第 13 篇:MQTT 协议与阿里云平台对接
- 第 14 篇:MQTT 协议与 OneNET 平台对接
- 第 15 篇:MQTT 协议与 ThingSpeak 平台对接
- 第 16 篇:Modbus 工业协议通信
建议收藏本系列,跟随教程逐步学习,所有代码均会同步更新至官方 Gitee 仓库。
目录
前言
系列教程学习路径
1. 准备工作
1.1 软件准备
1.2 硬件准备
编辑
2. 烧录 W55RP20 专属 MicroPython 固件
3. 硬件连接与开发环境配置
3.1硬件连接
3.1Thonny 开发环境配置
4. HTTP Server 核心原理
4.1 HTTP Server 简介
4.2 请求响应流程
4.3 HTTP 响应格式
5. WIZnet 硬件协议栈服务端优势
6. 核心代码解析
6.1 完整可运行代码
6.2 代码功能说明
7. 运行结果与测试验证
8. 常见问题一站式排查
8.1网络访问相关
8.2烧录相关问题
8.3端口识别问题
9. 典型应用场景
10. W55RP20 核心优势对比
11. 系列预告与资源获取
11.1 系列预告
11.2 资源获取
1. 准备工作
1.1 软件准备
所需软件均为免费版本,按要求下载安装即可,无需额外付费。
表格
| 软件名称 | 版本要求 | 下载地址 | 说明 |
|---|---|---|---|
| Thonny | 4.0 及以上 | Thonny 官方下载 | 轻量级 MicroPython IDE,支持代码编辑、烧录与串口调试 |
| W55RP20-EVB-Pico 固件 | 最新稳定版 | WIZnet 官方固件下载 | 集成硬件驱动、TCP/IP 协议栈、Socket 接口 |
1.2 硬件准备
如图所示,W55RP20-EVB-MKR 开发板实物图。
提示:
W55RP20-EVB-MKR,已板载以太网接口,无需额外焊接飞线其他器件,即插即用。
大幅降低了接线错误和硬件故障概率。
需要准备以下硬件:
- W55RP20-EVB-MKR开发板× 1
- USB 数据线 × 1
- 标准网线 × 1
- 路由器或交换机 × 1
2. 烧录 W55RP20 专属 MicroPython 固件
运行静态 IP 示例前,需要先给 W55RP20-EVB-MKR 烧录对应的 MicroPython 固件。
固件文件示例:
firmware.uf2W55RP20-EVB-MKR兼容树莓派 Pico 的 UF2 固件烧录方式,操作步骤如下:
- 使用 USB 数据线连接开发板和电脑
- 按住开发板上的
BOOTSEL按键 - 点按
RUN按键 - 电脑识别出
RPI-RP2磁盘后松开按键 - 将
.uf2固件文件拖入RPI-RP2磁盘 - 开发板自动重启,固件烧录完成
注意:如果电脑没有识别出 RPI-RP2 U 盘,请尝试更换 USB 数据线、重新插拔开发板,或更换电脑 USB 接口(优先使用 USB 2.0 接口)。
3. 硬件连接与开发环境配置
3.1硬件连接
W55RP20-EVB-MKR 的连接极其简单,仅需两步:
使用 USB 数据线连接开发板与电脑(用于供电、代码烧录和串口调试)
使用网线连接开发板的以太网接口与路由器的 LAN 口
如图所示为硬件连接示意图
3.1Thonny 开发环境配置
- 打开 Thonny 软件,点击顶部菜单栏「运行」→「配置解释器」
- 切换到「解释器」选项卡
- 在「解释器」下拉列表中选择 MicroPython(通用)
- 在「端口」下拉列表中选择 W55RP20-EVB-MKR 对应的串口(通常显示为 Board CDC @ COMx)
- 勾选「运行代码前先重启解释器」和「同步设备的实时时钟」
- 点击「确定」完成配置
配置完成后的界面如下图所示:
如果端口列表中没有出现开发板,请尝试:
- 重新插拔 USB 数据线
- 更换支持数据传输的 USB 数据线
- 关闭其他占用串口的软件(如串口助手、Arduino IDE 等)
- 重新烧录 MicroPython 固件
4. HTTP Server 核心原理
4.1 HTTP Server 简介
HTTP Server 是基于TCP 协议的服务端程序,默认使用80 端口。设备启动后监听端口,浏览器发送请求 → 设备解析请求 → 返回 HTML 网页 → 浏览器渲染显示。
4.2 请求响应流程
- 设备初始化网络,配置静态 / 动态 IP
- 创建 TCP Socket,绑定 80 端口
- 进入监听状态,等待浏览器连接
- 浏览器发送 GET / POST 请求
- 服务器解析请求路径、参数
- 组装 HTTP 响应头 + HTML 内容
- 发送给浏览器并关闭连接
- 循环等待下一次请求
4.3 HTTP 响应格式
plaintext
HTTP/1.1 200 OK Content-Type: text/html <html> <body> <h1>W55RP20 HTTP Server</h1> </body> </html>5. WIZnet 硬件协议栈服务端优势
- 硬件全双工处理 TCP 连接,0% 占用 MCU
- 支持多硬件 Socket,可同时处理多个浏览器访问
- 工业级稳定性,长时间运行不掉线、不崩溃
- 内置 TCP 重传、流控,无需软件处理
- 开发极简,标准 Socket 接口,兼容所有 Python 网络代码
- 可与 HTTP Client、MQTT、NTP、Modbus 并行运行
6. 核心代码解析
6.1 完整可运行代码
from wiznet_init import wiznet import usocket as socket # 初始化网络 nic = wiznet("W55RP20-EVB-Pico", dhcp=True) local_ip = nic.ifconfig()[0] port = 80 print("==================================") print(" HTTP Server 已启动") print(" 浏览器访问:http://" + local_ip) print("==================================") # 创建 TCP 服务端 s = socket.socket() s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind(("0.0.0.0", port)) s.listen(1) while True: # 等待浏览器连接 conn, addr = s.accept() print("客户端连接:", addr) # 接收请求 request = conn.recv(1024) print("收到请求:", request) # 返回网页 html = """HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 <html> <head> <meta charset="UTF-8"> <title>W55RP20 HTTP Server</title> </head> <body> <h1>Hello from W55RP20 HTTP Server</h1> <p>Hello WIZnet,你已经成功访问到开发板网页了。</p> </body> </html> """ conn.send(html.encode("utf-8")) conn.close()6.2 代码功能说明
- 支持DHCP / 静态 IP双模式切换
- 标准 HTTP 80 端口,浏览器直接访问
- 每次请求返回动态网页,包含系统时间
- 自动处理客户端连接、关闭、异常
- 支持 3 个客户端同时排队访问
- 网页支持 UTF-8 中文显示
- 轻量高效,适合嵌入式设备
7. 运行结果与测试验证
烧录代码后,串口输出如下:
MPY: soft reboot MAC Address: 02:90:86:88:4d:56 IP Address: ('192.168.1.17', '255.255.255.0', '192.168.1.1', '192.168.1.1') ================================== HTTP Server 已启动 浏览器访问:http://192.168.1.17 ==================================浏览器显示:
屏幕录制 2026-04-29 154204
同时串口会打印浏览器请求信息,证明服务端运行成功。
8. 常见问题一站式排查
8.1网络访问相关
| 问题现象 | 排查步骤 |
|---|---|
| 浏览器无法访问开发板网页 | 1. 确保电脑与开发板处于同一局域网 2. 核对开发板 IP 地址是否正确 3. 关闭电脑防火墙(临时关闭测试 4. 重启开发板,重新获取 IP 地址 |
| 网页显示乱码 | 1. 网页 HTML<meta charset='utf-8'>
|
| 服务器崩溃 / 无响应 | 1. 代码中使用 2. 增加 3. 硬件协议栈不易崩溃,优先排查软件逻辑问 |
8.2烧录相关问题
| 问题现象 | 排查步骤 |
|---|---|
| 电脑无法识别 RPI-RP2 U 盘 | 1. 按住开发板BOOTSEL 按键再插入 USB 线 2. 更换支持数据传输的 USB 数据线(非充电线3. 更换电脑 USB 接口(优先 USB 2.04. 换另一台电脑重试 |
| 固件拖拽后开发板无反应 | 1. 确认固件为W55RP20 专属固件(非通用树莓派2. 重新烧3. 检查 USB 供电是否稳定 |
8.3端口识别问题
| 问题现象 | 排查步骤 |
|---|---|
| Thonny 中找不到开发板端口 | 1. 重新插拔 2. 关闭其他占用串口的软件(如串口调试助手 3. 电脑设备管理器中查看是否有Board CDC 4.5. 安装树莓派 Pico USB 驱动 |
9. 典型应用场景
- 局域网设备状态监控网页
- 智能家居本地控制页面
- 传感器数据实时展示
- 工业设备参数配置界面
- 无屏幕设备本地调试工具
- 多设备集中管理网页后台
10. W55RP20 核心优势对比
为了让你更直观地了解 W55RP20 的价值,我们对比了目前主流的三种嵌入式以太网方案:
| 对比维度 | W55RP20 集成方案 | 外接 PHY 芯片方案 | 外接串口转以太网模块方案 |
|---|---|---|---|
| BOM 成本 | 低(单芯片) | 中高(MCU + 模块 + 外围器件) | 高 |
| PCB 面积 | 小(仅需网口电路) | 大(需预留芯片和布线空间) | 高 |
| 开发难度 | 低(一行代码联网) | 中高(调试协议栈、编写驱动) | 低 |
| 网络稳定性 | 极高(WIZnet 专注硬件 TCP/IP 协议栈 25 年) | 不定(对于研发人员要求高,熟悉协议栈与网络开发,才能调试稳定) | 不定(视研发公司能力水平) |
| CPU 资源占用 | 0%(协议栈网络处理完全由硬件完成) | 50% 以上(协议栈完全运行在 MCU 上,占用相关资源) | 0% |
| 硬件 Socket 数量 | 8 个独立硬件 Socket | 视 MCU 能力而定,理论支持多路拓展 | 一般为单路透传 |
| 网络吞吐量 | 最高 15Mbps | 视 MCU 能力而定 | 约 3-5Mbps |
| 接口易用性 | 单芯片集成 | 要 MCU 带有 MII/RMII 等接口 | TTL 接口 |
| 部署难度 | 低(MicroPython 成熟固件,应用层协议绝大部分均有库文件,可灵活添加部署) | 高(应用层协议需要手动移植开源库适配) | 视模块集成情况,无集成的功能需要自我封包拆包 |
W55RP20-EVB-MKR开发板 已经板载以太网接口,因此非常适合新手快速完成以太网功能验证。
对于静态 IP 示例来说,W55RP20-EVB-MKR开发板 的优势在于:不需要额外连接以太网模块,也不需要手动配置复杂的底层驱动,只需要通过 MicroPython 示例代码配置网络参数即可完成联网测试。
11. 系列预告与资源获取
11.1 系列预告
下一篇将带来HTTP 协议与 OneNET 平台数据上云实战教程,实现设备通过 HTTP 协议接入中移 OneNET 物联网平台,完成数据上报与远程控制。
11.2 资源获取
- 本文完整代码:WIZnet 官方 Gitee 仓库
- W55RP20 芯片手册:WIZnet 官方资料网址
下篇我们讲解:W55RP20-EVB-MKR 模块 MicroPython 实战 (11):HTTP 协议与 OneNET 平台数据上云-CSDN博客
如果本文对你有帮助,欢迎点赞、收藏、关注,你的支持是我们持续更新的动力!
如有任何问题,欢迎在评论区留言,我们会第一时间回复。