|
281| 15
|
[K10教程] 【花雕动手做】K10 UDP 双向通信陀螺仪姿态控制麦轮小车 |
![]() 行空板K10是一款专为快速体验物联网和学习人工智能而设计的开发学习板,100%采用国产芯片,知识产权自主可控,符合信息科技课程中编程学习、物联网及人工智能等教学需求。该板集成2.8寸LCD彩屏、WiFi蓝牙、摄像头、麦克风、扬声器、RGB指示灯、多种传感器及丰富的扩展接口。凭借高度集成的板载资源,教学过程中无需额外连接其他设备,便可轻松实现传感器控制、物联网应用以及人脸识别、语音识别、语音合成等AI人工智能项目。 主要特点 集成摄像头&内置算法,可进行离线图像检测 集成麦克风&内置算法,可进行离线语音识别 集成扬声器&内置算法,可进行离线语音合成 2.8寸彩色屏幕,数据展示更清晰 集成度高,利于教学 接口丰富,兼容软件多,扩展性好 ![]() |
|
遥控发射端掌控宝(带锂电池) 掌控板是国内专为**中小学 Python 创客教育**设计的开源微型开发板,搭载 ESP32 主控,自带 WiFi + 蓝牙,是一块 “掌上微型电脑”DFRobot。 一、核心板载硬件(不用外接配件就能玩) 1. **1.3 寸 OLED 显示屏**:128×64 分辨率,显示文字、动画、图片,支持中文; 2. **交互部件**:A/B 物理按键、6 路金手指触摸键、3 颗全彩 RGB 灯、蜂鸣器(播放音乐); 3. **内置传感器**:麦克风(拾音)、光线传感器、三轴加速度 / 磁场传感器(做电子罗盘、计步器); 4. **通信**:WiFi、蓝牙双无线,可联网、两块板子无线互传数据; 5. **拓展**:底部金手指引出全部 IO,能外接舵机、温湿度、电机等模块。 二、两种编程方式,零基础友好 1. **图形化积木编程(mPython/Mind+)**:拖拽模块,小学生也能上手; 2. **MicroPython 代码编程**:直接写 Python 代码,衔接初高中信息技术课程。 三、常见用途 - 课堂教学:编程入门、物联网、STEAM 科创课; - 趣味制作:电子表、声光小游戏、声控彩灯、便携噪声 / 光照检测仪; - 物联网:联网看天气、远程控制设备、环境数据上传云端; - 可穿戴:智能手环、电子徽章、便携小仪器。 四、特点 体积小巧、一体化集成传感器、国产教育硬件、软硬件全开源,不用复杂接线就能快速做出智能小作品。 ![]() |
|
知识点:行空板 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双向通信掌控板陀螺仪姿态控制小车 实验开源代码 |
|
# 掌控板 UDP 热点姿态服务器 代码解读 一、头文件 1. `MPython.h`:掌控板底层驱动库,封装屏幕、加速度传感器、RGB 灯带等板载外设; 2. `DFRobot_Iot.h`:物联网 WiFi 工具,用于创建 SoftAP 热点、读取热点 IP; 3. `DFRobot_UDPServer.h`:UDP 服务器库,实现 UDP 报文监听、收发、接收回调绑定。 二、函数前置声明 C++ 语法要求:自定义回调函数写在`loop`之后,必须提前声明,告知编译器函数原型。 - `onUdpServerRecvMsg`:UDP 收到客户端消息触发; - 其余 5 个函数:对应加速度传感器五种姿态手势触发。 三、全局对象 - `myIot`:WiFi 管理对象,负责开启热点; - `myserver`:UDP 服务器实例,监听端口、发送 UDP 指令。 四、setup () 上电初始化(仅执行一次) 逐行解析: 1. `mPython.begin()`:掌控板硬件初始化,启动屏幕、传感器、灯光驱动; 2. `myserver.setCallback()`:绑定 UDP 接收回调,后台自动监听网络数据; 3. `accelerometer.onGesture(手势, 回调函数)` 姿态事件绑定(边沿触发):只有姿态切换瞬间执行一次,持续保持倾斜不会重复触发; 4. `display.setCursorLine()`:定位屏幕光标到指定行数,打印标题; 5. `myIot.setSoftAP("UDP","12345678")`:开启 WiFi 热点,名称 UDP,密码 12345678,掌控板作为无线基站; 6. `myIot.getWiFiSoftIP()`:读取 ESP32 热点默认 IP(192.168.4.1),打印到屏幕,客户端连接目标地址; 7. `myserver.setPort(8888)`:UDP 服务器监听端口 8888,客户端端口必须一致; 8. `rgb.brightness(8)`:设置 RGB 灯带全局亮度,取值 0~255。 五、loop () 主循环 全部逻辑依托**异步事件回调**执行,不需要循环轮询传感器、网络,循环留空,CPU 占用极低。 六、全部事件回调函数 ### 1. UDP 接收回调 客户端发送任意 UDP 消息触发: - `write(-1,颜色)`:点亮**全部灯带**粉紫色,持续 1 秒后熄灭; - 作用:双向通信指示灯,直观判断小车客户端成功回传消息。 ### 2. 向前倾斜 发送指令`A`;仅点亮第 1 颗 RGB 绿灯;屏幕第 3 行刷新状态。 ### 3. 向后倾斜 发送指令`B`;第 1 颗红灯。 ### 4. 向左倾斜 发送指令`C`;第 1 颗蓝灯。 ### 5. 向右倾斜 发送指令`D`;第 1 颗橙黄灯。 ### 6. 屏幕朝下翻转 发送指令`E`;第 1 颗灰色灯。 # 整体项目架构 ## 角色互换(重点区分你之前方案) - **掌控板:UDP 服务端 + 姿态遥控器**,自建热点 `UDP`; - **行空板 K10 小车:UDP 客户端**,连接热点,接收 `A/B/C/D/E` 控制麦克纳姆轮; 指令映射表 ![]() # 五大核心要点解读 ## 1. 姿态属于【边沿单次触发】 `accelerometer.onGesture` 机制:**只有姿态切换一瞬间执行一次发包**。 持续保持倾斜不会持续发送指令,属于**点动控制**。 > 短板:无法实现持续前进;想要持续运动,需要改写为 loop 轮询姿态。 ## 2. 灯光两套区分逻辑 - 姿态动作:只点亮**第 1 颗灯**; - 收到客户端消息:点亮**全部灯带**; 两种状态互不干扰,调试时很容易区分是【遥控下发指令】还是【小车回传消息】。 ## 3. SoftAP 封闭局域网 掌控板自建热点,无需家用路由器,适合小车室内独立遥控,延迟低、组网简单。 ## 4. 指令格式发生变更 之前方案使用拼音字符串 `qian/hou/zuo/you/ting`; 当前使用单字母 `A/B/C/D/E`; **小车客户端判断条件必须同步修改,否则无法响应电机动作。** ## 5. 全回调无阻塞架构 姿态识别、UDP 收发全部为事件驱动,不会互相阻塞,响应稳定;loop 空置,方便后续自由添加其他功能。 # 配套使用硬性要求 1. Mind + 扩展库:MPython、DFRobot\_Iot、DFRobot\_UDPServer; 2. 上电顺序:先启动掌控板(热点先建立),再上电行空板小车; 3. 小车 UDP 客户端连接 WiFi 名称:`UDP`,密码`12345678`,目标 IP:`192.168.4.1`,端口`8888`; 4. 客户端代码接收判断匹配 `A、B、C、D、E`。 |
|
行空板 K10 UDP 双向通信小车客户端 【花雕动手做】行空板 K10 系列实验之UDP双向通信掌控板陀螺仪姿态控制小车 实验开源代码 |
|
# 行空板 K10 UDP 客户端(麦克纳姆轮小车)代码解读 一、头文件作用 1. `DFRobot_Iot.h`:WiFi 工具库,STA 模式连接热点、检测联网状态; 2. `unihiker_k10.h`:行空板 K10 硬件库,操作屏幕画布、A 按键、RGB 灯带; 3. `Microbit_Motor.h`:四路电机驱动库,独立控制 M1/M2/M3/M4 麦克纳姆轮电机; 4. `DFRobot_UDPClient.h`:UDP 客户端库,连接远端 UDP 服务器、收发字符串消息。 二、函数前置声明 C++ 语法规定:自定义回调写在 loop 下方,必须提前声明。 - `onUdpClientRecvMsg`:收到服务器 UDP 消息自动执行,`message`存放接收文本; - `onButtonAPressed`:板载 A 按键按下触发。 三、全局对象与变量 1. `myclient`:UDP 客户端通信实例; 2. `k10`:行空板主控硬件对象; 3. `motorbit`:四路电机控制对象; 4. `screen_dir=2`:屏幕正向竖屏; 5. `myIot`:WiFi 连接工具对象。 四、setup () 上电初始化(仅执行一次) 逐行解析: 1. `myclient.setCallback()`:绑定 UDP 接收回调,后台监听服务器下发报文; 2. `k10.begin()`:初始化屏幕、按键、RGB 全部硬件; 3. `initScreen + creatCanvas`:初始化屏幕、创建绘图画布; 4. `buttonA->setPressedCallback()`:绑定 A 按键按下事件; 5. 设置深灰色屏幕底色,打印红色标题并刷新画布; 6. `wifiConnect("UDP", "12345678")`:连接**掌控板创建的 WiFi 热点**; 7. `while (!myIot.wifiStatus()) {}` 阻塞等待 WiFi 连上,不联网不继续执行; 8. 联网成功,追加两行屏幕状态提示; 9. `connectToServer("192.168.4.1",8888)` 连接掌控板 UDP 服务器:ESP32 热点默认 IP,端口固定 8888; 10. 刷新画布、设置 RGB 全局亮度 = 6。 五、loop () 主循环 全部功能依靠**异步事件回调**执行,不需要轮询网络、按键,循环空置,节省算力。 六、事件回调核心逻辑 ### 1. UDP 接收回调 onUdpClientRecvMsg (String message) 逻辑说明: 收到服务器字母指令,执行对应电机动作,同时点亮对应 RGB 颜色,**维持 1 秒后自动熄灭**。 指令动作对照表: ![]() > 关键特点: > 掌控板姿态手势是**边沿触发,只发送一次 UDP 包**; > 小车收到指令电机只持续运行 1 秒,属于【点动控制】,无法长距离持续行驶。 > 同时回调内部`delay()`会阻塞网络事件,连续快速遥控容易卡顿。 ### 2. A 按键回调 按下 A 键,小车主动向掌控板服务器发送测试文本,用来双向调试通信链路是否正常。 # 整套项目组网关系 - **服务端:掌控板** 开启热点名称`UDP`,密码`12345678`,UDP 服务器 8888; 依靠陀螺仪姿态发送 A/B/C/D/E。 - **客户端:本段代码(行空板 K10 小车)** 连接热点,接收字母指令,驱动麦克纳姆四轮电机。 # 五大核心要点解读 ## 1. 网络架构:SoftAP+STA 本地封闭局域网 掌控板自建 WiFi 基站,小车作为 STA 接入,不需要家用路由器,室内机器人遥控延迟低。 ## 2. 异步回调编程范式 WiFi 连接、UDP 消息、按键全部事件驱动,不在 loop 循环不断扫描信号,资源占用低。 ## 3. 麦克纳姆轮横向平移原理 普通两轮差速小车不能左右平移;代码通过控制四个电机对角反向旋转,产生横向合力实现纯平移。 ## 4. 通信硬性匹配规则 WiFi 名称、密码、服务器 IP、端口四者必须完全一致;任意一处写错,无法建立 UDP 通信。 ## 5. 当前方案固有短板(实操重点) 1)点动模式:每次倾斜遥控器,小车只运动 1 秒,不能持续行进; 2)`delay()`阻塞回调:频繁切换姿态会造成指令丢失、响应卡顿; 3)无指令超时保护,网络丢包时小车不会自动停机。 # 运行必要条件 1. Mind + 添加全部依赖库:unihiker\_k10、DFRobot\_Iot、DFRobot\_UDPClient、Microbit\_Motor; 2. 开发板选择:行空板 K10(esp32s3bit); 3. 硬件:microbit 四路电机拓展板,M1~M4 接麦克纳姆轮; 4. 上电顺序:**先上电掌控板(服务器),再上电行空板小车(客户端)**。 |
沪公网安备31011502402448© 2013-2026 Comsenz Inc. Powered by Discuz! X3.4 Licensed