345浏览
查看: 345|回复: 10

[K10教程] 【花雕动手做】K10 系列实验之 UDP 广播遥控板载 LED 彩灯

[复制链接]
本帖最后由 驴友花雕 于 2026-6-14 18:01 编辑

【花雕动手做】K10 系列实验之 UDP 广播遥控板载 LED 彩灯图2

行空板K10是一款专为快速体验物联网和学习人工智能而设计的开发学习板,100%采用国产芯片,知识产权自主可控,符合信息科技课程中编程学习、物联网及人工智能等教学需求。该板集成2.8寸LCD彩屏、WiFi蓝牙、摄像头、麦克风、扬声器、RGB指示灯、多种传感器及丰富的扩展接口。凭借高度集成的板载资源,教学过程中无需额外连接其他设备,便可轻松实现传感器控制、物联网应用以及人脸识别、语音识别、语音合成等AI人工智能项目。

主要特点
集成摄像头&内置算法,可进行离线图像检测
集成麦克风&内置算法,可进行离线语音识别
集成扬声器&内置算法,可进行离线语音合成
2.8寸彩色屏幕,数据展示更清晰
集成度高,利于教学
接口丰富,兼容软件多,扩展性好


【花雕动手做】K10 系列实验之 UDP 广播遥控板载 LED 彩灯图1

驴友花雕  高级技神
 楼主|

发表于 2026-6-11 06:57:04

【花雕动手做】K10系列实验之UDP广播遥控板载LED彩灯

本帖最后由 驴友花雕 于 2026-6-14 18:01 编辑

行空板K10的网络服务模块,都在这里

【花雕动手做】K10 系列实验之 UDP 广播遥控板载 LED 彩灯图1

添加WIFI和UDP广播模块

【花雕动手做】K10 系列实验之 UDP 广播遥控板载 LED 彩灯图2

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-6-11 06:58:32

【花雕动手做】K10系列实验之UDP广播发送消息Hello, world!

本帖最后由 驴友花雕 于 2026-6-11 07:14 编辑

相关积木
【花雕动手做】K10 系列实验之 UDP 广播遥控板载 LED 彩灯图1

【花雕动手做】K10 系列实验之 UDP 广播遥控板载 LED 彩灯图2



回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-6-11 06:59:50

【花雕动手做】K10系列实验之UDP广播发送消息Hello, world!

本帖最后由 驴友花雕 于 2026-6-11 07:14 编辑

辅助:屏幕显示相关积木

【花雕动手做】K10 系列实验之 UDP 广播遥控板载 LED 彩灯图2

LED控制模块

【花雕动手做】K10 系列实验之 UDP 广播遥控板载 LED 彩灯图1

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-6-11 07:01:51

【花雕动手做】K10系列实验之UDP广播发送消息Hello, world!

本帖最后由 驴友花雕 于 2026-6-11 07:14 编辑

知识点:行空板 K10 WiFi 局域网 UDP 广播

一、UDP 基础概念
UDP 全称用户数据报协议,属于 TCP/IP 网络协议,是无连接、广播式、尽力传输的通信方式。
放到行空板场景:所有设备连同一个 WiFi 路由器,组成局域网,依靠 IP + 端口收发数据;支持一台发送、全网所有设备同时接收,也就是 UDP 广播。
和 TCP 最大区别:不用提前握手建立连接,发消息直接抛到局域网里,速度快、代码简单,但不自动重传丢包数据。

二、运行硬性前提(必须满足)
全部通信行空板 K10 连接同一个 WiFi 热点;
设备自动获取同一段内网 IP(常见 192.168.4.xxx、192.168.1.xxx);
通信双方设置完全一致的端口号(截图示例固定 8888);
程序开头必须先执行 WiFi 配网连接,没连上 WiFi,UDP 模块无法启动。

