16浏览
查看: 16|回复: 7

[K10教程] 【花雕动手做】行空板K10掌控板姿态陀螺仪动态遥控小车

[复制链接]
【花雕动手做】行空板K10掌控板姿态陀螺仪动态遥控小车图2

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

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


【花雕动手做】行空板K10掌控板姿态陀螺仪动态遥控小车图1

驴友花雕  高级技神
 楼主|

发表于 昨天 17:22

【花雕动手做】行空板K10掌控板姿态陀螺仪动态遥控小车

实验扩展板与麦轮小车

【花雕动手做】行空板K10掌控板姿态陀螺仪动态遥控小车图1

【花雕动手做】行空板K10掌控板姿态陀螺仪动态遥控小车图2

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 昨天 17:23

【花雕动手做】行空板K10掌控板姿态陀螺仪动态遥控小车

遥控发射端掌控宝(带锂电池)

掌控板是国内专为**中小学 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掌控板姿态陀螺仪动态遥控小车图1


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 昨天 17:25

【花雕动手做】行空板K10掌控板姿态陀螺仪动态遥控小车

添加通信模块——无线广播

【花雕动手做】行空板K10掌控板姿态陀螺仪动态遥控小车图2

【花雕动手做】行空板K10掌控板姿态陀螺仪动态遥控小车图1
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 昨天 17:27

【花雕动手做】行空板K10掌控板姿态陀螺仪动态遥控小车

板载传感器与小车扩展板相关积木

【花雕动手做】行空板K10掌控板姿态陀螺仪动态遥控小车图1

【花雕动手做】行空板K10掌控板姿态陀螺仪动态遥控小车图2

辅助:屏幕显示相关积木

【花雕动手做】行空板K10掌控板姿态陀螺仪动态遥控小车图4

LED控制模块

【花雕动手做】行空板K10掌控板姿态陀螺仪动态遥控小车图3

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 昨天 17:28

【花雕动手做】行空板K10掌控板姿态陀螺仪动态遥控小车

知识点:无线广播------行空板 K10 BLE、BLE Mesh 广播

一、BLE 普通广播(广播包 Advertising,非连接型)
1. 工作原理
发送板不建立蓝牙配对连接,定时(间隔可设)向外发送短小广播数据包;周围所有开启蓝牙扫描的 K10/ESP32 设备被动抓取数据,属于一对多离线通信,全程不用 WiFi、路由器。
发送端:只发包,不等待应答
接收端:持续扫描,识别目标设备标识后读取内容
2. 核心参数
传输距离:空旷 5–10 米,隔墙大幅衰减
功耗优势:发送、待机电流都很低,电池供电可长时间运行
数据限制:单帧广播载荷很短,一般几十字节以内
拓扑:1 个发射源→N 个接收机,接收机之间互不通信
3. 适用场景
一块主控批量控制多台 LED、蜂鸣器、小电机开关
手环式传感器广播温湿度、按键状态给多块行空板
无网络教室简易一控多教具
4. 短板
不能传长文本、语音、图片、大量数值
无可靠重传机制,干扰环境容易丢包
只能单向发,接收端无法回传数据给发射板

二、BLE Mesh 网格广播组网
1. 工作原理
所有行空板加入同一个 Mesh 网络,节点地位平等:
任意一块板子发送一条消息,全网所有 Mesh 节点同步收到;信号弱的节点还能中继转发消息,扩大覆盖范围,属于多向全网广播。
完全离线运行,不需要 WiFi 路由。
2. 对比普通 BLE 广播优势
信号中继:远距离、隔墙场景靠中间板子接力传递信号
双向互通:每个节点既能发全网广播,也能接收全网消息
分组控制:可划分分组,消息只发给指定分组设备,不用全部设备响应
稳定性高于单纯 Advertising 广播,自带简单纠错
3. 典型应用
教室几十台行空板灯光同步亮灭、抢答同步触发
多房间灯光、智能开关统一控制
分布式传感器,任意节点上报数据全网可见
4. 固有局限
单条消息数据量依旧偏小,依旧无法承载音频、大图
组网设备数量过多时,消息延迟会上升
相比 WiFi UDP,传输速度慢很多

三、两者统一短板汇总
大数据传输能力弱:仅适配开关指令、1–2 组数字、简短标识
高速传输不行:实时音频、大屏多行文字、图像一律不推荐
穿墙能力一般,密集金属遮挡信号暴跌
大量设备同时发包容易产生蓝牙信道冲突丢包

四、行空板 K10 实操区分选择
简单一控多、电池低功耗、距离近 → BLE 普通 Advertising 广播(代码简单、资源占用最小)
多设备互相收发、需要中继扩距离、批量分组控制 → BLE Mesh(组网复杂一点,功能更强)
要传文字、声音、大量数据、距离远、设备多稳定通信 → 优先改用 WiFi UDP 广播

