W55RP20-EVB-MKR芯片 MicroPython 实战 (5):UDP 快速实现 UDP 通信
本文为 W55RP20-EVB-MKR模块 MicroPython 教程专项篇基于官方最新固件编写代码均经过实际验证可直接烧录运行。 版权声明本文为 WIZnet 官方原创技术文章转载请注明出处。前言上一篇教程中我们已经完成了TCP Server 服务端通信的开发实现了面向连接、稳定可靠的 TCP 数据交互。而在局域网设备快速通信、低延迟指令下发等场景中UDP 协议凭借更轻量、更高效的特性成为嵌入式开发的重要选择。当我们结合 WIZnet W5500 网络模块MicroPython 和树莓派 MKR的开发潜力被进一步放大。W5500 模块内置硬件 TCP/IP 协议栈免去 MCU 协议栈移植与解析压力可快速实现无连接 UDP 数据交互。UDP 凭借低延迟、轻量化、高效率的特性广泛应用于传感器上报、局域网设备交互、工业短指令通信等物联网场景。本文将基于 W55RP20-EVB-MKR开发板使用极简封装代码快速搭建 UDP 服务端完成数据接收与自动回复功能。本文将带你快速上手 W55RP20-EVB-MKR模块的 MicroPython 开发重点实现 UDP 通信功能学完本文你将掌握UDP 协议的核心原理与无连接工作流程W55RP20-EVB-MKR模块开发环境快速搭建极简代码实现 UDP 服务端收发通信网络调试助手联调测试方法UDP 通信异常与网络故障一站式排查WIZnet 硬件协议栈在短包通信中的核心优势系列教程学习路径本专栏共 15 篇循序渐进覆盖 W55RP20-EVB-MKR模块 MicroPython 开发全流程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. 准备工作1.1 软件准备1.2 硬件准备2. 烧录 W55RP20-EVB-MKR模块专属 MicroPython 固件3. 硬件连接与开发环境配置3.1 硬件连接3.1.1 基础连接供电调试3.1.2 以太网连接3.1.3 模块与开发板接线3.2 Thonny 开发环境配置4. UDP 通信原理4.1 UDP 协议简介4.2 UDP 工作流程4.3 UDP 核心优势4.4 典型应用场景5. 核心代码解析5.1 完整代码5.2 代码关键步骤说明5.3 扩展静态 IP 手动配置6. 运行结果与测试验证6.1 串口输出结果6.2 UDP 联调验证方法7. 常见问题一站式排查指南7.1 烧录与端口问题7.2 网络连接问题7.3 UDP 收发异常问题8. WIZnet 硬件协议栈核心优势对比9. 典型应用场景10. 系列预告与资源获取10.1 系列预告10.2 资源获取1. 准备工作1.1 软件准备所需软件均为免费版本按要求下载安装即可无需额外付费。软件名称版本要求下载地址说明Thonny4.0 及以上Thonny官方下载轻量级 MicroPython IDE支持代码编辑、烧录与串口调试新手友好W55RP20-EVB-MKR模块 MicroPython 固件最新稳定版WIZnet官方固件下载专为 W55RP20-EVB-MKR模块 编写已集成 WIZnet 硬件驱动与协议栈1.2 硬件准备W55RP20-EVB-MKR× 1Micro USB 数据线必须支持数据传输不能使用纯充电线× 1标准网线 × 1开启 DHCP 功能的路由器 / 交换机 × 1用于获取网络参数实现 DNS 解析W55RP20-EVB-MKR模块已集成以太网相关器件无需额外焊接飞线配合 RP2040 开发板可快速搭建开发环境大幅降低接线错误和硬件故障概率。2. 烧录 W55RP20-EVB-MKR模块专属 MicroPython 固件W55RP20-EVB-MKR模块 完全兼容树莓派 MKR的 UF2 固件烧录方式操作简单无需额外烧录器新手可快速上手按住 RP2040 开发板上的 BOOTSEL 按键不放使用 Micro USB 数据线连接开发板与电脑待电脑识别出名为 RPI-RP2 的 U 盘后松开 BOOTSEL 按键将下载好的 W5500_RP2040_firmware.uf2 固件文件拖拽到 U 盘中开发板会自动重启固件烧录完成。注意如果电脑没有识别出 RPI-RP2 U 盘请尝试更换 USB 数据线、重新插拔开发板或更换电脑 USB 接口优先使用 USB 2.0 接口。3. 硬件连接与开发环境配置3.1 硬件连接W55RP20-EVB-MKR模块连接分为两步分别实现供电/调试和以太网连接操作简单无需复杂接线3.1.1 基础连接供电调试使用 Micro USB 数据线连接 RP2040 开发板与电脑用于开发板供电、代码烧录和串口调试。3.1.2 以太网连接使用网线连接 W55RP20-EVB-MKR模块的以太网接口与路由器的 LAN 口或直接连接电脑网口需手动配置电脑 IP 与开发板同网段。3.1.3 模块与开发板接线若使用分离式模块与开发板需按以下引脚对应连接SPI 通信【硬件预留】此处插入硬件连接示意图3.2 Thonny 开发环境配置打开 Thonny 软件按以下步骤配置开发环境确保代码能正常烧录和运行点击顶部菜单栏「运行」→「配置解释器」切换到「解释器」选项卡在「解释器」下拉列表中选择 MicroPython (通用)在「端口」下拉列表中选择开发板对应的串口通常显示为 Board CDC COMx勾选「运行代码前先重启解释器」和「同步设备的实时时钟」点击「确定」完成配置。如果端口列表中没有出现开发板请尝试重新插拔 USB 数据线更换支持数据传输的 USB 数据线关闭其他占用串口的软件如串口助手、Arduino IDE 等重新烧录 MicroPython 固件安装树莓派 MKR USB 驱动。4. UDP 通信原理4.1 UDP 协议简介UDPUser Datagram Protocol用户数据报协议是传输层无连接通信协议区别于 TCP 面向连接的特性UDP 无需三次握手、无需维持连接状态以独立数据报形式完成收发。协议结构精简、头部开销极小牺牲部分可靠性换取超低延迟与高速传输是嵌入式物联网短消息交互的首选协议。4.2 UDP 工作流程W55RP20-EVB-MKR模块实现 UDP 通信的完整工作流程如下开发板上电 → 初始化 SPI 接口 → 激活 W55RP20-EVB-MKR模块网络模块通过 DHCP / 静态 IP 完成网络入网创建 UDP 数据报套接字绑定固定监听端口持续阻塞监听等待局域网客户端数据接入接收数据报文同步获取客户端 IP 与端口信息封装回复数据定向回传至发送端循环监听持续处理多轮 UDP 交互。4.3 UDP 核心优势无连接通信无需握手流程响应速度快协议轻量化占用网络带宽与 MCU 资源极低支持单播、广播、组播多种通信模式适合短帧、高频、实时性要求高的数据传输代码实现简单嵌入式开发调试成本低。4.4 典型应用场景物联网传感器定时数据上报局域网设备发现与批量控制工业设备轻量化指令交互智能家居实时状态同步嵌入式网络协议入门学习。5. 核心代码解析W55RP20-EVB-MKR模块的 MicroPython 库已经封装了所有底层细节实现 UDP 通信仅需 X 行核心代码无需编写复杂的底层驱动和协议解析逻辑。5.1 完整代码以下代码可直接复制到 Thonny 中烧录后即可运行实现UDP 通信功能from wiznet_init import wiznet import usocket as socket import time # 初始化网络 nic wiznet(W55RP20-EVB-Pico, dhcpTrue) local_ip nic.ifconfig()[0] local_port 8087 print() print( UDP 服务器已启动) print( 本地IP:, local_ip) print( 本地端口:, local_port) print() # 创建 UDP 套接字 s socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.bind((0.0.0.0, local_port)) # 绑定所有地址 # 循环接收 回复 while True: data, addr s.recvfrom(1024) # 等待电脑发送数据 print(收到来自, addr, , data) # 回复电脑 s.sendto(bUDP Server reply: data, addr)以下是实现UDP 通信功能过程5.2 代码关键步骤说明网络初始化基于官方封装的 wiznet 工具库一行代码完成 W55RP20-EVB-MKR模块硬件驱动加载、以太网激活、DHCP 自动组网规避底层 SPI 与寄存器复杂配置。UDP 套接字创建使用 SOCK_DGRAM 声明数据报模式专属 UDP 通信与 TCP 流式套接字做区分适配 UDP 无连接特性。端口绑定配置绑定 0.0.0.0 监听全网段确保局域网内任意设备均可访问 W55RP20-EVB-MKR模块的 UDP 服务端端口。双向通信逻辑recvfrom 阻塞等待接收数据自动携带客户端地址sendto 根据目标地址定向回复实现一问一答闭环通信适配嵌入式短消息交互场景。5.3 扩展静态 IP 手动配置无 DHCP 路由器环境下可关闭自动组网手动固定 IP、网关、DNS适配无路由器的开发场景# 关闭DHCP手动配置静态网络参数适配W55RP20-EVB-Pico模块 nic wiznet(W55RP20-EVB-Pico, dhcpFalse) nic.ifconfig((192.168.1.100,255.255.255.0,192.168.1.1,114.114.114.114))注意静态 IP 需与电脑/服务器处于同一网段否则无法实现 UDP 通信和网络交互。6. 运行结果与测试验证6.1 串口输出结果Waiting for the network to connect... MAC Address: 02:90:86:88:4d:56 IP Address: (192.168.1.118, 255.255.255.0, 192.168.1.1, 202.96.134.33) UDP 服务器已启动 本地IP: 192.168.1.118 本地端口: 8087 收到来自 (192.168.1.141, 8087) bHello WIZnet\r\n 收到来自 (192.168.1.141, 8087) bHello WIZnet\r\n说明解析后的 IP 地址可能因网络环境、路由器配置不同而略有差异属于正常现象若未显示 IP 地址需检查网络连接和固件配置。6.2 UDP 联调验证方法解析完成后可通过以下步骤验证 UDP 通信功能的正确性打开网络调试助手选择 UDP 客户端模式填写 W55RP20-EVB-MKR模块打印的本地 IP 与端口 8087手动输入测试数据点击发送Thonny 串口实时打印接收内容调试助手同步接收模块回复数据收发正常代表 W55RP20-EVB-MKR模块 UDP 通信搭建完成。7. 常见问题一站式排查指南开发过程中遇到问题可按以下分类排查快速解决问题。7.1 烧录与端口问题问题现象排查步骤无法识别 RPI-RP2 U 盘1. 确认按住 BOOTSEL 按键再插入 USB 数据线2. 更换支持数据传输的 USB 数据线3. 更换电脑 USB 接口优先使用 USB 2.0 接口4. 尝试使用另一台电脑。Thonny 找不到串口1. 安装树莓派 MKRUSB 驱动2. 关闭串口助手等占用软件3. 重新插拔 USB 数据线4. 重新烧录 W55RP20-EVB-MKR专属固件。7.2 网络连接问题问题现象排查步骤网口灯不亮1. 检查网线完整性2. 更换路由器 LAN 口3. 重新插拔网线确保连接牢固。DHCP 获取失败1. 切换静态 IP 配置手动填写同网段参数2. 确认路由器已开启 DHCP 功能3. 重启路由器和 W55RP20-EVB-MKR模块。IP 地址为 0.0.0.01. 重新烧录 W55RP20-EVB-MKR专属固件2. 重启设备3. 检查网络连接和接线是否正常。7.3 UDP 收发异常问题问题现象排查步骤客户端无法连接1. 确认双方处于同一局域网2. 确保服务端与客户端端口号保持一致3. 关闭电脑防火墙。数据接收为空1. 限制单包长度在 1024 字节以内2. 检查代码中接收逻辑是否正确3. 重新烧录代码并重启模块。通信丢包严重1. 关闭电脑防火墙降低网络干扰2. 更换优质网线3. 减少高频连续发包增加短延时。8. WIZnet 硬件协议栈核心优势对比为了让你更直观地了解 W5500 硬件协议栈芯片的价值我们对比了目前主流的三种嵌入式以太网方案对比维度W5500 硬件协议栈方案外接 PHY 芯片方案BOM 成本中MCU 网络模块无需额外器件中高MCU PHY 芯片 外围器件PCB 面积小模块集成度高仅需预留模块安装空间大需预留芯片、布线空间及外围电路开发难度低MicroPython 固件已封装底层少量代码实现 UDP 组播/广播中高需调试协议栈、编写底层驱动对研发能力要求高网络稳定性极高WIZnet 专注硬件 TCP/IP 协议栈 25 年抗干扰能力强UDP 丢包率低不定依赖研发人员对协议栈和网络开发的掌握程度UDP 易丢包CPU 资源占用0%协议栈完全由硬件处理不占用 MCU 资源不影响数据发送频率50%以上协议栈运行在 MCU 上占用大量 CPU 和内存影响 UDP 发送效率硬件 Socket 数量W5500 8个独立硬件 Socket支持多组播/广播同时进行视 MCU 能力而定理论支持多路拓展但实际受 CPU 资源限制网络吞吐量W5500 最高 15MbpsUDP 数据传输流畅无明显延迟视 MCU 能力而定普遍低于硬件协议栈方案多设备通信易卡顿接口易用性SPI 接口接线简单适配大多数 MCU支持高速通信需 MCU 带有 MII/RMII 等专用接口适配性有限部署难度低MicroPython 成熟固件应用层协议均有库文件多设备组网可快速部署高应用层协议需要手动移植开源库适配调试成本高9. 典型应用场景W55RP20-EVB-MKR模块结合 MicroPython 快速开发优势和 WIZnet 硬件协议栈的稳定性非常适合以下嵌入式、物联网应用场景工业现场传感器数据定时采集上报局域网内多设备快速发现与统一控制嵌入式轻量化控制指令双向交互物联网低功耗节点短消息通信高校 / 企业嵌入式网络教学实战案例。10. 系列预告与资源获取10.1 系列预告下一篇教程我们将讲解 W55RP20-EVB-MKR模块 MicroPython 开发下的 UDP 组播与广播通信实现带你了解组播地址配置、广播指令发送、多设备同步响应等关键机制掌握局域网多设备集群控制的核心能力为后续物联网多节点协同项目打下基础。10.2 资源获取WIZnet Pico MicroPython 示例工程W55RP20 芯片手册WIZnet 官方资料页面