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

[K10教程] 【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车

[复制链接]
【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图1

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

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


【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图2

驴友花雕  高级技神
 楼主|

发表于 1 小时前

【花雕动手做】行空板K10之TT马达四驱全向福来轮小车

TT马达四驱全向福来轮小车使用的特色底板、TT电机、全向福来轮与扩展板

【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图2

【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图1

【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图3
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 1 小时前

【花雕动手做】行空板K10之TT马达四驱全向福来轮小车

【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图1

【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图3

【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图2
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 半小时前

【花雕动手做】行空板K10之TT马达四驱全向福来轮小车

主打:人工智能模块

【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图1

语音识别合成相关说明

【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图2

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 半小时前

【花雕动手做】行空板K10之TT马达四驱全向福来轮小车

辅助:屏幕显示相关积木

【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图2

接脚 IO 扩展模块

【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图4

【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图3

LED控制模块

【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图1

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 半小时前

【花雕动手做】行空板K10之TT马达四驱全向福来轮小车

本帖最后由 驴友花雕 于 2026-7-3 18:08 编辑

【花雕动手做】行空板 K10 系列实验之 TT 马达四驱动全向福来轮语音控制智能小车
实验开源代码

  1. // 引入离线语音识别库asr.h,提供语音唤醒、拼音指令识别、收音监听功能
  2. #include "asr.h"
  3. // 行空板K10主板底层驱动库,负责屏幕画布、硬件底层初始化
  4. #include "unihiker_k10.h"
  5. // Microbit四路电机驱动库,适配麦克纳姆轮四轮小车,支持M1/M2/M3/M4四路电机独立调速转向
  6. #include <Microbit_Motor.h>
  7. // =====================硬件对象实例化=====================
  8. UNIHIKER_K10   k10;        // 行空板主控对象,统一管理LCD屏幕、系统总线
  9. ASR            asr;         // 离线语音识别模块对象,处理麦克风收音与人声解析
  10. uint8_t        screen_dir=2; // 屏幕旋转参数:数值2代表屏幕倒置显示
  11. Microbit_Motor motorbit;    // 四路电机驱动实例,控制麦克纳姆四轮小车M1/M2/M3/M4电机
  12. //=====================================================================
  13. // setup() 上电初始化函数,设备开机/重启仅执行1次
  14. // 功能:初始化主板、语音模块、屏幕,提前注册6条麦克纳姆小车语音控制指令
  15. //=====================================================================
  16. void setup() {
  17.         // 初始化行空板全部底层硬件:串口、I2C、屏幕、外设资源
  18.         k10.begin();
  19.         // 初始化离线语音识别模块
  20.         // CONTINUOUS:持续收音模式,麦克风不间断监听环境人声
  21.         // CN_MODE:中文识别模式,仅识别中文拼音口令
  22.         // 12000:收音灵敏度阈值,数值越大抗环境噪音、误唤醒能力越强
  23.         asr.asrInit(CONTINUOUS, CN_MODE, 12000);
  24.         // 阻塞等待语音模块加载语音模型完成
  25.         // _asrState == 0 代表语音模块未就绪,每100ms循环检测一次状态,避免未初始化调用报错
  26.         while(asr._asrState == 0){delay(100);}
  27.         // 根据预设screen_dir参数初始化LCD显示屏
  28.         k10.initScreen(screen_dir);
  29.         // 创建屏幕绘图画布缓冲区,所有文字先写入画布缓存,统一刷新到实体屏幕
  30.         k10.creatCanvas();
  31.         // 批量注册6条离线语音小车控制指令(拼音匹配识别)
  32.         asr.addASRCommand(0+1, "qian jin"); // ID=1 语音口令:前进
  33.         asr.addASRCommand(1+1, "ting che"); // ID=2 语音口令:停车
  34.         asr.addASRCommand(2+1, "hou tui");  // ID=3 语音口令:后退
  35.         asr.addASRCommand(3+1, "you heng"); // ID=4 语音口令:右横移(右平移)
  36.         asr.addASRCommand(4+1, "zuo heng");  // ID=5 语音口令:左横移(左平移)
  37.         asr.addASRCommand(5+1, "zhuan quan");//ID=6 语音口令:原地转圈
  38. }
  39. //=====================================================================
  40. // loop() 主循环函数,初始化完成后无限循环运行
  41. // 功能:实时检测语音唤醒、识别语音口令,调用四路电机库控制麦克纳姆小车,同步屏幕状态文字
  42. //=====================================================================
  43. void loop() {
  44.         // 语音唤醒判断:检测麦克风是否识别到唤醒词【你好小新】
  45.         if (asr.isWakeUp()) {
  46.                 // 唤醒成功:画布第6行输出红色提示文字
  47.                 k10.canvas->canvasText("已唤醒行空板小车.......", 6, 0xFF0000);
  48.                 // 将画布缓存内容刷新输出到LCD屏幕
  49.                 k10.canvas->updateCanvas();
  50.         }
  51.         else {
  52.                 // 未唤醒待机状态:第4行输出蓝色文字,提示用户唤醒关键词
  53.                 k10.canvas->canvasText("唤醒词为“你好小新”", 4, 0x0000FF);
  54.                 k10.canvas->updateCanvas();
  55.         }
  56.         // ==========语音指令1:qian jin 小车直线前进(麦克纳姆轮)==========
  57.         if (asr.isDetectCmdID(0+1)) {
  58.                 // motorRun(电机通道, 转向, 速度)
  59.                 // M1左前电机 CW顺时针,M3右后电机 CCW逆时针,四轮配合直行向前
  60.                 motorbit.motorRun(M1, CW, 200);
  61.                 motorbit.motorRun(M3, CCW, 200);
  62.                 // 全屏居中24号黑色大字显示小车状态
  63.                 // 参数:X坐标、Y坐标、文字颜色、中英文字体、字号、自动换行开关
  64.                 k10.canvas->canvasText("K10 小车前进", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  65.                 k10.canvas->updateCanvas();
  66.         }
  67.         // ==========语音指令2:ting che 小车全部停车刹车==========
  68.         if (asr.isDetectCmdID(1+1)) {
  69.                 // motorStop(ALL):切断M1/M2/M3/M4四路电机全部输出,电机断电锁死,小车立刻静止
  70.                 motorbit.motorStop(ALL);
  71.                 k10.canvas->canvasText("K10 小车停止", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  72.                 k10.canvas->updateCanvas();
  73.         }
  74.         // ==========语音指令3:hou tui 小车直线后退==========
  75.         if (asr.isDetectCmdID(2+1)) {
  76.                 // M1左前CCW反转,M3右后CW反转,四轮配合直线向后倒退
  77.                 motorbit.motorRun(M1, CCW, 200);
  78.                 motorbit.motorRun(M3, CW, 200);
  79.                 k10.canvas->canvasText("K10 小车后退", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  80.                 k10.canvas->updateCanvas();
  81.         }
  82.         // ==========语音指令4:you heng 小车向右横向平移(右横移)==========
  83.         if (asr.isDetectCmdID(3+1)) {
  84.                 // M2右前CCW、M4左后CW,麦克纳姆轮差速实现车身整体向右平移
  85.                 motorbit.motorRun(M2, CCW, 200);
  86.                 motorbit.motorRun(M4, CW, 200);
  87.                 k10.canvas->canvasText("K10 小车右横", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  88.                 k10.canvas->updateCanvas();
  89.         }
  90.         // ==========语音指令5:zuo heng 小车向左横向平移(左横移)==========
  91.         if (asr.isDetectCmdID(4+1)) {
  92.                 // M2右前CW、M4左后CCW,麦克纳姆轮差速实现车身整体向左平移
  93.                 motorbit.motorRun(M2, CW, 200);
  94.                 motorbit.motorRun(M4, CCW, 200);
  95.                 k10.canvas->canvasText("K10小车左横", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  96.                 k10.canvas->updateCanvas();
  97.         }
  98.         // ==========语音指令6:zhuan quan 小车原地顺时针转圈==========
  99.         if (asr.isDetectCmdID(5+1)) {
  100.                 // M1/M2/M3/M4四路电机全部CW顺时针同向差速,车身原地持续旋转
  101.                 motorbit.motorRun(M1, CW, 200);
  102.                 motorbit.motorRun(M3, CW, 200);
  103.                 motorbit.motorRun(M2, CW, 200);
  104.                 motorbit.motorRun(M4, CW, 200);
  105.                 k10.canvas->canvasText("K10小车原地转圈", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  106.                 k10.canvas->updateCanvas();
  107.         }
  108.         // 清空画布第6行及下方所有文字,清除上一轮状态提示,防止新旧文字重叠残影
  109.         k10.canvas->canvasClear(6);
  110. }
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 半小时前

【花雕动手做】行空板K10之TT马达四驱全向福来轮小车

代码解读
一、项目整体功能
本程序适配麦克纳姆四轮全向小车,硬件组合:行空板 K10 + 离线 ASR 语音识别 + Microbit 四路电机驱动板,实现语音全向控制:
唤醒口令固定为「你好小新」;支持 6 种语音动作:前进、停车、后退、右横移、左横移、原地转圈,屏幕用大号字体实时显示车辆运动状态。

二、头文件与硬件对象解析

  1. #include "asr.h"
  2. #include "unihiker_k10.h"
  3. #include <Microbit_Motor.h>
复制代码

asr.h:离线语音识别库,提供持续收音、唤醒检测、拼音指令识别;
unihiker_k10.h:行空板底层驱动,管理 LCD 屏幕、画布绘制、系统硬件初始化;
Microbit_Motor.h:四路电机专用库,独立控制 M1/M2/M3/M4 四个电机,适配麦克纳姆轮差速运动。

  1. UNIHIKER_K10   k10;
  2. ASR            asr;
  3. uint8_t        screen_dir=2;
  4. Microbit_Motor motorbit;
复制代码

k10:行空板主控实例,负责屏幕显示;
asr:语音识别实例,处理麦克风收音解析;
screen_dir=2:屏幕倒置显示;
motorbit:四路电机驱动对象,分别控制左前 M1、右前 M2、右后 M3、左后 M4 电机。

三、setup () 上电初始化(仅开机运行 1 次)

  1. k10.begin();
复制代码

初始化行空板全部总线、屏幕、外设底层资源。

  1. asr.asrInit(CONTINUOUS, CN_MODE, 12000);
  2. while(asr._asrState == 0){delay(100);}
复制代码

语音模块配置:持续收音、中文识别、12000 抗噪灵敏度;循环等待语音模型加载完成,硬件就绪后才向下执行。

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

按倒置参数点亮屏幕,创建绘图缓存画布,文字先缓存再统一刷新。

  1. asr.addASRCommand(0+1, "qian jin");    // ID1 前进
  2. asr.addASRCommand(1+1, "ting che");    // ID2 停车
  3. asr.addASRCommand(2+1, "hou tui");     // ID3 后退
  4. asr.addASRCommand(3+1, "you heng");    // ID4 右横移
  5. asr.addASRCommand(4+1, "zuo heng");    // ID5 左横移
  6. asr.addASRCommand(5+1, "zhuan quan"); // ID6 原地转圈
复制代码

预注册 6 条离线拼音口令,语音模块仅能识别提前录入的指令。

四、loop () 无限主循环,实时监听语音指令
1. 唤醒状态检测
asr.isWakeUp() 判断是否识别唤醒词「你好小新」:
唤醒成功:屏幕第 6 行红色文字 “已唤醒行空板小车”;
未唤醒:屏幕蓝色文字提示唤醒口令;
updateCanvas() 将画布文字刷新到实体屏幕。

2. Microbit 电机库核心函数
motorRun(电机编号, 转向, 速度)
电机编号:M1 左前、M2 右前、M3 右后、M4 左后;
转向:CW 顺时针、CCW 逆时针;
速度范围 0~255,本程序统一 200 中高速;
motorStop(ALL):四路电机全部断电刹车,小车立刻静止。

3. 各语音指令运动逻辑(麦克纳姆轮专属差速控制)
1)qian jin 前进
M1 左前顺时针、M3 右后逆时针配合,四轮同向差速,车身直线向前。
2)ting che 停车
四路电机全部停止输出,小车锁死不动。
3)hou tui 后退
M1 左前逆时针、M3 右后顺时针,车身直线向后倒退。
4)you heng 右横移
M2 右前逆时针、M4 左后顺时针,车身整体向右横向平移。
5)zuo heng 左横移
M2 右前顺时针、M4 左后逆时针,车身整体向左横向平移。
6)zhuan quan 原地转圈
M1/M2/M3/M4 全部顺时针转动,四轮同向差速,车身持续原地旋转。

