一、项目背景
行空板K10是一款集成了多种传感器和通信模块,如摄像头、麦克风、扬声器、WiFi和蓝牙等,能够实现语音识别、图像检测等功能,具有强大的计算能力和丰富的扩展接口,能够与各种外设进行连接,实现各种创意。对于学生来说,小车普遍非常受欢迎,我们可以尝试制作行空板K10声控小车,它通过编程和硬件的结合,让学生可以学习到人工智能、物联网等前沿技术,激发他们的创造力和实践能力。本文主要实现用声音指令(停止、前进、后退、向左、右转)控制小车的运行,以实例为依托,让学生了解语音识别技术,同时为后续自动避障等其他功能为铺垫。
二、项目硬件
主控板 | 执行器 | 小车零部件 | 电源 | 扩展板 | ||
行空板K10*1 | 电机*2 | 车体框架*1 | 万向轮*1 | 轮子*2 | 电池盒*1 | IO扩展板*1 |
|
|
|
| | | ![]() |
三、功能介绍
语音识别与控制:通过语音命令前进、后退、左转、右转、停止控制K10小车。
视频效果
https://www.bilibili.com/video/BV19nN3edEpd/
四、软件设置
1.下载安装Mind+软件
网页下载(20250103版):点击下载
mind+ V1.8.1 RC1.0
百度网盘下载(20250103版): https://pan.baidu.com/s/15ORx5VbobeZjiQvOxar21g?pwd=d2aa 提取码: d2aa
夸克网盘下载(20250103版): https://pan.quark.cn/s/db00cf6ae510
下载后解压到C盘根目录。
2.开始Mind+图形化编程
点击”扩展“,在扩展页面中,点击”主控板“,选择”行空板K10“,点击”返回“,完成加载

使用USB线将行空板K10的Type-C口接到电脑USB口,在mind+中点击“连接设备”,找到对应的K10设备并点击,完成设备连接
选择扩展板

五、编写程序








六、Arduino c代码
/*!
* MindPlus
* esp32s3bit
*
*/
#include "asr.h"
#include "unihiker_k10.h"
#include <Microbit_Motor.h>
#include "arduino_image_cache.h"
// 函数声明
void DF_TingZhi();
void DF_QianJin();
void DF_YouZhuan();
void DF_HouTui();
void DF_ZuoZhuan();
// 创建对象
UNIHIKER_K10 k10;
ASR asr;
uint8_t screen_dir=2;
Microbit_Motor motorbit;
// 主程序开始
void setup() {
k10.begin();
asr.asrInit(CONTINUOUS, CN_MODE, 10000);
while(asr._asrState == 0){delay(100);}
k10.initScreen(screen_dir);
k10.creatCanvas();
asr.setAsrSpeed(2);
asr.addASRCommand(0+1, "ting zhi");
asr.addASRCommand(1+1, "qian jin");
asr.addASRCommand(2+1, "hou tui");
asr.addASRCommand(3+1, "zuo zhuan");
asr.addASRCommand(4+1, "you zhuan");
k10.setScreenBackground(0xFFFFFF);
}
void loop() {
if (asr.isWakeUp()) {
k10.canvas->canvasText("小行已唤醒", 1, 0x000000);
k10.canvas->updateCanvas();
if (asr.isDetectCmdID(0+1)) {
DF_TingZhi();
}
if (asr.isDetectCmdID(1+1)) {
DF_QianJin();
}
if (asr.isDetectCmdID(2+1)) {
DF_HouTui();
}
if (asr.isDetectCmdID(3+1)) {
DF_ZuoZhuan();
}
if (asr.isDetectCmdID(4+1)) {
DF_YouZhuan();
}
}
else {
k10.canvas->canvasDrawBitmap(60,40,160,200,image_data1);
k10.canvas->canvasText("请说“你好小行”", 1, 0x000000);
k10.canvas->updateCanvas();
}
}
// 自定义函数
void DF_TingZhi() {
motorbit.motorStop(M1);
motorbit.motorStop(M4);
k10.canvas->canvasDrawBitmap(70,120,100,100,image_data2);
k10.canvas->canvasText(" 已停止", 3, 0x0000FF);
k10.canvas->updateCanvas();
asr.speak("已停止");
}
void DF_QianJin() {
motorbit.motorRun(M1, CW, 80);
motorbit.motorRun(M4, CCW, 80);
k10.canvas->canvasDrawBitmap(70,120,100,100,image_data3);
k10.canvas->canvasText(" 已前进", 3, 0x0000FF);
k10.canvas->updateCanvas();
asr.speak("已前进");
}
void DF_YouZhuan() {
motorbit.motorRun(M1, CCW, 80);
motorbit.motorRun(M4, CCW, 80);
k10.canvas->canvasText(" 已右转", 3, 0x0000FF);
k10.canvas->canvasDrawBitmap(70,120,100,100,image_data4);
k10.canvas->updateCanvas();
asr.speak("已右转");
}
void DF_HouTui() {
motorbit.motorRun(M1, CCW, 80);
motorbit.motorRun(M4, CW, 80);
k10.canvas->canvasDrawBitmap(70,120,100,100,image_data5);
k10.canvas->canvasText(" 已后退", 3, 0x0000FF);
k10.canvas->updateCanvas();
asr.speak("已后退");
}
void DF_ZuoZhuan() {
motorbit.motorRun(M1, CW, 50);
motorbit.motorRun(M4, CW, 50);
k10.canvas->canvasText(" 已左转", 3, 0x0000FF);
k10.canvas->canvasDrawBitmap(70,120,100,100,image_data6);
k10.canvas->updateCanvas();
asr.speak("已左转");
}
七、项目总结
通过本项目的学习,学生不仅熟悉了行空板K10的编程过程,体验了语音识别技术的应用,同时还培养了他们的计算思维能力,给后期小车增加其他功能提供了基础。
附件
评论