补充简易实操要点
BLE 广播必须设置唯一设备名称 / UUID,接收端过滤识别,避免抓取无关蓝牙设备数据包;
Mesh 组网所有设备必须写入同一组网密钥、同一网络 ID 才能互相通信;
电池供电项目首选 BLE 体系,插电稳定大数据项目优先 WiFi。

【花雕动手做】行空板K10掌控板姿态陀螺仪动态遥控小车图1



回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 昨天 17:31

【花雕动手做】行空板K10掌控板姿态陀螺仪动态遥控小车

掌控板陀螺仪姿态遥控器发射端

【花雕动手做】行空板 K10 系列实验之掌控板陀螺仪姿态遥控器控制小车前后左右行走

实验开源代码

  1. // 引入掌控板核心驱动库,提供屏幕、加速度传感器、RGB彩灯等硬件操作接口
  2. #include <MPython.h>
  3. // 引入ESP32 2.4G无线射频通信库,用于向小车端发送方向指令
  4. #include <DFRobot_ESP32_Radio.h>
  5. // 创建无线通信对象Radio,所有无线开关、频道、数据发送都通过该对象操作
  6. DFRobot_ESP32Radio Radio;
  7. // 初始化函数,设备上电/复位仅执行一次
  8. void setup() {
  9.     // 初始化掌控板全部硬件:屏幕、传感器、灯光、IO等,必须放在setup第一行
  10.         mPython.begin();
  11.     // 开启2.4G无线射频模块,进入发送就绪状态
  12.         Radio.turnOn();
  13.     // 设置无线通信分组频道13,接收端小车必须设置相同分组才能收到信号
  14.         Radio.setGroup(13);
  15.     // 控制第1颗RGB彩灯,设置待机紫色 0x663366(红0x66 绿0x33 蓝0x66)
  16.         rgb.write(1, 0x663366);
  17.     // 将文字光标定位到屏幕第1行
  18.         display.setCursorLine(1);
  19.     // 在第1行打印标题文字
  20.         display.printLine("陀螺姿态小车遥控器");
  21.     // 光标切换至屏幕第2行
  22.         display.setCursorLine(2);
  23.     // 打印操作提示,告知用户倾斜板子控制四个方向
  24.         display.printLine("前后左右四个方向");
  25. }
  26. // 主循环函数,setup执行完毕后无限重复运行
  27. void loop() {
  28.     // 判断传感器手势:掌控板向前倾斜
  29.         if ((accelerometer.isGesture(accelerometer.TiltForward))) {
  30.         // 无线发送字符串指令qian,告知小车执行前进动作
  31.                 Radio.send("qian");
  32.         // 第1颗灯切换为绿色,代表前进指令发送成功
  33.                 rgb.write(1, 0x00FF00);
  34.         // 光标跳转到屏幕第3行
  35.                 display.setCursorLine(3);
  36.         // 第三行刷新文字,显示当前操作:前进
  37.                 display.printLine("前进");
  38.         }
  39.     // 判断传感器手势:掌控板向后倾斜
  40.         if ((accelerometer.isGesture(accelerometer.TiltBack))) {
  41.         // 无线发送后退指令hou
  42.                 Radio.send("hou");
  43.         // 彩灯切换红色,代表后退
  44.                 rgb.write(1, 0xFF0000);
  45.                 display.setCursorLine(3);
  46.                 display.printLine("后退");
  47.         }
  48.     // 判断传感器手势:掌控板向左倾斜
  49.         if ((accelerometer.isGesture(accelerometer.TiltLeft))) {
  50.         // 无线发送左移指令zuo
  51.                 Radio.send("zuo");
  52.         // 彩灯切换蓝色,代表左横走
  53.                 rgb.write(1, 0x0000FF);
  54.                 display.setCursorLine(3);
  55.                 display.printLine("左横走");
  56.         }
  57.     // 判断传感器手势:掌控板向右倾斜
  58.         if ((accelerometer.isGesture(accelerometer.TiltRight))) {
  59.         // 无线发送右移指令you
  60.                 Radio.send("you");
  61.         // 彩灯切换橙黄色0xFF9900,代表右横走
  62.                 rgb.write(1, 0xFF9900);
  63.                 display.setCursorLine(3);
  64.                 display.printLine("右横走");
  65.         }
  66. }
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 昨天 17:35

【花雕动手做】行空板K10掌控板姿态陀螺仪动态遥控小车

掌控板姿态遥控发送端代码解读

一、头文件引入

  1. #include <MPython.h>
  2. #include <DFRobot_ESP32_Radio.h>
复制代码

1. `#include <MPython.h>`
掌控板官方集成库,一次性提供屏幕、加速度传感器、RGB 灯、按键等所有板载硬件操作能力,没有这个库无法操作掌控板自带外设。
2. `#include <DFRobot_ESP32_Radio.h>`
ESP32 专用 2.4G 无线通信库,实现两块开发板近距离点对点无线传输,不需要 WiFi、路由器,专门用于小车遥控信号传输。

二、创建无线对象

  1. DFRobot_ESP32Radio Radio;
复制代码

定义全局无线通信实例 `Radio`,后续所有开启无线、设置频道、发送指令都依靠这个对象调用方法。

三、setup () 初始化函数(上电仅执行一次)

  1. void setup() {
  2.         mPython.begin();
  3.         Radio.turnOn();
  4.         Radio.setGroup(13);
  5.         rgb.write(1, 0x663366);
  6.         display.setCursorLine(1);
  7.         display.printLine("陀螺姿态小车遥控器");
  8.         display.setCursorLine(2);
  9.         display.printLine("前后左右四个方向");
  10. }
复制代码

逐行解析:

1. `mPython.begin();`
掌控板硬件初始化入口,必须写在 setup 第一行,启动屏幕、传感器、灯光驱动。
2. `Radio.turnOn();`
打开 2.4G 无线射频模块,进入就绪发送状态。
3. `Radio.setGroup(13);`
设置无线通信分组为 13。只有接收端行空板 K10 设置相同分组,才能收到无线指令;多台小车同时使用可修改分组数字防止互相干扰。
4. `rgb.write(1, 0x663366);`
控制第 1 颗 RGB 彩灯,设置待机紫色,板子平放无倾斜时保持该颜色。
5. `display.setCursorLine(1); display.printLine("陀螺姿态小车遥控器");`
光标定位屏幕第 1 行,打印标题。
6. `display.setCursorLine(2); display.printLine("前后左右四个方向");`
光标定位屏幕第 2 行,打印操作提示,告诉使用者倾斜板子控制小车四向移动。

四、loop () 主循环(上电后无限重复执行)

本程序没有事件回调,采用**循环实时轮询**加速度传感器姿态,持续检测板子倾斜状态。

  1. void loop() {
  2.         // 检测:板子向前倾斜
  3.         if ((accelerometer.isGesture(accelerometer.TiltForward))) {
  4.                 Radio.send("qian");        // 无线发送前进指令字符串qian
  5.                 rgb.write(1, 0x00FF00);    // 第1颗灯变绿色
  6.                 display.setCursorLine(3);
  7.                 display.printLine("前进"); // 屏幕第三行刷新文字
  8.         }
  9.         // 检测:板子向后倾斜
  10.         if ((accelerometer.isGesture(accelerometer.TiltBack))) {
  11.                 Radio.send("hou");
  12.                 rgb.write(1, 0xFF0000);
  13.                 display.setCursorLine(3);
  14.                 display.printLine("后退");
  15.         }
  16.         // 检测:板子向左倾斜
  17.         if ((accelerometer.isGesture(accelerometer.TiltLeft))) {
  18.                 Radio.send("zuo");
  19.                 rgb.write(1, 0x0000FF);
  20.                 display.setCursorLine(3);
  21.                 display.printLine("左横走");
  22.         }
  23.         // 检测:板子向右倾斜
  24.         if ((accelerometer.isGesture(accelerometer.TiltRight))) {
  25.                 Radio.send("you");
  26.                 rgb.write(1, 0xFF9900);
  27.                 display.setCursorLine(3);
  28.                 display.printLine("右横走");
  29.         }
  30. }
复制代码

### 核心对象 `accelerometer` 说明

`accelerometer` 是掌控板内置三轴加速度传感器对象,自带姿态识别函数:

- `accelerometer.isGesture(姿态参数)`:自动判断当前板子倾斜手势,返回真 / 假;
- `TiltForward`:向前倾斜
- `TiltBack`:向后倾斜
- `TiltLeft`:向左倾斜
- `TiltRight`:向右倾斜

### 每段 if 分支统一逻辑

1. 通过 `Radio.send()` 向外发送对应拼音指令;
2. 修改第 1 颗 RGB 灯为专属颜色,区分运动方向;
3. 光标固定到屏幕第 3 行,使用`printLine`整行覆盖刷新当前动作文字。

五、整体功能总结

1. 硬件角色:掌控板作为**姿态感应遥控器**;
2. 控制逻辑:倾斜板子识别方向,持续无线发送拼音指令 `qian / hou / zuo / you`;
3. 适配底盘:左横走、右横走对应麦克纳姆轮全向小车;
4. 灯光状态区分:
   - 平放待机:紫色
   - 前倾前进:绿色
   - 后倾后退:红色
   - 左倾左移:蓝色
   - 右倾右移:橙黄色
5. 通信匹配要求:小车接收端(行空板 K10)无线分组必须设为 13,且代码中要识别 `qian/hou/zuo/you` 四条指令执行对应电机动作。


回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail