本文为 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 软件准备所需软件均为免费版本按要求下载安装即可无需额外付费。表格软件名称版本要求下载地址说明Thonny4.0 及以上Thonny 官方下载轻量级 MicroPython IDE支持代码编辑、烧录与串口调试W55RP20-EVB-Pico 固件最新稳定版WIZnet 官方固件下载集成硬件驱动、TCP/IP 协议栈、Socket 接口1.2 硬件准备如图所示W55RP20-EVB-MKR 开发板实物图。提示W55RP20-EVB-MKR,已板载以太网接口无需额外焊接飞线其他器件即插即用。大幅降低了接线错误和硬件故障概率。需要准备以下硬件W55RP20-EVB-MKR开发板× 1USB 数据线 × 1标准网线 × 1路由器或交换机 × 12. 烧录 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 响应格式plaintextHTTP/1.1 200 OK Content-Type: text/html html body h1W55RP20 HTTP Server/h1 /body /html5. 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, dhcpTrue) 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; charsetutf-8 html head meta charsetUTF-8 titleW55RP20 HTTP Server/title /head body h1Hello from W55RP20 HTTP Server/h1 pHello 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. 网页 HTMLmeta charsetutf-8br2. 服务器端数据发送时使用encode (utf-8) 编码服务器崩溃 / 无响应1. 代码中使用conn.close()及时释放网络连接2. 增加try-except异常捕获机制避免程序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 CDC4.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博客如果本文对你有帮助欢迎点赞、收藏、关注你的支持是我们持续更新的动力如有任何问题欢迎在评论区留言我们会第一时间回复。
W55RP20-EVB-MKR 模块 MicroPython 实战 (10):HTTP Server 服务端搭建
本文为 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 软件准备所需软件均为免费版本按要求下载安装即可无需额外付费。表格软件名称版本要求下载地址说明Thonny4.0 及以上Thonny 官方下载轻量级 MicroPython IDE支持代码编辑、烧录与串口调试W55RP20-EVB-Pico 固件最新稳定版WIZnet 官方固件下载集成硬件驱动、TCP/IP 协议栈、Socket 接口1.2 硬件准备如图所示W55RP20-EVB-MKR 开发板实物图。提示W55RP20-EVB-MKR,已板载以太网接口无需额外焊接飞线其他器件即插即用。大幅降低了接线错误和硬件故障概率。需要准备以下硬件W55RP20-EVB-MKR开发板× 1USB 数据线 × 1标准网线 × 1路由器或交换机 × 12. 烧录 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 响应格式plaintextHTTP/1.1 200 OK Content-Type: text/html html body h1W55RP20 HTTP Server/h1 /body /html5. 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, dhcpTrue) 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; charsetutf-8 html head meta charsetUTF-8 titleW55RP20 HTTP Server/title /head body h1Hello from W55RP20 HTTP Server/h1 pHello 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. 网页 HTMLmeta charsetutf-8br2. 服务器端数据发送时使用encode (utf-8) 编码服务器崩溃 / 无响应1. 代码中使用conn.close()及时释放网络连接2. 增加try-except异常捕获机制避免程序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 CDC4.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博客如果本文对你有帮助欢迎点赞、收藏、关注你的支持是我们持续更新的动力如有任何问题欢迎在评论区留言我们会第一时间回复。