本文为 WIZnet W55RP20 芯片 MicroPython 教程第 1 篇基于官方最新固件编写代码均经过实际验证可直接烧录运行。版权声明本文为 WIZnet 官方原创技术文章转载请注明出处。前言在嵌入式物联网开发中网络连接永远是第一步也是最容易踩坑的一步。传统以太网开发面临三大普遍痛点资源占用高软件 TCP/IP 协议栈会占用 MCU 大量的 CPU 和内存资源挤占主业务运行空间实时性变差开发难度大外接以太网模块需要手动接线、调试接口时序、编写底层驱动新手入门周期长时间开销大调试稳定门槛高软件协议栈可参考资料少、问题定位困难想要达到长期稳定运行需要深度掌握网络原理与丰富的网络调试经验W55RP20 作为 WIZnet 最新推出的 SiP 系统级芯片它将微控制器与硬件 TCP/IP 以太网控制器集成在单一芯片中TCP/IP 协议栈处理完全由硬件完成不占用任何 CPU 资源。同时W55RP20-EVB-MKR 开发板兼容树莓派 Pico 的引脚和软件生态实现了“即插即用”的工业级以太网开发体验。本文将带你完成 W55RP20芯片 的 MicroPython 环境搭建与静态 IP 配置测试。学完本文你将掌握W55RP20-EVB-MKR 开发板的固件烧录与环境配置MicroPython 的基本概念静态 IP、子网掩码、网关和 DNS 的含义使用代码配置固定 IP 地址网络连通性验证与常见故障排查系列教程学习路径本系列共 16 篇循序渐进覆盖从基础联网到工业级应用的全流程第 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 MicroPython 简介1.1 MicroPython 是什么1.2 为什么使用 MicroPython 开发 W55RP20-EVB-MKR2 静态 IP 是什么2.1 静态 IP 与 DHCP 的区别2.2 IP、子网掩码、网关、DNS 说明3 准备工作3.1 软件准备3.2 硬件准备4 烧录 W55RP20 专属 MicroPython 固件5 硬件连接与开发环境配置5.1 硬件连接5.2 Thonny 开发环境配置6 静态 IP 示例代码6.1 完整代码7 运行结果与网络验证7.1 串口输出结果截图7.2 静态 IP 运行 GIF 演示7.3 网络连通性验证8 常见问题一站式排查指南8.1 烧录相关问题8.2 端口识别问题8.3 静态 IP 配置问题8.4 静态 IP 地址冲突9 W55RP20 核心优势对比10 典型应用场景11 系列预告与资源获取11.1 系列预告11.2 资源获取1. MicroPython 简介1.1 MicroPython 是什么MicroPython 是一种面向微控制器和嵌入式设备的 Python 语言实现。简单来说它可以让开发者在开发板上运行类似 Python 的代码用更简洁的语法完成 GPIO 控制、串口通信、SPI 通信、I2C 通信、网络通信等嵌入式功能开发。相比传统 C/C 嵌入式开发MicroPython 的代码更容易阅读也更适合快速验证硬件功能和编写网络通信示例。例如在 MicroPython 中初始化网络、配置 IP 地址、打印运行结果都可以通过较少的代码完成。1.2 为什么使用 MicroPython 开发 W55RP20-EVB-MKRW55RP20-EVB-MKR开发板支持 MicroPython 开发后可以让以太网功能测试变得更简单。在本示例中只需要通过几行 Python 代码就可以完成以下操作初始化 W55RP20-EVB-MKR 的以太网功能设置静态 IP 地址配置子网掩码、网关和 DNS打印当前网络参数通过 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通常是路由器地址DNS192.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 软件准备软件名称版本要求下载地址说明Thonny4.0 及以上Thonny 官方下载轻量级 MicroPython IDE支持代码编辑、运行和串口调试W55RP20 MicroPython 固件最新稳定版WIZnet 官方资料页面专为 W55RP20 编写的 MicroPython 固件3.2 硬件准备如图所示W55RP20-EVB-MKR 开发板实物图。需要准备以下硬件W55RP20-EVB-MKR开发板× 1USB 数据线 × 1标准网线 × 1路由器或交换机 × 1提示W55RP20-EVB-MKR,已板载以太网接口无需额外焊接飞线其他器件即插即用。大幅降低了接线错误和硬件故障概率。4. 烧录 W55RP20 专属 MicroPython 固件运行静态 IP 示例前需要先给 W55RP20-EVB-MKR 烧录对应的 MicroPython 固件。固件文件示例firmware.uf2W55RP20-EVB-MKR兼容树莓派 Pico 的 UF2 固件烧录方式操作步骤如下使用 USB 数据线连接开发板和电脑按住开发板上的BOOTSEL按键点按RUN按键电脑识别出RPI-RP2磁盘后松开按键将.uf2固件文件拖入RPI-RP2磁盘开发板自动重启固件烧录完成注意如果电脑没有识别出RPI-RP2磁盘可以重新插拔 USB 数据线或更换支持数据传输的 USB 线。5. 硬件连接与开发环境配置5.1 硬件连接W55RP20-EVB-MKR 的连接极其简单仅需两步使用 USB 数据线连接开发板与电脑用于供电、代码烧录和串口调试使用网线连接开发板的以太网接口与路由器的 LAN 口如图所示为硬件连接示意图5.2 Thonny 开发环境配置打开 Thonny 软件点击顶部菜单栏「运行」→「配置解释器」切换到「解释器」选项卡在「解释器」下拉列表中选择MicroPython通用在「端口」下拉列表中选择 W55RP20-EVB-MKR 对应的串口通常显示为Board CDC COMx勾选「运行代码前先重启解释器」和「同步设备的实时时钟」点击「确定」完成配置配置完成后的界面如下图所示如果端口列表中没有出现开发板请尝试重新插拔 USB 数据线更换支持数据传输的 USB 数据线关闭其他占用串口的软件如串口助手、Arduino IDE 等重新烧录 MicroPython 固件6. 静态 IP 示例代码6.1 完整代码打开静态 IP 示例文件或在 Thonny 中输入以下代码# 从 wiznet_init 模块中导入 wiznet 初始化函数fromwiznet_initimportwiznetimporttime# 指定当前使用的开发板型号BOARDW55RP20-EVB-MKR# 设置静态网络参数NET_IP192.168.1.210# 开发板的静态 IP 地址NET_SN255.255.255.0# 子网掩码NET_GW192.168.1.1# 网关地址NET_DNS192.168.1.1# DNS 服务器地址print(WIZnet chip network install example)# 初始化 WIZnet 网卡nicwiznet(BOARD,dhcpFalse,#关闭 DHCP使用静态 IPipNET_IP,snNET_SN,gwNET_GW,dnsNET_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])其中最关键的是dhcpFalse这表示关闭 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.210W55RP20-EVB-MKR 的固定 IP 地址子网掩码255.255.255.0当前局域网的子网掩码网关192.168.1.1路由器地址DNS192.168.1.1DNS 服务器地址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 命令提示符中输入ping192.168.1.210如果能够收到回复说明电脑和开发板处于同一局域网并且网络连接正常。示例结果如下来自 192.168.1.210 的回复: 字节32 时间1ms TTL64 来自 192.168.1.210 的回复: 字节32 时间1ms TTL64 来自 192.168.1.210 的回复: 字节32 时间1ms TTL64 来自 192.168.1.210 的回复: 字节32 时间1ms TTL64如果无法 ping 通可以优先检查电脑和开发板是否在同一网段以及静态 IP 是否与其他设备冲突。8. 常见问题一站式排查指南8.1 烧录相关问题问题现象排查步骤电脑无法识别RPI-RP2磁盘1. 确认按住BOOTSEL按键再连接 USB2. 更换支持数据传输的 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. 可以尝试使用路由器地址作为 DNS3. 也可以尝试使用公共 DNS例如8.8.8.88.4 静态 IP 地址冲突如果局域网中已经有其他设备使用了192.168.1.210可能会导致网络异常例如 ping 不通、通信不稳定或 IP 地址冲突提示。可以将代码中的静态 IP 改成其他未被占用的地址例如NET_IP192.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 适合需要固定访问地址的嵌入式以太网应用场景例如工业数据采集网关远程监控终端串口转网口设备智能楼宇控制节点工业 PLC 扩展模块传感器数据采集与上传在这些场景中固定 IP 地址可以让上位机、服务器或其他设备更方便地访问开发板减少因 IP 地址变化带来的连接问题。11. 系列预告与资源获取11.1 系列预告下一篇教程将讲解 W55RP20芯片在 MicroPython 开发下的DHCP 自动联网与网络诊断。相比静态 IPDHCP 可以让开发板自动从路由器获取 IP 地址、子网掩码、网关和 DNS更适合快速测试和初学者入门。11.2 资源获取本文完整代码WIZnet Pico MicroPython 示例工程W55RP20 芯片手册WIZnet 官方资料页面下一篇我们讲解W55RP20-EVB-MKR 模块 MicroPython 实战 (2)10 分钟搞定以太网 DHCP 自动联网如果本文对你有帮助欢迎点赞、收藏、关注你的支持是我们持续更新的动力如有任何问题欢迎在评论区留言我们会第一时间回复。