本文为 WIZnet W55RP20 芯片 MicroPython 教程第 1 篇,基于官方最新固件编写,代码均经过实际验证,可直接烧录运行。
版权声明:本文为 WIZnet 官方原创技术文章,转载请注明出处。


前言

在嵌入式物联网开发中,网络连接永远是第一步,也是最容易踩坑的一步。

传统以太网开发面临三大普遍痛点:

  1. 资源占用高: 软件 TCP/IP 协议栈会占用 MCU 大量的 CPU 和内存资源,挤占主业务运行空间,实时性变差

  2. 开发难度大: 外接以太网模块需要手动接线、调试接口时序、编写底层驱动,新手入门周期长,时间开销大

  3. 调试稳定门槛高: 软件协议栈可参考资料少、问题定位困难,想要达到长期稳定运行,需要深度掌握网络原理与丰富的网络调试经验

W55RP20 作为 WIZnet 最新推出的 SiP 系统级芯片,它将微控制器与硬件 TCP/IP 以太网控制器集成在单一芯片中,TCP/IP 协议栈处理完全由硬件完成,不占用任何 CPU 资源。

同时 W55RP20-EVB-MKR 开发板 兼容树莓派 Pico 的引脚和软件生态,实现了“即插即用”的工业级以太网开发体验。

本文将带你完成 W55RP20芯片 的 MicroPython 环境搭建与静态 IP 配置测试。学完本文,你将掌握:

  • W55RP20-EVB-MKR 开发板 的固件烧录与环境配置
  • MicroPython 的基本概念
  • 静态 IP、子网掩码、网关和 DNS 的含义
  • 使用代码配置固定 IP 地址
  • 网络连通性验证与常见故障排查

系列教程学习路径

本系列共 16 篇,循序渐进覆盖从基础联网到工业级应用的全流程:

  1. 第 1 篇:静态 IP 配置与网络基础(本文)
  2. 第 2 篇:DHCP 自动联网与网络诊断
  3. 第 3 篇:TCP Client 客户端通信
  4. 第 4 篇:TCP Server 服务端通信
  5. 第 5 篇:UDP 单播数据通信
  6. 第 6 篇:UDP 组播/广播数据通信
  7. 第 7 篇:DNS 域名解析
  8. 第 8 篇:NTP 从网络获取时间
  9. 第 9 篇:HTTP Client 客户端请求
  10. 第 10 篇:HTTP Server 服务端搭建
  11. 第 11 篇:HTTP 协议与 OneNET 平台数据上云
  12. 第 12 篇:MQTT 协议基础通信验证
  13. 第 13 篇:MQTT 协议与阿里云平台对接
  14. 第 14 篇:MQTT 协议与 OneNET 平台对接
  15. 第 15 篇:MQTT 协议与 ThingSpeak 平台对接
  16. 第 16 篇:Modbus 工业协议通信

建议收藏本系列,跟随教程逐步学习,所有代码均会同步更新至官方 Gitee 仓库。


目录


1. MicroPython 简介

1.1 MicroPython 是什么

MicroPython 是一种面向微控制器和嵌入式设备的 Python 语言实现。

简单来说,它可以让开发者在开发板上运行类似 Python 的代码,用更简洁的语法完成 GPIO 控制、串口通信、SPI 通信、I2C 通信、网络通信等嵌入式功能开发。

相比传统 C/C++ 嵌入式开发,MicroPython 的代码更容易阅读,也更适合快速验证硬件功能和编写网络通信示例。

例如在 MicroPython 中,初始化网络、配置 IP 地址、打印运行结果,都可以通过较少的代码完成。

1.2 为什么使用 MicroPython 开发 W55RP20-EVB-MKR

W55RP20-EVB-MKR开发板支持 MicroPython 开发后,可以让以太网功能测试变得更简单。
在本示例中,只需要通过几行 Python 代码,就可以完成以下操作:

  1. 初始化 W55RP20-EVB-MKR 的以太网功能
  2. 设置静态 IP 地址
  3. 配置子网掩码、网关和 DNS
  4. 打印当前网络参数
  5. 通过 Thonny Shell 查看运行结果

对于初学者来说,MicroPython 的优势主要有:

优势 说明
代码简洁 语法接近 Python,容易阅读和修改
调试方便 可以通过 Thonny 直接运行和查看串口输出
上手快 不需要复杂的编译环境
适合验证 适合快速测试 GPIO、SPI、I2C、网络等功能
便于教学 示例代码更短,更容易理解运行流程

本篇文章将使用 MicroPython 在 W55RP20 上配置静态 IP 地址,帮助读者理解开发板如何手动接入局域网。


2. 静态 IP 是什么

2.1 静态 IP 与 DHCP 的区别

在局域网中,开发板想要进行 TCP、UDP、MQTT、HTTP 等网络通信,必须先拥有一个 IP 地址。

常见的 IP 获取方式有两种:

方式 说明 特点
DHCP 自动获取 由路由器自动分配 IP 地址 配置简单,适合快速测试
静态 IP 配置 手动指定 IP、子网掩码、网关和 DNS 地址固定,适合长期运行和调试

DHCP 的优点是简单,不需要手动填写网络参数。

静态 IP 的优点是地址固定,方便电脑端使用 ping、TCP Client、浏览器、MQTT 工具等方式直接访问开发板。

例如本文中将开发板固定设置为:

192.168.1.188

这样每次运行程序后,开发板都会使用同一个 IP 地址,方便后续网络通信测试。

2.2 IP、子网掩码、网关、DNS 说明

静态 IP 配置通常需要设置以下四个参数:

参数 示例值 说明
IP 地址 192.168.1.210 开发板在局域网中的固定地址
子网掩码 255.255.255.0 用于判断当前设备所在网段
网关 192.168.1.1 通常是路由器地址
DNS 192.168.1.1 用于域名解析,也可以填写公共 DNS

需要注意的是,判断是否处于同一网段时,需要同时看 IP 地址子网掩码

在本文示例中,子网掩码为 255.255.255.0,表示前三段 192.168.1 是网络号。因此开发板 IP 通常应设置为 192.168.1.xxx,例如 192.168.1.210

其中 xxx 建议选择局域网中未被其他设备占用的地址,避免 IP 地址冲突。


3. 准备工作

3.1 软件准备

软件名称 版本要求 下载地址 说明
Thonny 4.0 及以上 Thonny 官方下载 轻量级 MicroPython IDE,支持代码编辑、运行和串口调试
W55RP20 MicroPython 固件 最新稳定版 WIZnet 官方资料页面 专为 W55RP20 编写的 MicroPython 固件

3.2 硬件准备

如图所示,W55RP20-EVB-MKR 开发板实物图。

在这里插入图片描述

需要准备以下硬件:

  • W55RP20-EVB-MKR开发板× 1
  • USB 数据线 × 1
  • 标准网线 × 1
  • 路由器或交换机 × 1

提示:W55RP20-EVB-MKR ,已板载以太网接口,无需额外焊接飞线其他器件,即插即用。
大幅降低了接线错误和硬件故障概率。


4. 烧录 W55RP20 专属 MicroPython 固件

运行静态 IP 示例前,需要先给 W55RP20-EVB-MKR 烧录对应的 MicroPython 固件。

固件文件示例:

firmware.uf2

W55RP20-EVB-MKR 兼容树莓派 Pico 的 UF2 固件烧录方式,操作步骤如下:

  1. 使用 USB 数据线连接开发板和电脑
  2. 按住开发板上的 BOOTSEL 按键
  3. 点按 RUN 按键
  4. 电脑识别出 RPI-RP2 磁盘后松开按键
  5. .uf2 固件文件拖入 RPI-RP2 磁盘
  6. 开发板自动重启,固件烧录完成

注意:如果电脑没有识别出 RPI-RP2 磁盘,可以重新插拔 USB 数据线,或更换支持数据传输的 USB 线。


5. 硬件连接与开发环境配置

5.1 硬件连接

W55RP20-EVB-MKR 的连接极其简单,仅需两步:

  1. 使用 USB 数据线连接开发板与电脑(用于供电、代码烧录和串口调试)

  2. 使用网线连接开发板的以太网接口与路由器的 LAN 口

如图所示为硬件连接示意图

在这里插入图片描述

5.2 Thonny 开发环境配置

  1. 打开 Thonny 软件,点击顶部菜单栏「运行」→「配置解释器」

  2. 切换到「解释器」选项卡

  3. 在「解释器」下拉列表中选择 MicroPython(通用)

  4. 在「端口」下拉列表中选择 W55RP20-EVB-MKR 对应的串口(通常显示为 Board CDC @ COMx

  5. 勾选「运行代码前先重启解释器」和「同步设备的实时时钟」

  6. 点击「确定」完成配置

配置完成后的界面如下图所示:
在这里插入图片描述

如果端口列表中没有出现开发板,请尝试:

  • 重新插拔 USB 数据线
  • 更换支持数据传输的 USB 数据线
  • 关闭其他占用串口的软件(如串口助手、Arduino IDE 等)
  • 重新烧录 MicroPython 固件

6. 静态 IP 示例代码

6.1 完整代码

打开静态 IP 示例文件,或在 Thonny 中输入以下代码:

# 从 wiznet_init 模块中导入 wiznet 初始化函数
from wiznet_init import wiznet
import time

# 指定当前使用的开发板型号
BOARD = "W55RP20-EVB-MKR"

# 设置静态网络参数
NET_IP  = "192.168.1.210"      # 开发板的静态 IP 地址
NET_SN  = "255.255.255.0"      # 子网掩码
NET_GW  = "192.168.1.1"        # 网关地址
NET_DNS = "192.168.1.1"        # DNS 服务器地址


print("WIZnet chip network install example")

# 初始化 WIZnet 网卡
nic = wiznet(
    BOARD,          
    dhcp=False,     #关闭 DHCP,使用静态 IP
    ip=NET_IP,     
    sn=NET_SN,      
    gw=NET_GW,      
    dns=NET_DNS     
)

print("IP Address:", nic.ifconfig()[0])    
print("Subnet Mask:", nic.ifconfig()[1])   
print("Gateway:", nic.ifconfig()[2])      
print("DNS:", nic.ifconfig()[3])           

time.sleep(2)

print("try ping", nic.ifconfig()[0])

其中最关键的是:

dhcp=False

这表示关闭 DHCP 自动获取 IP,改为使用手动指定的静态 IP 参数。


7. 运行结果与网络验证

完成硬件连接和 Thonny 开发环境配置后,就可以运行静态 IP 示例程序,并查看 W55RP20-EVB-MKR 是否成功使用固定 IP 地址接入网络。


7.1 串口输出结果截图

在 Thonny 中点击运行按钮,或按 F5 运行程序。

运行后,Shell 窗口会输出类似以下内容:

>>> %Run -c $EDITOR_CONTENT

MPY: soft reboot
WIZnet chip network install example
Waiting for the network to connect...
Waiting for the network to connect...
MAC Address: 02:90:86:88:4d:56
IP Address: ('192.168.1.210', '255.255.255.0', '192.168.1.1', '192.168.1.1')
IP Address: 192.168.1.210
Subnet Mask: 255.255.255.0
Gateway: 192.168.1.1
DNS: 192.168.1.1
try ping 192.168.1.210
>>>

说明:程序运行初期打印的 Waiting for the network to connect... 是正常现象,这是 W55RP20 在等待网卡连接完成。具体打印次数取决于网络环境。

实际运行结果如下图所示:
在这里插入图片描述

从运行结果可以看到,开发板最终使用了固定 IP 地址:

192.168.1.210

网络参数如下:

字段 实际值 说明
IP 地址 192.168.1.210 W55RP20-EVB-MKR 的固定 IP 地址
子网掩码 255.255.255.0 当前局域网的子网掩码
网关 192.168.1.1 路由器地址
DNS 192.168.1.1 DNS 服务器地址

7.2 静态 IP 运行 GIF 演示

下面的 GIF 展示了运行静态 IP 示例程序后,W55RP20-EVB-MKR 完成网络初始化并打印固定 IP 地址的过程。

可以看到,程序运行后会先等待网络连接,随后打印出 MAC 地址和静态 IP 地址信息。当 IP Address 显示为 192.168.1.210 时,说明静态 IP 配置成功。

在这里插入图片描述


7.3 网络连通性验证

开发板获取到静态 IP 后,可以在电脑端使用 ping 命令验证网络是否连通。

例如本文中开发板的 IP 地址为:

192.168.1.210

可以在 Windows 命令提示符中输入:

ping 192.168.1.210

如果能够收到回复,说明电脑和开发板处于同一局域网,并且网络连接正常。

示例结果如下:

来自 192.168.1.210 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.210 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.210 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.1.210 的回复: 字节=32 时间<1ms TTL=64

如果无法 ping 通,可以优先检查电脑和开发板是否在同一网段,以及静态 IP 是否与其他设备冲突。


8. 常见问题一站式排查指南

8.1 烧录相关问题

问题现象 排查步骤
电脑无法识别 RPI-RP2 磁盘 1. 确认按住 BOOTSEL 按键再连接 USB
2. 更换支持数据传输的 USB 数据线
3. 更换电脑 USB 接口
4. 尝试使用另一台电脑
固件拖拽后开发板无反应 1. 确认固件与 W55RP20-EVB-MKR 匹配
2. 重新烧录 MicroPython 固件
3. 检查 USB 供电是否稳定

8.2 端口识别问题

问题现象 排查步骤
Thonny 中找不到开发板端口 1. 重新插拔 USB 数据线
2. 更换支持数据传输的 USB 数据线
3. 关闭其他占用串口的软件
4. 在设备管理器中查看是否有新串口设备
5. 重新烧录 MicroPython 固件

8.3 静态 IP 配置问题

问题现象 排查步骤
一直显示 Waiting for the network to connect... 1. 检查网线是否插紧
2. 确认网线连接到路由器 LAN 口
3. 更换路由器 LAN 口或网线
4. 重启路由器和开发板
5. 确认固件和示例代码匹配
IP 地址配置后无法通信 1. 确认开发板 IP 与路由器处于同一网段
2. 确认 IP 地址没有被其他设备占用
3. 确认子网掩码填写正确
4. 确认网关地址是路由器 LAN 口地址
电脑 ping 不通开发板 1. 确认电脑和开发板连接到同一路由器
2. 检查电脑 IP 和开发板 IP 是否处于同一网段
3. 临时关闭电脑防火墙测试
4. 更换网线或路由器 LAN 口
DNS 填写后无法访问域名 1. 确认 DNS 地址填写正确
2. 可以尝试使用路由器地址作为 DNS
3. 也可以尝试使用公共 DNS,例如 8.8.8.8

8.4 静态 IP 地址冲突

如果局域网中已经有其他设备使用了 192.168.1.210,可能会导致网络异常,例如 ping 不通、通信不稳定或 IP 地址冲突提示。

可以将代码中的静态 IP 改成其他未被占用的地址,例如:

NET_IP = "192.168.1.189"

建议在路由器后台查看当前已连接设备列表,选择一个未被占用的 IP 地址。

注意:静态 IP 地址需要和路由器处于同一网段。例如路由器地址是 192.168.1.1,开发板 IP 可以设置为 192.168.1.xxx


9. 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 示例代码配置网络参数即可完成联网测试。


10. 典型应用场景

静态 IP 适合需要固定访问地址的嵌入式以太网应用场景,例如:

  1. 工业数据采集网关
  2. 远程监控终端
  3. 串口转网口设备
  4. 智能楼宇控制节点
  5. 工业 PLC 扩展模块
  6. 传感器数据采集与上传

在这些场景中,固定 IP 地址可以让上位机、服务器或其他设备更方便地访问开发板,减少因 IP 地址变化带来的连接问题。


11. 系列预告与资源获取

11.1 系列预告

下一篇教程将讲解 W55RP20芯片在 MicroPython 开发下的 DHCP 自动联网与网络诊断

相比静态 IP,DHCP 可以让开发板自动从路由器获取 IP 地址、子网掩码、网关和 DNS,更适合快速测试和初学者入门。


11.2 资源获取

下一篇我们讲解W55RP20-EVB-MKR 模块 MicroPython 实战 (2):10 分钟搞定以太网 DHCP 自动联网

如果本文对你有帮助,欢迎点赞、收藏、关注,你的支持是我们持续更新的动力!

如有任何问题,欢迎在评论区留言,我们会第一时间回复。


更多推荐