三、相关图形积木功能解析
1. 基础服务端积木
设置 UDP 服务器端口 8888
本机开启 UDP 监听服务,占用 8888 端口,持续等候局域网内所有广播数据包。一块板子可同时做服务端 + 客户端。
当 UDP 服务器收到 广播消息
事件回调块:一旦局域网内有设备发出广播数据,立刻触发内部执行逻辑(点灯、屏幕打印、动作指令)。
UDP 服务器发送消息 "xxx"
向外发送全网广播包,当前 WiFi 局域网里所有开启 UDP 8888 端口的设备全部收到这条内容。
2. 基础客户端积木
设置 UDP 客户端连接到服务器 IP 192.168.4.1 端口 8888
客户端绑定目标服务端的内网 IP 与端口,建立通信目标;广播场景下 IP 可填局域网广播地址,实现一对多群发。
UDP 客户端发送消息 "xxx"
两种用法:①定向发给上面填写的单个服务器 IP;②发送全网广播,所有同端口设备接收。
当 UDP 客户端收到 广播消息
客户端独立监听广播数据包,收到数据后执行内部程序逻辑。

四、两种常用工作模式
模式 1:一对多广播(教学最常用)
1 块主控发送,N 台从板同步接收动作
主控(发送端):WiFi 联网 → UDP 开启 8888 端口 → 按键 / 陀螺仪触发「服务器发送消息」;
所有从板:WiFi 连同一个热点 → UDP 端口 8888 → 绑定「收到广播消息」回调,识别指令点灯、动作;
特点:一块板子下发指令,几十台设备同步响应。
模式 2:点对点双向通信
A 板客户端连 B 板服务端 IP,双向互发消息,适合一问一答、状态回传(比如小车上报速度、传感器数值回传给主控)。

五、完整积木程序标准结构
发送主控模板
【连接 WiFi】填入 WiFi 名称、密码(第一步必加)
【设置 UDP 服务器端口 8888】
循环 / 按键触发:【UDP 服务器发送消息 "hong"】
接收从板模板
【连接 WiFi】同一个 WiFi 账号密码
【设置 UDP 服务器端口 8888】
【当 UDP 服务器收到广播消息】
判断收到文本,匹配hong/bai/qian等指令,执行 RGB 变色、屏幕文字。

六、UDP 核心优缺点
优点
天然一对多广播:一次发送全网同端口设备接收,批量控制效率高;
速度快延迟低:无握手、无校验重传,体感几乎无卡顿;
兼容多设备:行空板、电脑、手机、ESP32 全都能互通;
数据承载量大:相比离线 Radio 射频,UDP 支持长文本、大量传感器数值、中等长度数据流;
覆盖范围广:路由器 WiFi 全屋覆盖,穿墙能力优于 2.4G 私有射频。
缺点
强依赖 WiFi 网络:无路由器、无 WiFi 环境完全无法运行,户外断电场景不能用;
无可靠传输:干扰、信号弱时会丢包,没有自动补发;稳定场景可重复发送 2 次指令;
功耗更高:WiFi 模块持续通电工作,电池续航比离线 Radio 短;
多组隔离麻烦:多小组实验要分不同 WiFi 热点才能互不干扰,不像 Radio 简单改 Group 数字。

七、实操避坑关键点
WiFi 必须一模一样:发送、接收板子 WiFi 名称、密码完全一致,大小写不能错;
端口号统一:所有设备 UDP 端口必须都是 8888,数字不同收不到;
广播无需精准匹配单个 IP:发全网广播时不用填每台从板 IP,局域网全部 8888 端口设备自动接收;
不要超大段文本发送,过长数据包容易分包乱码;
程序逻辑里不要加超长delay(),会阻塞 UDP 消息监听;
路由器 2.4G WiFi 稳定性优于 5G,行空板优先连 2.4G 频段。

【花雕动手做】K10 系列实验之 UDP 广播遥控板载 LED 彩灯图1

【花雕动手做】K10 系列实验之 UDP 广播遥控板载 LED 彩灯图2

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-6-14 16:00:24

【花雕动手做】K10系列实验之UDP广播发送消息Hello, world!

局域网(Local Area Network,简称LAN)是一种在相对较小的地理范围(如一个办公室、一栋楼或者一个校园)内连接计算机和其他设备的计算机网络系统。局域网的特点是覆盖范围小、传输速度快、没有长距离通信费用。

在局域网中,用户可以共享硬件(如打印机)、软件和数据。局域网中的设备可以通过有线(如以太网)或无线(如Wi-Fi)技术连接。局域网的主要用途包括共享资源、传输数据和通信。

【花雕动手做】K10 系列实验之 UDP 广播遥控板载 LED 彩灯图1

以行空板为例进行组网。

【花雕动手做】K10 系列实验之 UDP 广播遥控板载 LED 彩灯图2