4. 屏幕清理代码

  1. k10.canvas->canvasClear(6);
  2. k10.canvas->canvasClear(6);
复制代码

作用:清空第 6 行及下方所有文字,清除上一轮状态;两行完全重复,属于冗余无效代码,删一行不影响功能。

五、运动动作对照表

【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图1

六、完整运行流程
设备上电,初始化主板、语音模块,等待语音硬件加载完成;
初始化倒置屏幕画布,录入 6 条小车语音控制口令;
麦克风持续监听唤醒词 “你好小新”;
唤醒后说出对应语音口令,四路电机按麦克纳姆差速逻辑运转,屏幕同步大字显示当前运动状态;
循环自动清空屏幕文字,持续等待下一条语音指令。

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 半小时前

【花雕动手做】行空板K10之TT马达四驱全向福来轮小车

Mind+图形编程

【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图1
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 半小时前

【花雕动手做】行空板K10之TT马达四驱全向福来轮小车

实验场景图与视频记录

【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图4

【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图2

【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图1

【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图3
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 半小时前

【花雕动手做】行空板K10之TT马达四驱全向福来轮小车

【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图1

【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图3

【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图2

【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图4
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 28 分钟前

【花雕动手做】行空板K10之TT马达四驱全向福来轮小车

【花雕动手做】行空板 K10 之 TT 马达四驱全向福来轮小车图1

【【花雕动手做】行空板 K10 系列实验之 TT 马达四驱动全向福来轮语音控制智能小车#人工智能机器人 #行空板小车 #DIY动手做 #科技改变生活】

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




回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail