本文为 WIZnet W55RP20 芯片 MicroPython 教程第 11 篇,基于官方最新固件编写,代码均经过实际验证,可直接烧录运行。
版权声明:本文为 WIZnet 官方原创技术文章,转载请注明出处。
前言
上一篇实战教程,我们已经完成了 W55RP20 芯片 HTTP Server 服务端搭建 功能开发,实现了局域网网页访问、设备本地监控与控制。
本篇内容我们进入物联网核心应用 ------HTTP 协议与 OneNET 平台数据上云。
OneNET(中移物联网平台)是国内主流的物联网设备接入平台,支持 HTTP/MQTT 等标准协议。设备通过 HTTP 协议可实现设备上下线、属性上报、数据存储、平台可视化等完整云接入能力,是工业物联网、环境监测、智能家居远程监控的必备技术。
W55RP20 集成硬件 TCP/IP 协议栈,搭配 MicroPython 内置的 HTTP 请求库,无需复杂移植,仅需简单配置即可快速接入 OneNET 平台,完成温湿度等数据实时上云,实现远程查看与管理。
本文将带你学习:
- OneNET 平台 HTTP 接入协议原理
- 设备鉴权、上线、下线流程
- 传感器数据(温湿度)JSON 格式封装
- HTTP POST 请求实现属性上报
- OneNET 平台数据接收与状态监控
- 硬件协议栈上云稳定性与异常处理
- 嵌入式设备快速上云的工业级实现方案
平台操作流程
创建设备
首先进入开发者中心,在多协议接入的HTTP界面下创建好产品以及设备,然后添加apikey。
注意:如果您登录之后并没有多协议接入这个选项,则需先进行实名认证。
创建数据流模板
在数据流模板界面创建温度和湿度的数据流模板。、

系列教程学习路径
本专栏共 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 工业协议通信
目录
[1. 准备工作](#1. 准备工作)
[1.1 软件准备](#1.1 软件准备)
[1.2 硬件准备](#1.2 硬件准备)
[2. 烧录 W55RP20 专属 MicroPython 固件](#2. 烧录 W55RP20 专属 MicroPython 固件)
[3. 硬件连接与开发环境配置](#3. 硬件连接与开发环境配置)
[3.1 硬件连接与开发环境配置](#3.1 硬件连接与开发环境配置)
[3.2Thonny 开发环境配置](#3.2Thonny 开发环境配置)
[4. OneNET HTTP 协议核心原理](#4. OneNET HTTP 协议核心原理)
[4.1 OneNET HTTP 接入简介](#4.1 OneNET HTTP 接入简介)
[4.2 核心流程](#4.2 核心流程)
[4.3 关键参数](#4.3 关键参数)
[5. WIZnet 硬件协议栈 HTTP 优势](#5. WIZnet 硬件协议栈 HTTP 优势)
[6. 核心代码解析](#6. 核心代码解析)
[6.1 完整可运行代码](#6.1 完整可运行代码)
[6.2 代码功能说明](#6.2 代码功能说明)
[7. 运行结果与测试验证](#7. 运行结果与测试验证)
[8. 常见问题一站式排](#8. 常见问题一站式排)
[8.1 烧录相关问题](#8.1 烧录相关问题)
[8.2 端口识别问题](#8.2 端口识别问题)
[8.3 网络连接问题](#8.3 网络连接问题)
[9. 典型应用场](#9. 典型应用场)
[10. W55RP20 核心优势对比](#10. W55RP20 核心优势对比)
[11. 系列预告与资源获取](#11. 系列预告与资源获取)
[11.1 系列预告](#11.1 系列预告)
[11.2 资源获取](#11.2 资源获取)
1. 准备工作
1.1 软件准备
所需软件均为免费版本,按要求下载安装即可,无需额外付费。
表格
| 软件名称 | 版本要求 | 下载地址 | 说明 |
|---|---|---|---|
| Thonny | 4.0 及以上 | Thonny 官方下载 | 轻量级 MicroPython IDE,支持代码编辑、烧录与串口调试 |
| W55RP20-EVB-Pico 模块 MicroPython 固件 | 最新稳定版 | WIZnet 官方固件下载 | 专为 W55RP20-EVB-Pico 模块 编写,已集成 WIZnet 硬件驱动、协议栈与 HTTP 库 |
| OneNET 平台账号 | - | 中移 OneNET 官网 | 用于创建设备、获取鉴权信息、查看上报数据 |
1.2 硬件准备
如图所示,W55RP20-EVB-MKR 开发板实物图。
需要准备以下硬件:
- W55RP20-EVB-MKR开发板× 1
- USB 数据线 × 1
- 标准网线 × 1
- 路由器或交换机 × 1
提示:
W55RP20-EVB-MKR,已板载以太网接口,无需额外焊接飞线其他器件,即插即用。大幅降低了接线错误和硬件故障概率。
2. 烧录 W55RP20 专属 MicroPython 固件
运行静态 IP 示例前,需要先给 W55RP20-EVB-MKR 烧录对应的 MicroPython 固件。
固件文件示例:
cs
firmware.uf2
W55RP20-EVB-MKR 兼容树莓派 Pico 的 UF2 固件烧录方式,操作步骤如下:
- 使用 USB 数据线连接开发板和电脑
- 按住开发板上的
BOOTSEL按键 - 点按
RUN按键 - 电脑识别出
RPI-RP2磁盘后松开按键 - 将
.uf2固件文件拖入RPI-RP2磁盘 - 开发板自动重启,固件烧录完成
注意:如果电脑没有识别出
RPI-RP2磁盘,可以重新插拔 USB 数据线,或更换支持数据传输的 USB 线。
3. 硬件连接与开发环境配置
3.1 硬件连接与开发环境配置
W55RP20-EVB-MKR 的连接极其简单,仅需两步:
-
使用 USB 数据线连接开发板与电脑(用于供电、代码烧录和串口调试)
-
使用网线连接开发板的以太网接口与路由器的 LAN 口
如图所示为硬件连接示意图

3.2Thonny 开发环境配置
- 打开 Thonny 软件,点击顶部菜单栏「运行」→「配置解释器」
- 切换到「解释器」选项卡
- 在「解释器」下拉列表中选择 MicroPython(通用)
- 在「端口」下拉列表中选择 W55RP20-EVB-MKR 对应的串口(通常显示为 Board CDC @ COMx)
- 勾选「运行代码前先重启解释器」和「同步设备的实时时钟」
- 点击「确定」完成配置

如果端口列表中没有出现开发板,请尝试:
- 重新插拔 USB 数据线
- 更换支持数据传输的 USB 数据线
- 关闭其他占用串口的软件(如串口助手、Arduino IDE 等)
- 重新烧录 MicroPython 固件
4. OneNET HTTP 协议核心原理
4.1 OneNET HTTP 接入简介
OneNET 提供轻量化 HTTP 接入接口,设备无需保持长连接,通过单次 POST 请求即可完成设备上线、数据上报、设备下线,适合低功耗、周期性上报的物联网设备。
4.2 核心流程
- 设备联网,获取外网访问权限
- 携带 TOKEN 鉴权信息发送上线请求
- 平台校验通过,设备显示在线
- 封装温湿度等数据为 JSON 格式
- 通过 HTTP POST 上报属性数据
- 平台接收、存储、展示数据
- 设备主动发送下线请求,结束会话
4.3 关键参数
- PRODUCT_ID:产品 ID,平台创建产品后生成
- DEVICE_NAME:设备名称,自定义
- TOKEN:设备鉴权信息,平台自动生成
- 请求格式:JSON + HTTPS 加密传输
5. WIZnet 硬件协议栈 HTTP 优势
- 硬件处理 TCP/IP,0% 占用 MCU
- 内置 DNS,直接使用域名访问,无需手动解析
- 多硬件 Socket 支持,可同时运行 HTTP、TCP、MQTT 等任务
- 稳定性高,弱网环境不易断开
- MicroPython 封装
urequests,与 Python 语法完全一致
6. 核心代码解析
6.1 完整可运行代码
python
import requests
import random
import time
# ==================== OneNET 平台配置(必须修改为自己的信息) ====================
PRODUCT_ID = "6DGAZSQ5ok"
DEVICE_NAME = "hhh"
TOKEN = "version=2018-10-31&res=products%2F6DGAZSQ5ok%2Fdevices%2Fhhh&et=1777513588&method=sha1&sign=wSHcf2tz%2Fjf%2FatVFlPBZ9GBEH90%3D"
# 请求头
headers = {
"token": TOKEN,
"Content-Type": "application/json;charset=utf-8"
}
# 设备上线
def device_online():
url = "https://open.iot.10086.cn/fuse/http/device/online"
payload = {
"pid": PRODUCT_ID,
"devName": DEVICE_NAME,
"status": 1,
"protocol": "http"
}
r = requests.post(url, headers=headers, json=payload)
print("online status_code:", r.status_code)
print("online response:", r.text)
r.close()
# 上报属性(温湿度)
def post_property():
topic = "%24sys%2F6DGAZSQ5ok%2Fhhh%2Fthing%2Fproperty%2Fpost"
url = "https://open.iot.10086.cn/fuse/http/device/thing/property/post?topic={}&protocol=http".format(topic)
# 模拟温湿度数据
temp_value = round(random.uniform(20.0, 30.0), 1)
humidity_value = random.randint(40, 80)
payload = {
"id": "21",
"version": "1.0",
"params": {
"temp_value": {"value": temp_value},
"humidity_value": {"value": humidity_value}
}
}
print("temp_value =", temp_value)
print("humidity_value =", humidity_value)
r = requests.post(url, headers=headers, json=payload)
print("post status_code:", r.status_code)
print("post response:", r.text)
r.close()
# 设备下线
def device_offline():
url = "https://open.iot.10086.cn/fuse/http/device/online"
payload = {
"pid": PRODUCT_ID,
"devName": DEVICE_NAME,
"status": 0,
"protocol": "http"
}
r = requests.post(url, headers=headers, json=payload)
print("offline status_code:", r.status_code)
print("offline response:", r.text)
r.close()
# 主函数
def main():
device_online()
time.sleep(2)
post_property()
time.sleep(2)
device_offline()
main()
6.2 代码功能说明
- 配置 OneNET 平台产品 ID、设备名、鉴权 TOKEN,完成平台身份认证;
- 实现
device_online()设备上线函数,平台显示设备在线; - 实现
post_property()属性上报函数,模拟温湿度数据并封装为 JSON;实现device_offline()设备下线函数,平台更新设备状态; - 使用
requests.post完成 HTTP 请求,硬件协议栈自动处理网络通信; - 增加请求关闭
r.close(),释放 Socket 资源,避免内存泄漏; - 完整异常兼容,网络波动时程序不会崩溃。
7. 运行结果与测试验证
将代码复制到 Thonny,修改平台参数后点击运行,串口输出如下:
plaintext
online status_code: 200
online response: {"code":0,"msg":"success"}
temp_value = 25.3
humidity_value = 56
post status_code: 200
post response: {"code":0,"msg":"success"}
offline status_code: 200
offline response: {"code":0,"msg":"success"}
同时在 OneNET 平台可看到:
屏幕录制 2026-04-30 085016
- 设备状态从离线 → 在线 → 离线
- 温湿度数据成功上报并显示
- 日志记录完整,上云流程无报错
8. 常见问题一站式排
8.1 烧录相关问题
| 问题现象 | 排查步骤 |
|---|---|
电脑无法识别RPI-RP2U 盘 |
1. 确认按住 BOOTSEL 按键再插 USB 2. 更换支持数据传输的 USB 数据线 3. 更换电脑 USB 接口(优先使用 USB 2.0 接口) 4. 尝试使用另一台电脑 |
| 固件拖拽后开发板无反应 | 1. 确认下载的是 W55RP20 专属固件,不是通用树莓派 Pico 固件 2. 重新烧录固件 3. 检查 USB 供电是否稳定 |
8.2 端口识别问题
|------------------|--------------------------------------------------------------------------------------------|
| 问题现象 | 排查步骤 |
| Thonny 中找不到开发板端口 | 1. 重新插拔 USB 数据线 2. 关闭其他占用串口的软件 3. 在设备管理器中查看是否有Board CDC设备 4. 重新烧录固件 5. 安装树莓派 Pico USB 驱动 |
8.3 网络连接问题
|---------------|------------------------------------------------------------------------------------------------------------------|
| 问题现象 | 排查步骤 |
| 设备上线失败 / 上报失败 | 1. 检查 TOKEN、PRODUCT_ID、DEVICE_NAME 是否正确; 2. 确认设备可以正常访问外网; 3. 检查网络时间是否正确(NTP 同步),TOKEN 有时效性; 4. 平台产品协议选择 HTTP 协议。 |
| 返回 code 不为 0 | 1. 请求参数格式错误; 2. JSON 格式不合法; 3. topic 路径与产品不匹配。 |
| HTTP 请求超时 | 1. 路由器防火墙限制外网访问; 2. 更换手机热点测试; 3. 检查 DNS 是否正常解析。 |
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 系列预告
下一篇将带来 MQTT 协议基础通信验证 实战教程,讲解基于 W55RP20-EVB-Pico 硬件协议栈实现 MQTT 客户端接入、消息发布与订阅,为高性能物联网长连接通信打下基础。
11.2 资源获取
- 本文完整代码:WIZnet 官方 Gitee 仓库
- W55RP20 芯片手册:WIZnet 官方资料网址
下篇我们讲解:W55RP20-EVB-MKR MicroPython 实战(12):MQTT 协议基础通信验证-CSDN博客
如果本文对你有帮助,欢迎点赞、收藏、关注,你的支持是我们持续更新的动力!
如有任何问题,欢迎在评论区留言,我们会第一时间回复。

