358浏览
查看: 358|回复: 9

[K10教程] 【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号

[复制链接]
【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号图1

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

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


【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号图2

驴友花雕  高级技神
 楼主|

发表于 2026-7-2 18:27:32

【花雕动手做】行空板K10之TT马达差速特色底盘小车三号

小车方案三使用的特色底板、TT电机与扩展板

【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号图2

【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号图3

【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号图4

【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号图1

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-7-2 18:29:44

【花雕动手做】行空板K10之TT马达差速特色底盘小车三号

小车动力电池方案(使用移动电源)与电机扩展板

【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号图2

【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号图1

【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号图3
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-7-2 18:32:15

【花雕动手做】行空板K10之TT马达差速特色底盘小车三号

主打:人工智能模块

【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号图1

语音识别合成相关说明

【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号图2

【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号图3

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-7-2 18:34:33

【花雕动手做】行空板K10之TT马达差速特色底盘小车三号

辅助:屏幕显示相关积木

【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号图3

接脚 IO 扩展模块

【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号图1
【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号图4

LED控制模块

【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号图2

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-7-2 20:38:10

【花雕动手做】行空板K10之TT马达差速特色底盘小车三号

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

【花雕动手做】行空板 K10 系列实验之TT马达双路差速智能小车方案三号特色底盘
实验开源代码

  1. // 引入离线语音识别库asr.h,提供语音唤醒、拼音指令识别功能
  2. #include "asr.h"
  3. // 引入IOBOX专用电机驱动库,封装双路电机调速、转向、停止API,简化小车控制
  4. #include <IOBOX_Motor.h>
  5. // 行空板K10主板底层驱动库,用于屏幕初始化、画布文字绘制
  6. #include "unihiker_k10.h"
  7. // =====================硬件对象实例化=====================
  8. UNIHIKER_K10 k10;       // 行空板主控对象,统一管理LCD屏幕、系统底层硬件
  9. ASR          asr;        // 离线语音识别模块对象,处理麦克风收音、人声解析
  10. uint8_t      screen_dir=2;// 屏幕旋转参数,数值2代表屏幕倒置显示
  11. IOBOX_Motor  motor_ib;   // IOBOX电机驱动实例,控制小车M1左电机、M2右电机
  12. //=====================================================================
  13. // setup() 上电初始化函数,设备开机/重启仅执行1次
  14. // 作用:初始化主板、语音模块、屏幕,提前注册5条小车语音控制指令
  15. //=====================================================================
  16. void setup() {
  17.         // 初始化行空板全部底层硬件:串口、I2C总线、屏幕外设、IO资源
  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.         // 批量注册5条离线语音小车控制指令(拼音匹配识别)
  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 zhuan");// ID=4 语音口令:右转
  36.         asr.addASRCommand(4+1, "zuo zhuan");// ID=5 语音口令:左转
  37. }
  38. //=====================================================================
  39. // loop() 主循环函数,初始化完成后无限循环运行
  40. // 作用:实时检测语音唤醒、识别语音口令,调用电机库控制小车,同步屏幕状态文字
  41. //=====================================================================
  42. void loop() {
  43.         // 语音唤醒判断:检测麦克风是否识别到唤醒词【你好小新】
  44.         if (asr.isWakeUp()) {
  45.                 // 唤醒成功:画布第6行输出红色提示文字
  46.                 k10.canvas->canvasText("已唤醒行空板小车.......", 6, 0xFF0000);
  47.                 // 将画布缓存内容刷新输出到LCD屏幕
  48.                 k10.canvas->updateCanvas();
  49.         }
  50.         else {
  51.                 // 未唤醒待机状态:第4行输出蓝色文字,提示用户唤醒关键词
  52.                 k10.canvas->canvasText("唤醒词为“你好小新”", 4, 0x0000FF);
  53.                 k10.canvas->updateCanvas();
  54.         }
  55.         // ==========语音指令1:qian jin 小车前进==========
  56.         if (asr.isDetectCmdID(0+1)) {
  57.                 // motorRun(电机通道, 转向, 速度)
  58.                 // motor_ib.ALL:同时控制M1、M2两路全部电机
  59.                 // motor_ib.CW:电机顺时针同向转动,小车直线向前行驶
  60.                 // 200:速度参数,范围0~255,数值越大转速越快,200为中高速
  61.                 motor_ib.motorRun(motor_ib.ALL, motor_ib.CW, 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(电机通道):切断对应电机输出,电机断电锁死,小车立刻停止
  70.                 motor_ib.motorStop(motor_ib.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.                 // motor_ib.CCW:电机逆时针同向转动,小车向后倒退,速度200
  77.                 motor_ib.motorRun(motor_ib.ALL, motor_ib.CCW, 200);
  78.                 k10.canvas->canvasText("K10 小车后退", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  79.                 k10.canvas->updateCanvas();
  80.         }
  81.         // ==========语音指令4:you zhuan 小车原地右转==========
  82.         if (asr.isDetectCmdID(3+1)) {
  83.                 // 差速转向逻辑:左轮M1顺时针、右轮M2逆时针反向转动,实现原地向右转向
  84.                 motor_ib.motorRun(motor_ib.M1, motor_ib.CW, 200);
  85.                 motor_ib.motorRun(motor_ib.M2, motor_ib.CCW, 200);
  86.                 k10.canvas->canvasText("K10 小车右转", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  87.                 k10.canvas->updateCanvas();
  88.         }
  89.         // ==========语音指令5:zuo zhuan 小车原地左转==========
  90.         if (asr.isDetectCmdID(4+1)) {
  91.                 // 差速转向逻辑:左轮M1逆时针、右轮M2顺时针反向转动,实现原地向左转向
  92.                 motor_ib.motorRun(motor_ib.M1, motor_ib.CCW, 200);
  93.                 motor_ib.motorRun(motor_ib.M2, motor_ib.CW, 200);
  94.                 k10.canvas->canvasText("K10小车左转", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
  95.                 k10.canvas->updateCanvas();
  96.         }
  97.         // 清空画布第6行及下方所有文字,清除上一轮状态提示,防止新旧文字重叠残影
  98.         k10.canvas->canvasClear(6);
  99. }
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-7-3 11:25:52

【花雕动手做】行空板K10之TT马达差速特色底盘小车三号

代码解读
一、项目整体功能概述
本程序运行在行空板 K10,搭配离线 ASR 语音识别模块、IOBOX 双路电机驱动,实现语音遥控两轮差速小车。
唤醒口令固定:你好小新;
支持 5 种语音动作指令:前进、停车、后退、原地右转、原地左转;
IOBOX 电机库封装电机控制,自带 PWM 调速,屏幕用大号字体实时显示小车运行状态。

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

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

asr.h:离线语音识别专用库,提供持续收音、唤醒检测、自定义拼音指令识别功能;
IOBOX_Motor.h:IOBOX 电机驱动扩展库,封装双路直流电机的正反转、PWM 调速、刹车停止,无需手动操作 IO 电平;
unihiker_k10.h:行空板 K10 底层驱动库,负责 LCD 屏幕初始化、画布文字绘制、硬件底层初始化。

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

k10:行空板主控对象,统一管理屏幕显示、系统硬件总线;
asr:语音识别模块实例,处理麦克风收音与人声解析;
screen_dir=2:屏幕旋转参数,数字 2 代表屏幕倒置显示;
motor_ib:IOBOX 电机驱动实例,控制小车左电机 M1、右电机 M2。

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

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

初始化行空板全部底层硬件,包括串口、I2C 总线、屏幕、外设资源。

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

初始化语音模块:
CONTINUOUS:持续收音模式,麦克风不间断监听人声;
CN_MODE:中文识别模式,仅识别中文拼音口令;
12000:收音灵敏度,数值越大抗环境噪音、防误唤醒能力越强;
循环等待语音模块加载语音模型,_asrState==0代表模块未就绪,每 100ms 检测一次,防止未初始化调用报错。

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

按倒置参数点亮 LCD 屏幕,创建画布缓冲区,所有文字先存入缓存,再统一刷新到屏幕。

  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 zhuan");// ID4 右转
  5. asr.addASRCommand(4+1, "zuo zhuan");// ID5 左转
复制代码

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

四、loop () 无限主循环,实时监听语音指令
1. 唤醒状态判断逻辑

  1. if (asr.isWakeUp())
复制代码

函数isWakeUp()用于检测是否识别唤醒词「你好小新」:
唤醒成功:屏幕第 6 行红色文字提示 “已唤醒行空板小车”;
未唤醒待机:屏幕第 4 行蓝色文字提示唤醒关键词;
updateCanvas()将画布缓存文字刷新输出到实体屏幕。

2. IOBOX 电机核心函数说明
motorRun(通道, 转向, 速度)
通道:M1左电机、M2右电机、ALL同时控制两路电机;
转向:CW顺时针、CCW逆时针;
速度范围:0~255,数值越大转速越快,本程序统一使用 200 中高速;
motorStop(通道):切断电机输出,电机断电刹车,小车立即静止。

3. 每条语音指令动作拆解
(1)qian jin 前进

  1. motor_ib.motorRun(motor_ib.ALL, motor_ib.CW, 200);
复制代码

左右电机同时顺时针同向转动,小车直线向前,屏幕显示 “K10 小车前进”。
(2)ting che 停车

  1. motor_ib.motorStop(motor_ib.ALL);
复制代码

两路电机全部断电刹车,小车立刻停止,屏幕显示 “K10 小车停止”。
(3)hou tui 后退

  1. motor_ib.motorRun(motor_ib.ALL, motor_ib.CCW, 200);
复制代码

左右电机同时逆时针同向转动,小车直线后退,屏幕显示 “K10 小车后退”。
(4)you zhuan 原地右转

  1. motor_ib.motorRun(motor_ib.M1, motor_ib.CW, 200);
  2. motor_ib.motorRun(motor_ib.M2, motor_ib.CCW, 200);
复制代码

差速转向逻辑:左轮顺时针、右轮逆时针反向转动,小车原地持续右转,屏幕同步提示。
(5)zuo zhuan 原地左转

  1. motor_ib.motorRun(motor_ib.M1, motor_ib.CCW, 200);
  2. motor_ib.motorRun(motor_ib.M2, motor_ib.CW, 200);
复制代码

差速转向逻辑:左轮逆时针、右轮顺时针反向转动,小车原地持续左转,屏幕同步提示。
4. 屏幕清理语句

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

清空画布第 6 行及下方所有文字,清除上一轮运行状态,避免新旧文字重叠产生残影。

五、小车运动逻辑对照表

【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号图1

六、完整设备运行流程
设备上电,初始化主板硬件、语音模块,循环等待语音芯片加载完成;
初始化倒置 LCD 屏幕,创建绘图画布,录入 5 条小车语音控制口令;
麦克风不间断持续监听唤醒词 “你好小新”;
说出唤醒词解锁语音控制权限,屏幕红色文字提示已唤醒;
下达对应语音口令,IOBOX 驱动控制小车执行动作,屏幕同步大字显示当前运行状态;
循环自动清空屏幕下方文字,持续等待下一条语音指令。

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-7-3 11:28:49

【花雕动手做】行空板K10之TT马达差速特色底盘小车三号

Mind+图形编程

【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号图1
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-7-3 11:30:31

【花雕动手做】行空板K10之TT马达差速特色底盘小车三号

实验场景图与视频记录

【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号图1

【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号图2

【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号图3

【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号图4
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-7-3 11:58:53

【花雕动手做】行空板K10之TT马达差速特色底盘小车三号

【花雕动手做】行空板 K10之TT马达差速特色底盘小车三号图1


【【花雕动手做】行空板 K10 系列实验之TT马达双路差速智能小车方案三号特色底盘#行空板K10 #DIY小车 #人工智能机器人 #语音识别控制系统】

https://www.bilibili.com/video/BV1jfTp62EKg/?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