【花雕动手做】K10 系列实验之 UDP 广播遥控板载 LED 彩灯图3



回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-6-14 18:02:21

【花雕动手做】K10系列实验之UDP广播遥控板载LED彩灯

这里使用掌控板作为客户端,可以接收到行空板K10作为服务器发来的消息。

【花雕动手做】行空板 K10 系列实验之 UDP 广播遥控板载 WS2812B 彩灯
掌控板实验开源代码(客户端)

  1. // 引入MPython底层适配库,适配行空板硬件、屏幕、按键等基础外设接口
  2. #include <MPython.h>
  3. // DFRobot物联网WiFi驱动库,提供WiFi热点(SoftAP)、配网、IP获取能力
  4. #include <DFRobot_Iot.h>
  5. // UDP客户端专用库,实现标准WiFi局域网UDP客户端收发通信
  6. #include <DFRobot_UDPClient.h>
  7. // 前置函数声明:A按键按下回调、UDP收到消息回调
  8. void onButtonAPressed();
  9. void onUdpClientRecvMsg(String message);
  10. // 物联网WiFi控制实例,管理WiFi热点/STA配网、IP地址读取
  11. DFRobot_Iot       myIot;
  12. // UDP客户端通信对象,负责连接服务端IP端口、发送消息、绑定接收回调
  13. DFRobot_UDPClient myclient;
  14. /**
  15. * setup 上电初始化函数,设备开机仅执行1次
  16. * 执行流程:底层硬件初始化→绑定UDP接收回调→绑定A按键按下回调→开启本机WiFi热点→屏幕打印提示与本机IP→UDP客户端连接指定服务端
  17. */
  18. void setup() {
  19.     // 初始化MPython硬件底层:屏幕、按键、IO、系统时钟等板载资源
  20.         mPython.begin();
  21.         // 给UDP客户端绑定接收消息回调:收到服务端发来的UDP数据包,自动执行onUdpClientRecvMsg
  22.         myclient.setCallback(onUdpClientRecvMsg);
  23.         // 给A按键绑定按下事件:按下A键自动运行onButtonAPressed发送UDP消息
  24.         buttonA.setPressedCallback(onButtonAPressed);
  25.         // 开启本机SoftAP无线热点模式:热点名称AP,连接密码88888888
  26.         myIot.setSoftAP("AP", "88888888");
  27.         // 屏幕光标定位到第1行
  28.         display.setCursorLine(1);
  29.         // 屏幕第一行打印设备身份:掌控B板-客户端-热点模式
  30.         display.printLine("掌控B板-客户端-热点");
  31.         // 光标切换到第2行
  32.         display.setCursorLine(2);
  33.         // 读取并打印本机热点分配的内网IP地址(默认192.168.4.1)
  34.         display.printLine(myIot.getWiFiSoftIP());
  35.         // UDP客户端主动连接UDP服务端
  36.         // 服务端固定内网IP:192.168.4.2,通信端口统一8888
  37.         myclient.connectToServer("192.168.4.2",8888);
  38. }
  39. /**
  40. * loop 主无限循环
  41. * 全程事件驱动架构:按键、UDP接收全部由库后台线程监听触发回调,无循环任务,循环体空置
  42. */
  43. void loop() {
  44. }
  45. /**
  46. * A按键按下回调函数
  47. * 触发动作:按下A键,UDP客户端向192.168.4.2:8888发送文本消息
  48. */
  49. void onButtonAPressed() {
  50.         // 发送UDP数据包:内容 hello,I am client
  51.         myclient.sendUdpMsg("hello,I am client");
  52. }
  53. /**
  54. * UDP客户端消息接收回调函数
  55. * 参数message:服务端回传的完整字符串消息
  56. * 功能:收到消息后,在屏幕第4行打印收到的内容
  57. */
  58. void onUdpClientRecvMsg(String message) {
  59.         // 光标定位屏幕第4行
  60.         display.setCursorLine(4);
  61.         // 把服务端发来的消息打印到屏幕
  62.         display.printLine(message);
  63. }
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-6-14 18:10:18

【花雕动手做】K10系列实验之UDP广播遥控板载LED彩灯

代码解读(WiFi 标准 UDP 客户端 + 自建热点模式)

