在这里插入图片描述
在这里插入图片描述

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

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

在这里插入图片描述
小车方案使用的铝制底板、TT电机与扩展板

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
遥控发射端掌控宝(带锂电池)

掌控板是国内专为中小学 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 科创课;
  • 趣味制作:电子表、声光小游戏、声控彩灯、便携噪声 / 光照检测仪;
  • 物联网:联网看天气、远程控制设备、环境数据上传云端;
  • 可穿戴:智能手环、电子徽章、便携小仪器。

四、特点

体积小巧、一体化集成传感器、国产教育硬件、软硬件全开源,不用复杂接线就能快速做出智能小作品。

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

辅助:屏幕显示相关积木

在这里插入图片描述
LED控制模块

在这里插入图片描述

知识点:无线广播------行空板 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 系列实验之六通道简版蓝牙掌控板陀螺仪双驱差速智能小车

实验开源代码

// 引入掌控板底层驱动库,支持屏幕、按键、RGB灯、加速度传感器
#include <MPython.h>
// 导入DFRobot 2.4G无线射频通信库(ESP32Radio,非蓝牙,代码文字标注有误)
#include <DFRobot_ESP32_Radio.h>

// ==========函数声明==========
// A按键按下触发函数
void onButtonAPressed();
// B按键按下触发函数
void onButtonBPressed();

// ==========创建通信对象==========
DFRobot_ESP32Radio Radio;

// ==========初始化函数(上电运行一次)==========
void setup() {
	// 启动掌控板硬件初始化(屏幕、按键、传感器底层开启)
	mPython.begin();
	
	// 绑定A按键按下的回调函数,按键触发自动执行onButtonAPressed
	buttonA.setPressedCallback(onButtonAPressed);
	// 绑定B按键按下的回调函数
	buttonB.setPressedCallback(onButtonBPressed);
	
	Radio.turnOn();                // 开启2.4G射频无线模块
	Radio.setGroup(13);            // 设置通信分组:收发两端必须同为13组才能通信
	
	rgb.brightness(round(8));      // 设置板载RGB灯带亮度,范围0~255,此处亮度8
	
	// 屏幕第1行文字
	display.setCursorLine(1);
	display.printLine("掌控板陀螺仪发送端");
	// 屏幕第2行文字(⚠注意:程序实际使用2.4G Radio,不是蓝牙,文字描述笔误)
	display.setCursorLine(2);
	display.printLine("六通道简版蓝牙");
	// 屏幕第4行文字,适配二驱动差速小车
	display.setCursorLine(4);
	display.printLine("二驱动差速小车");
}

// ==========主循环(不断重复执行)==========
void loop() {
	// 判断掌控板向前倾斜姿态
	if ((accelerometer.isGesture(accelerometer.TiltForward))) {
		Radio.send("qian");                 // 无线发送字符串指令:前进
		rgb.write(1, 0x00FF00);             // RGB灯设置绿色
		display.setCursorLine(3);
		display.printLine("前进");          // 第3行刷新状态文字
	}
	// 判断向后倾斜
	if ((accelerometer.isGesture(accelerometer.TiltBack))) {
		Radio.send("hou");                  // 发送:后退指令
		rgb.write(1, 0xFF0000);             // RGB红色
		display.setCursorLine(3);
		display.printLine("后退");
	}
	// 判断向左倾斜
	if ((accelerometer.isGesture(accelerometer.TiltLeft))) {
		Radio.send("zuo");                  // 发送:左转指令
		rgb.write(1, 0x0000FF);             // RGB蓝色
		display.setCursorLine(3);
		display.printLine("左转弯");
	}
	// 判断向右倾斜
	if ((accelerometer.isGesture(accelerometer.TiltRight))) {
		Radio.send("you");                  // 发送:右转指令
		rgb.write(1, 0xFF9900);             // RGB橙黄色
		display.setCursorLine(3);
		display.printLine("右转弯");
	}
}

// ==========按键A回调函数:开灯指令==========
void onButtonAPressed() {
	Radio.send("deng");                   // 发送开灯指令
	rgb.write(1, 0xFFFFFF);              // RGB白色
	display.setCursorLine(3);
	display.printLine("开灯");
}

// ==========按键B回调函数:停车指令==========
void onButtonBPressed() {
	Radio.send("ting");                   // 发送停车指令
	rgb.write(1, 0x6600CC);               // RGB紫色
	display.setCursorLine(3);
	display.printLine("停车");
}

掌控板射频遥控发送端 代码解读

一、项目总览
控制器:掌控板(ESP32)
通信方式:DFRobot_ESP32_Radio 2.4G 射频通信(⚠屏幕文字写 “蓝牙” 属于笔误,并非蓝牙)
用途:作为遥控器,依靠板载加速度传感器识别倾斜姿态,搭配 A/B 按键,向行空板 K10 小车发送控制指令,适配两驱差速小车。
通信配对条件:接收端射频分组必须设置为 13。

二、模块分段解析

  1. 头文件与对象定义
#include <MPython.h>               // 掌控板底层驱动:屏幕、RGB灯、按键、加速度传感器
#include <DFRobot_ESP32_Radio.h>   // 2.4G无线射频通信库
void onButtonAPressed();
void onButtonBPressed();
DFRobot_ESP32Radio Radio;         // 创建射频通信对象
  1. setup () 上电初始化(只运行 1 次)
    mPython.begin():初始化掌控板全部外设
    setPressedCallback():为 A、B 按键绑定中断回调函数,按键按下立刻触发对应函数,无需轮询检测按键
    Radio.turnOn() 开启射频模块;setGroup(13) 设置通信组别
    rgb.brightness(8) 设置板载 RGB 灯光亮度
    屏幕打印固定标题文本,标识设备功能
  2. loop () 主循环(无限循环执行)
    核心:轮询加速度传感器姿态手势
    TiltForward 向前倾斜 → 发送qian 前进
    TiltBack 向后倾斜 → 发送hou 后退
    TiltLeft 向左倾斜 → 发送zuo 左转
    TiltRight 向右倾斜 → 发送you 右转
    每次识别到姿态,同步修改 RGB 灯光颜色,并在屏幕第三行刷新当前运行状态。
    逻辑特点:多个独立if判断,允许多个姿态同时识别。
  3. 按键回调函数(事件触发)
    onButtonAPressed():按下 A 键,发送指令deng,控制小车车灯开启
    onButtonBPressed():按下 B 键,发送指令ting,小车停车

三、指令对照表

在这里插入图片描述

四、存在的一些实操问题(后附优化方案)
持续倾斜会重复发包
loop 高速循环,保持倾斜姿态时,不断重复发送相同指令,占用通信带宽。
放平掌控板不会自动停车
只有手动按 B 键发送ting,小车才能停下;遥控器恢复水平无任何指令输出。
多姿态可同时触发
例如同时前倾 + 左倾,会连续发送前进、左转两条指令,小车动作冲突失控。
无防抖处理
手部轻微晃动容易导致姿态频繁切换,小车频繁变速。

五、配套硬件 & 软件要求
接收端:行空板 K10,同样导入 ESP32_Radio 库,分组设置 13
Mind + 环境,安装 DFRobot ESP32Radio 库,主板选择掌控板
收发设备必须在近距离(2.4G 射频视距通信)

Mind+图形编程

在这里插入图片描述

行空板K10简版蓝牙小车端

【花雕动手做】行空板 K10 系列实验之六通道简版蓝牙掌控板陀螺仪双驱差速智能小车

实验开源代码

// 离线语音合成TTS库,实现语音播报
#include "asr.h"
// 行空板K10底层驱动库:屏幕、RGB灯、按键
#include "unihiker_k10.h"
// Microbit电机驱动库,适配电机拓展板
#include <Microbit_Motor.h>
// DFRobot 2.4G射频通信库,和掌控板遥控器配对通信
#include <DFRobot_ESP32_Radio.h>

// ====================函数声明====================
// 收到指令"qian"触发
void onRadioReceive_0();
// 收到指令"hou"触发
void onRadioReceive_1();
// 收到指令"deng"触发
void onRadioReceive_2();
// 收到指令"zuo"触发
void onRadioReceive_3();
// 收到指令"ting"触发
void onRadioReceive_4();

// ====================创建对象====================
DFRobot_ESP32Radio Radio;    // 2.4G射频通信对象
Microbit_Motor     motorbit; // 电机驱动对象
UNIHIKER_K10       k10;      // 行空板K10主控对象
uint8_t            screen_dir=2; // 屏幕方向参数 2=默认正向
ASR                asr;      // TTS语音播报对象

// ====================初始化函数(上电仅运行一次)====================
void setup() {
	// 绑定射频字符串指令与对应回调函数
	Radio.setCallback("qian", onRadioReceive_0);
	Radio.setCallback("hou", onRadioReceive_1);
	Radio.setCallback("deng", onRadioReceive_2);
	Radio.setCallback("zuo", onRadioReceive_3);
	Radio.setCallback("ting", onRadioReceive_4);

	k10.begin();                         // 初始化行空板所有硬件外设
	k10.initScreen(screen_dir);          // 根据设定方向初始化显示屏
	k10.creatCanvas();                   // 创建画布,用于屏幕文字绘图
	
	asr.setAsrSpeed(2);                  // 设置语音播报语速,数值越大语速越快
	
	Radio.turnOn();                      // 开启2.4G射频模块
	Radio.setGroup(13);                  // 设置通信分组【必须和遥控器Group=13保持一致】
	
	k10.setScreenBackground(0x000000);   // 设置屏幕背景黑色
	// 在画布写入标题文字
	k10.canvas->canvasText("行空板 K10 双驱小车", 5, 0xFFFFFF);
	k10.canvas->updateCanvas();          // 刷新画布,文字显示到屏幕
	
	k10.rgb->brightness(round(6));       // 设置板载RGB亮度
	
	asr.speak("行空板小车准备就绪");      // 上电语音播报提示
}

// ====================主循环====================
// ⚠本程序所有功能依靠射频事件回调实现,loop无业务代码
void loop() {

}

// ====================射频指令回调函数====================
// 指令:qian 前进
void onRadioReceive_0() {
	motorbit.motorRun(M1, CW, 200);      // M1电机顺时针运转,速度200
	motorbit.motorRun(M4, CW, 200);      // M4电机顺时针运转,速度200
	k10.rgb->write(-1, 0x00FF00);        // 全部RGB灯设置绿色
}

// 指令:hou 后退
void onRadioReceive_1() {
	motorbit.motorRun(M1, CCW, 200);     // M1电机逆时针
	motorbit.motorRun(M4, CCW, 200);     // M4电机逆时针
	k10.rgb->write(-1, 0xFF0000);        // RGB红色
}

// 指令:deng 开灯
void onRadioReceive_2() {
	k10.rgb->write(-1, 0xFFFFFF);        // RGB白色常亮
	asr.speak("打开白色灯光");            // 语音播报
}

// 指令:zuo 左转
void onRadioReceive_3() {
	motorbit.motorRun(M1, CW, 200);       // 左轮前进
	motorbit.motorRun(M4, CCW, 200);      // 
	k10.rgb->write(-1, 0x0000FF);         // RGB蓝色
}

// 指令:ting 停车
void onRadioReceive_4() {
	motorbit.motorStop(ALL);              // 停止所有电机
	k10.rgb->write(-1, 0x6600CC);         // RGB紫色
	asr.speak("小车停止");                // 语音播报停止提示
}

行空板 K10 小车射频接收端 代码解读

整体概述
硬件:行空板 K10 + microbit 电机驱动板(双驱差速小车)
通信:DFRobot_ESP32_Radio 2.4G 私有射频
工作模式:事件回调机制,配合上一份【掌控板姿态遥控器】使用
功能:接收无线指令,控制小车前进 / 后退 / 左转 / 停车、RGB 灯光、离线 TTS 语音播报
通信硬性规则:收发双方 Radio.setGroup(13) 分组必须一致才能通信。

一、头文件与对象解析

#include "asr.h"                // 离线TTS语音合成库,实现中文播报
#include "unihiker_k10.h"       // 行空板K10底层驱动(屏幕、RGB、外设)
#include <Microbit_Motor.h>     // microbit电机扩展板驱动库
#include <DFRobot_ESP32_Radio.h>// 2.4G无线射频通信库

// 函数声明:收到对应无线指令自动触发的回调函数
void onRadioReceive_0(); //qian
void onRadioReceive_1(); //hou
void onRadioReceive_2(); //deng
void onRadioReceive_3(); //zuo
void onRadioReceive_4(); //ting

// 对象实例
DFRobot_ESP32Radio Radio;    // 射频通信对象
Microbit_Motor     motorbit; // 电机控制对象
UNIHIKER_K10       k10;      // 行空板主控对象
uint8_t            screen_dir=2; //屏幕旋转方向
ASR                asr;      //语音播报对象

二、setup () 初始化函数(上电仅运行一次)
Radio.setCallback(“指令字符串”, 函数名)
射频库功能:监听空中数据包,匹配到指定文本就自动执行绑定函数,不需要在 loop 轮询。
plaintext
“qian” → onRadioReceive_0
“hou” → onRadioReceive_1
“deng” → onRadioReceive_2
“zuo” → onRadioReceive_3
“ting” → onRadioReceive_4
k10.begin():初始化行空板全部硬件
initScreen() + creatCanvas():初始化显示屏,创建绘图画布
asr.setAsrSpeed(2):设置语音播报语速
Radio.turnOn(); Radio.setGroup(13):开启射频模块,设置通信组别
屏幕设置黑色背景、显示标题、刷新画布
设置 RGB 灯带亮度
asr.speak(“行空板小车准备就绪”):上电语音提示

三、loop () 主循环

void loop() {

}

关键特点:循环为空!
整套程序完全依靠无线事件回调驱动。射频库在后台独立监听消息,收到指令自动运行回调函数,无需轮询检测无线数据。

四、回调函数功能对照表

在这里插入图片描述

实验场景图与视频记录

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

【【花雕动手做】行空板 K10 系列实验之六通道简版蓝牙掌控板陀螺仪双驱差速智能小车 #diy机器人 #手工机器人 #制作小车 #行空板k10 #科技改变生活】

https://www.bilibili.com/video/BV1EJGA63EUK/?share_source=copy_web&vd_source=371a292a55e5ca9be994cbb4a86cc987

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