一、头文件与全局声明

  1. // MPython硬件适配库,封装屏幕display、按键buttonA、基础硬件底层驱动
  2. #include <MPython.h>
  3. // DFR物联网WiFi库,负责开启热点/连接WiFi、读取本机IP
  4. #include <DFRobot_Iot.h>
  5. // WiFi UDP客户端专用库,实现标准UDP传输层协议收发
  6. #include <DFRobot_UDPClient.h>
  7. // 函数前置声明,编译器提前识别回调函数
  8. void onButtonAPressed();
  9. void onUdpClientRecvMsg(String message);
  10. // WiFi物联网控制对象,管理SoftAP热点、STA配网、IP查询
  11. DFRobot_Iot       myIot;
  12. // UDP客户端实例,用来对接UDP服务端、收发数据包
  13. DFRobot_UDPClient myclient;
复制代码


二、setup () 开机一次性初始化

  1. void setup() {
  2.         mPython.begin();
复制代码

初始化整套板载硬件:显示屏、按键、系统时钟、IO 口,是 MPython 框架程序必须第一行执行。

  1. myclient.setCallback(onUdpClientRecvMsg);
复制代码

给 UDP 客户端绑定接收消息回调:后台一旦收到服务端发来的 UDP 数据包,自动运行onUdpClientRecvMsg函数,不用在 loop 循环反复查询。

  1. buttonA.setPressedCallback(onButtonAPressed);
复制代码

给 A 按键绑定按下触发事件:物理按下 A 键,立刻执行发送 UDP 消息的函数,按键属于中断事件驱动。

  1. myIot.setSoftAP("AP", "88888888");
复制代码

开启本机SoftAP 无线热点(板子变身小型路由器):
热点名称:AP
连接密码:88888888
另一块做服务端的行空板,必须连接这个热点才能组网通信。

  1. display.setCursorLine(1);
  2.         display.printLine("掌控B板-客户端-热点");
复制代码

把屏幕光标定位到第 1 行,打印本机身份标识:当前设备是 UDP 客户端、并且自身开启了 WiFi 热点。

  1. display.setCursorLine(2);
  2.         display.printLine(myIot.getWiFiSoftIP());
复制代码

光标切到第 2 行,读取并打印本机热点的固定网关 IP,默认是192.168.4.1。

  1. myclient.connectToServer("192.168.4.2",8888);
复制代码

UDP 客户端主动发起连接:
目标 UDP 服务端 IP 地址:192.168.4.2
统一通信端口:8888
只有服务端连上本热点、被分配 192.168.4.2、且打开 8888 端口监听,两端才能建立 UDP 通信。

三、loop () 主循环

  1. void loop() {
  2. }
复制代码

循环完全空置,整套程序纯事件驱动:
按键按下由硬件中断触发回调;
UDP 收消息由库后台线程监听触发回调;
不需要在 loop 里轮询检测信号,不占用 CPU 资源。

四、两个核心回调函数
1、A 按键按下回调(发送 UDP 消息)

  1. void onButtonAPressed() {
  2.         myclient.sendUdpMsg("hello,I am client");
  3. }
复制代码

每按一次 A 键,向服务端 IP:8888 发送一条 UDP 文本数据包:hello,I am client。
2、UDP 接收消息回调(展示服务端回复)

  1. void onUdpClientRecvMsg(String message) {
  2.         display.setCursorLine(4);
  3.         display.printLine(message);
  4. }
复制代码

参数message存储服务端传回的完整字符串;
收到回复后,自动在屏幕第 4 行打印对方发来的消息内容。

整体组网逻辑
本机(客户端)
开热点 AP (密码 88888888),IP=192.168.4.1;UDP 客户端连接 192.168.4.2:8888;按键发包。

配对服务端设备
不能开热点,要连接AP这个 WiFi;连上后设备 IP 会被分配为 192.168.4.2;开启 UDP 服务监听 8888 端口,接收客户端消息并可回复消息。

关键协议区分
DFRobot_UDPClient = 标准 TCP/IP 传输层 UDP 协议
和你之前截图里 IP、端口的 UDP 图形积木是同一套 WiFi 网络 UDP,必须依托 WiFi 组网。

和DFRobot_ESP32_Radio(BLE 蓝牙广播)本质区别:
本代码:依赖 WiFi、IP + 端口寻址、标准 UDP 网络协议;
BLE Radio:无 WiFi、分组 Group 寻址、底层蓝牙广播,不属于 IP 网络 UDP。

优缺点与注意事项
优点
点对点自建局域网,不用家用路由器,两块板子直接通信;
标准 UDP 双向收发,客户端发、服务端可回复;
传输文本长度远大于 BLE 广播,支持更长指令、数据。
短板
WiFi 功耗比 BLE 高,电池续航更短;
UDP 天生不可靠,信号差会丢包,无自动重传;
仅支持 2.4GWiFi,不兼容 5G 频段;

实操避坑
服务端必须连本机的 AP 热点,连别的 WiFi 绝对无法通信;
IP 地址 192.168.4.2、端口 8888 两端必须严格统一;
回调函数内禁止使用长时间delay(),会阻塞 UDP 消息接收;
热点覆盖距离有限,两块板子不要隔厚墙体、金属遮挡。


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-6-14 18:19:29

【花雕动手做】K10系列实验之UDP广播遥控板载LED彩灯


这里使用行空板K10作为UDP服务器。

【花雕动手做】行空板 K10 系列实验之 UDP 广播遥控板载 WS2812B 彩灯
行空板实验开源代码


  1. // 导入DF物联网WiFi库,负责连接WiFi热点、获取本机局域网IP、检测联网状态
  2. #include <DFRobot_Iot.h>
  3. // 行空板K10硬件驱动库,封装屏幕、画布、A按键、RGB彩灯全部板载外设
  4. #include "unihiker_k10.h"
  5. // WiFi UDP服务端专用库,搭建标准UDP监听服务,接收客户端数据包、回复消息
  6. #include <DFRobot_UDPServer.h>
  7. // 提前声明两个事件回调函数,setup绑定事件时编译器识别函数标识
  8. void onButtonAPressed();
  9. void onUdpServerRecvMsg(String message);
  10. // 行空板整机硬件总控制对象,操控屏幕、按键、RGB灯、画布
  11. UNIHIKER_K10      k10;
  12. // 屏幕朝向参数3,切换屏幕显示翻转方向
  13. uint8_t           screen_dir=3;
  14. // WiFi物联网管理实例,执行WiFi连接、IP读取、联网状态判断
  15. DFRobot_Iot       myIot;
  16. // UDP服务端通信对象,开启端口监听、绑定接收回调、向客户端发送广播消息
  17. DFRobot_UDPServer myserver;
  18. /**
  19. * setup 上电一次性初始化函数
  20. * 执行流程:硬件初始化→绑定UDP接收回调→初始化屏幕画布→绑定A按键回调→绘制白色背景标题界面→连接客户端开启的AP热点→阻塞等待联网成功→屏幕打印联网IP→开启UDP8888监听端口
  21. */
  22. void setup() {
  23.     // 初始化行空板全部底层硬件:屏幕总线、按键IO、RGB驱动、陀螺仪、系统时钟
  24.         k10.begin();
  25.         // 给UDP服务端绑定接收消息回调:收到客户端发来的UDP数据包,自动运行onUdpServerRecvMsg
  26.         myserver.setCallback(onUdpServerRecvMsg);
  27.         // 根据预设参数3初始化屏幕显示方向
  28.         k10.initScreen(screen_dir);
  29.         // 创建内存绘图画布,文字先存入缓存批量刷新,减少屏幕闪烁
  30.         k10.creatCanvas();
  31.         // 给板载A按键绑定按下事件:按下A键自动执行发送UDP消息的回调函数
  32.         k10.buttonA->setPressedCallback(onButtonAPressed);
  33.         // 设置屏幕整体背景颜色为纯白色0xFFFFFF
  34.         k10.setScreenBackground(0xFFFFFF);
  35.         // 画布第3行打印蓝色标题文字,标识本机为UDP服务端
  36.         k10.canvas->canvasText("        行空板K10-服务器", 3, 0x0000FF);
  37.         // 刷新画布缓存,把标题文字渲染显示到屏幕
  38.         k10.canvas->updateCanvas();
  39.         // 连接客户端板子搭建的WiFi热点:热点名称AP,密码88888888(和客户端热点参数严格一致)
  40.         myIot.wifiConnect("AP", "88888888");
  41.         // 阻塞死循环,一直等待直到WiFi连接成功才向下执行;wifiStatus()返回true代表联网完成
  42.         while (!myIot.wifiStatus()) {}
  43.         // 第5行打印红色联网成功提示文字
  44.         k10.canvas->canvasText("            WIFI连接成功", 5, 0xFF0000);
  45.         // 拼接字符串:读取本机分配的局域网IP并打印在第7行蓝色字体
  46.         k10.canvas->canvasText((String("   WIFI配置IP:") + String(myIot.getWiFiLocalIP())), 7, 0x0000FF);
  47.         // 刷新画布,展示联网IP信息
  48.         k10.canvas->updateCanvas();
  49.         // UDP服务端开启8888端口持续监听,等待192.168.4.1客户端发起通信
  50.         myserver.setPort(8888);
  51. }
  52. /**
  53. * loop 主无限循环
  54. * 整体程序纯事件驱动架构,WiFi监听、UDP收包、按键检测全部由库后台线程处理
  55. * 无循环轮询任务,循环体保持空置即可稳定运行
  56. */
  57. void loop() {
  58. }
  59. /**
  60. * A按键按下触发回调函数
  61. * 功能:按下A键,UDP服务端向所有连接的客户端广播发送文本消息 hello,I am server
  62. */
  63. void onButtonAPressed() {
  64.         myserver.sendUdpMsg("hello,I am server");
  65. }
  66. /**
  67. * UDP服务端接收数据包回调函数
  68. * 参数message:客户端传输过来的完整字符串指令内容
  69. * 触发动作:收到客户端消息,全板RGB亮蓝色2秒,之后自动熄灭彩灯
  70. */
  71. void onUdpServerRecvMsg(String message) {
  72.         // 参数-1代表控制所有RGB灯珠,点亮纯蓝色0x0000FF
  73.         k10.rgb->write(-1, 0x0000FF);
  74.         // 保持灯光点亮2000毫秒(2秒)
  75.         delay(2000);
  76.         // RGB全部赋值黑色,熄灭所有彩灯
  77.         k10.rgb->write(-1, 0x000000);
  78. }
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-6-14 18:25:56

【花雕动手做】K10系列实验之UDP广播遥控板载LED彩灯

行空板 K10 UDP 服务端代码解读

一、头文件与全局对象定义

  1. #include <DFRobot_Iot.h>
  2. #include "unihiker_k10.h"
  3. #include <DFRobot_UDPServer.h>
  4. DFRobot_Iot.h:WiFi 物联网库,负责连接热点、检测联网状态、读取本机局域网 IP;
  5. unihiker_k10.h:K10 硬件驱动,管控屏幕、画布、A 按键、RGB 彩灯;
  6. DFRobot_UDPServer.h:标准 WiFi UDP 服务端库,开启端口监听、接收客户端消息、广播回复数据。
  7. // 预先声明两个事件回调函数
  8. void onButtonAPressed();
  9. void onUdpServerRecvMsg(String message);
  10. UNIHIKER_K10      k10;       // 整机硬件控制总对象
  11. uint8_t           screen_dir=3; // 屏幕翻转方向3,适配安装视角
  12. DFRobot_Iot       myIot;      // WiFi管理实例
  13. DFRobot_UDPServer myserver;   // UDP服务端实例
复制代码

二、setup () 上电一次性初始化

  1. void setup() {
  2.         k10.begin();
复制代码

初始化全部板载硬件:屏幕、按键、RGB 灯、系统底层总线。

       
  1. myserver.setCallback(onUdpServerRecvMsg);
复制代码

给 UDP 服务端绑定接收回调:只要监听到客户端发来的 UDP 数据包,自动执行onUdpServerRecvMsg。

  1. k10.initScreen(screen_dir);
  2.         k10.creatCanvas();
复制代码

设置屏幕显示方向;创建画布缓存,文字批量刷新减少闪屏。

  1. k10.buttonA->setPressedCallback(onButtonAPressed);
复制代码

绑定 A 按键中断:按下 A 键立刻执行发送消息函数。

  1. k10.setScreenBackground(0xFFFFFF);
  2.         k10.canvas->canvasText("        行空板K10-服务器", 3, 0x0000FF);
  3.         k10.canvas->updateCanvas();
复制代码

屏幕底色设纯白色;第 3 行打印蓝色标题,标记本机是 UDP 服务端;刷新文字到屏幕。

  1. myIot.wifiConnect("AP", "88888888");
  2.         while (!myIot.wifiStatus()) {}
复制代码

连接客户端板子开出的 WiFi 热点:名称AP、密码88888888;
while死阻塞循环:不连上 WiFi,程序不会往下执行,保证网络就绪再开 UDP 服务。

  1. k10.canvas->canvasText("            WIFI连接成功", 5, 0xFF0000);
  2.         k10.canvas->canvasText((String("   WIFI配置IP:") + String(myIot.getWiFiLocalIP())), 7, 0x0000FF);
  3.         k10.canvas->updateCanvas();
复制代码

联网成功后,第 5 行红字提示成功;第 7 行打印本机分配到的内网 IP(配对固定为192.168.4.2),刷新屏幕显示。

  1. myserver.setPort(8888);
  2. }
复制代码

UDP 服务端开启8888 端口持续监听,等待客户端接入收发数据。

三、loop () 主循环

  1. void loop() {
  2. }
复制代码

全程事件驱动,WiFi 连接、UDP 收包、按键检测全部由库后台线程独立运行,不需要在 loop 轮询扫描信号,循环空置不影响通信。

四、两个回调功能函数
1、A 按键按下回调(主动发消息给客户端)

  1. void onButtonAPressed() {
  2.         myserver.sendUdpMsg("hello,I am server");
  3. }
复制代码

按下 A 键,服务端向局域网内所有 UDP 8888 端口设备广播发送文本:hello,I am server。
2、UDP 收到客户端消息回调

  1. void onUdpServerRecvMsg(String message) {
  2.         k10.rgb->write(-1, 0x0000FF); // -1=全部RGB灯,点亮蓝色
  3.         delay(2000);                   // 保持亮灯2秒
  4.         k10.rgb->write(-1, 0x000000); // 熄灭所有彩灯
  5. }
复制代码

只要收到客户端发送的任意 UDP 消息,立刻触发灯光提示,message 变量里存放客户端发来的完整字符串内容(本段代码没有读取打印 message,只做灯光反馈)。

五、和上一段客户端代码完整配对关系

【花雕动手做】K10 系列实验之 UDP 广播遥控板载 LED 彩灯图1

完整交互流程
客户端先上电,生成 WiFi 热点 AP;
服务端上电自动连接 AP,等待联网成功;
客户端 UDP 客户端绑定服务端 IP 端口,建立通信链路;
客户端按 A → 发送 client 文本 → 服务端 RGB 亮蓝灯 2 秒;
服务端按 A → 广播 server 文本 → 客户端屏幕第四行打印收到的文字。

六、协议定性区分
本套 UDPServer/UDPClient = 标准 WiFi 局域网 UDP
严格符合 UDP(User Datagram Protocol)传输层协议,依托 TCP/IP、IP 地址 + 端口寻址,对应你截图里 IP / 端口的 UDP 图形积木;必须依赖 WiFi 网络。
和DFRobot_ESP32_Radio(BLE 蓝牙广播)本质区别
WiFi UDP:需要 WiFi 组网、双向收发、可传输长文本;
BLE Radio:离线无 WiFi、Group 分组隔离、以短指令单向下发为主、低功耗电池续航更强。

七、注意点与短板
delay(2000)阻塞问题:亮灯 2 秒期间,如果新的 UDP 消息进来,会暂时延迟响应;进阶优化用毫秒计时器非阻塞写法;
UDP 不可靠:无丢包重传,信号弱环境偶尔丢失数据包;稳定场景可以连续发送两次消息提升成功率;
只支持 2.4G WiFi,5G 频段无法连接;
两端热点名称、密码、端口号必须完全一致,大小写、数字不能出错;
screen_dir=3仅改变屏幕显示方向,不影响 WiFi 和 UDP 通信逻辑。

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-6-14 19:02:18

【花雕动手做】K10系列实验之UDP广播遥控板载LED彩灯

实验场景图与视频记录

【花雕动手做】K10 系列实验之 UDP 广播遥控板载 LED 彩灯图2

【花雕动手做】K10 系列实验之 UDP 广播遥控板载 LED 彩灯图1

【花雕动手做】K10 系列实验之 UDP 广播遥控板载 LED 彩灯图4

【花雕动手做】K10 系列实验之 UDP 广播遥控板载 LED 彩灯图5

【花雕动手做】K10 系列实验之 UDP 广播遥控板载 LED 彩灯图3
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2026 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail