【花雕动手做】行空板 K10 系列实验之TT 马达三驱动全向福来轮语音识别控制小车
行空板K10是一款专为快速体验物联网和学习人工智能而设计的开发学习板100%采用国产芯片知识产权自主可控符合信息科技课程中编程学习、物联网及人工智能等教学需求。该板集成2.8寸LCD彩屏、WiFi蓝牙、摄像头、麦克风、扬声器、RGB指示灯、多种传感器及丰富的扩展接口。凭借高度集成的板载资源教学过程中无需额外连接其他设备便可轻松实现传感器控制、物联网应用以及人脸识别、语音识别、语音合成等AI人工智能项目。主要特点集成摄像头内置算法可进行离线图像检测集成麦克风内置算法可进行离线语音识别集成扬声器内置算法可进行离线语音合成2.8寸彩色屏幕数据展示更清晰集成度高利于教学接口丰富兼容软件多扩展性好三驱全向福来轮小车使用的特色底板、TT马达、锂电池、全向福来轮与扩展板知识点三驱福来轮三轮全向轮控制原理一、福来轮全向 Omni 轮基础结构与力学特性福来轮vs麦克纳姆轮对比轮子结构福来轮由主驱动轮毂 一圈垂直于主轴的被动小滚轮组成电机驱动主轮毂旋转沿轮毂切线方向输出主动推力外圈小滚轮与主轴 90° 垂直可无阻力被动横向滑动单个轮子只能输出单方向主动力垂直主轴方向完全自由滑动。和麦克纳姆轮核心区别麦克纳姆轮斜 45° 辊子单轮可同时分解横向 纵向分力最少 4 轮底盘福来全向轮辊子垂直主轴单轮只有单向主动推力必须 3 轮呈 120° 三角布局依靠矢量叠加实现全向移动。二、三轮标准布局核心硬件前提三个福来轮在圆形底盘上均匀正三角分布两两夹角严格 120°每个轮子主轴指向底盘几何中心三轮120°布局坐标系1 号轮前轮安装角 90°主轴沿车身 Y 轴正方向2 号轮左后安装角 210°3 号轮右后安装角 330°每个轮子独立配 1 个直流减速电机 驱动芯片三路 PWM 独立调速、正反转控制。关键三个轮子缺一不可两轮福来轮无法实现全向平移 / 原地自转。三、底层力学运动原理矢量叠加核心单个福来轮仅能沿自身主轴方向产生推力垂直主轴方向可自由滑动无阻力三个轮子的推力矢量在 XY 平面叠加合成车身X 横向、Y 纵向平移速度 绕中心旋转角速度通过修改三个电机的转速大小、旋转方向正负速度改变三个推力矢量就能合成平面内任意运动直行、横移、斜走、原地零半径旋转。运动学速度换算公式主控代码核心计算设车身目标运动Vx车身左右横向速度右为正Vy车身前后纵向速度前为正ω车身原地旋转角速度顺时针为正R底盘中心到任意轮子的距离三个轮子目标线速度plaintextV1 Vy R·ωV2 -0.5·Vy - 0.866·Vx R·ωV3 -0.5·Vy 0.866·Vx R·ω计算结果正负号 电机转向数值绝对值 PWM 调速占空比主控收到前进 / 横移 / 转圈指令后先算出 Vx、Vy、ω再代入公式算出三路电机转速输出。四、6 种标准运动电机控制逻辑对应语音遥控场景直线向前Vy0Vx0ω0目标仅纵向向前无横向偏移、不旋转计算结果V1 正转V2 反转V3 反转三轮速度绝对值相等1 号轮向前推2、3 号轮向后抵消横向分力合力纯向前。直线向后Vy0Vx0ω0全部转向与前进反向V1 反转V2、V3 正转速度大小一致。车身整体向右横移Vx0Vy0ω0V10前轮停机V2 正转V3 反转速度相同2、3 轮推力合成纯向右合力前轮横向自由滑动无阻力。车身整体向左横移Vx0Vy0ω0V1 停机V2 反转V3 正转左右合力向左。原地顺时针转圈Vx0Vy0ω0V1、V2、V3 全部同向正转速度大小完全相等三轮推力形成环绕中心的旋转力偶无平移分量原地自转。斜向行走Vx、Vy 同时不为 0ω0三轮按公式分配不同转速同时产生纵向 横向合力车身斜向直行。停车V1V2V30三路电机全部断电刹车。五、电子控制完整流程行空板 / ESP32 语音小车适配硬件链路主控行空板 K10→ 三路 PWM 引脚 → L298N/L9110S 电机驱动 → 三路 N20 减速电机 → 福来轮PWM 占空比0~255 对应速度大小IO 高低电平控制电机 CW 正转 / CCW 反转可选电机 AB 相编码器采集脉冲做 PID 速度闭环修正打滑误差。软件控制流程语音小车逻辑语音识别模块接收口令前进 / 右横 / 转圈解析出目标 Vx、Vy、ω主控代入三轮运动学公式计算 V1/V2/V3 三路电机目标速度将速度正负转为电机转向数值转为 PWM 输出循环实时刷新三路电机转速屏幕同步显示运动状态喊 “停车” 时三路电机全部置 0 停机。六、三轮福来轮 vs 四轮麦克纳姆轮优缺点对比七、典型应用场景创客教育语音遥控小车你当前行空板语音项目小型桌面巡检机器人、绘图机器人狭小空间转运轻型物料 AGV云台小型全向移动底座。八、三轮驱动与四轮驱动全向福来轮配置图【花雕动手做】行空板 K10 系列实验之TT 马达三驱动全向福来轮语音识别控制小车实验开源代码// 引入离线语音识别库asr.h实现语音唤醒、拼音口令识别、持续收音监听#includeasr.h// 行空板K10底层驱动库负责LCD屏幕初始化、画布文字绘制、主板硬件初始化#includeunihiker_k10.h// Microbit三路电机驱动库适配三轮福来全向轮底盘独立控制M1/M2/M3三路电机调速换向#includeMicrobit_Motor.h// 硬件对象实例化UNIHIKER_K10 k10;// 行空板主控对象统一管理屏幕、系统通信总线ASR asr;// 离线语音识别模块实例处理麦克风收音与人声解析uint8_tscreen_dir2;// 屏幕旋转参数数值2代表屏幕倒置显示Microbit_Motor motorbit;// 三路电机驱动实例对应三轮福来轮底盘M1、M2、M3三个独立电机//// setup() 上电初始化函数设备开机/重启仅执行1次// 功能初始化主板、语音模块、屏幕批量注册7条三轮福来轮小车语音控制口令//voidsetup(){// 初始化行空板全部底层硬件串口、I2C总线、LCD屏幕、外设IO资源k10.begin();// 初始化离线语音识别模块三大核心参数// CONTINUOUS持续收音模式麦克风不间断监听环境人声// CN_MODE中文识别模式仅识别中文拼音口令// 12000收音灵敏度阈值数值越大抗环境噪音、误唤醒能力越强asr.asrInit(CONTINUOUS,CN_MODE,12000);// 阻塞循环等待语音模块加载语音模型完成// _asrState 0 代表语音模块未就绪每100ms循环检测一次状态防止未初始化调用报错while(asr._asrState0){delay(100);}// 根据预设screen_dir参数初始化LCD显示屏k10.initScreen(screen_dir);// 创建屏幕绘图画布缓冲区所有文字先写入画布缓存统一刷新到实体屏幕k10.creatCanvas();// 批量注册7条离线语音小车控制指令拼音匹配识别asr.addASRCommand(01,qian jin);// ID1 语音口令前进asr.addASRCommand(11,ting che);// ID2 语音口令停车asr.addASRCommand(21,hou tui);// ID3 语音口令后退asr.addASRCommand(31,you heng);// ID4 语音口令右横移asr.addASRCommand(41,zuo heng);// ID5 语音口令左横移asr.addASRCommand(51,shun zhuan);// ID6 语音口令顺时针原地转圈asr.addASRCommand(61,ni zhuan);// ID7 语音口令逆时针原地转圈}//// loop() 主循环函数初始化完成后无限循环运行// 功能实时检测语音唤醒、识别语音口令调用三路电机库控制三轮福来全向小车同步屏幕状态大字//voidloop(){// 语音唤醒判断检测麦克风是否识别到固定唤醒词【你好小新】if(asr.isWakeUp()){// 唤醒成功画布第6行输出红色提示文字k10.canvas-canvasText(已唤醒行空板小车.......,6,0xFF0000);// 将画布缓存内容刷新输出到LCD实体屏幕k10.canvas-updateCanvas();}else{// 未唤醒待机状态第4行输出蓝色文字提示用户唤醒关键词k10.canvas-canvasText(唤醒词为“你好小新”,4,0x0000FF);k10.canvas-updateCanvas();}// 语音指令1qian jin 小车直线前进三轮福来轮if(asr.isDetectCmdID(01)){// motorRun(电机通道, 转向, 速度)// M2电机顺时针CW、M3电机逆时针CCWM1不启动三轮推力矢量合成纯向前合力motorbit.motorRun(M2,CW,200);motorbit.motorRun(M3,CCW,200);// 全屏居中24号黑色大字显示小车运行状态// 参数X坐标、Y坐标、文字颜色、中英文字体、字号、自动换行开关k10.canvas-canvasText(K10 小车前进,0,180,0x000000,k10.canvas-eCNAndENFont24,50,true);k10.canvas-updateCanvas();}// 语音指令2ting che 小车全部刹车停止if(asr.isDetectCmdID(11)){// motorStop(ALL)一次性切断M1/M2/M3三路电机输出电机断电锁死小车立刻静止motorbit.motorStop(ALL);k10.canvas-canvasText(K10 小车停止,0,180,0x000000,k10.canvas-eCNAndENFont24,50,true);k10.canvas-updateCanvas();}// 语音指令3hou tui 小车直线后退if(asr.isDetectCmdID(21)){// M2逆时针CCW、M3顺时针CW与前进转向完全反向矢量合成纯向后推力motorbit.motorRun(M2,CCW,200);motorbit.motorRun(M3,CW,200);k10.canvas-canvasText(K10 小车后退,0,180,0x000000,k10.canvas-eCNAndENFont24,50,true);k10.canvas-updateCanvas();}// 语音指令4you heng 小车整体向右横向平移if(asr.isDetectCmdID(31)){// M1逆时针、M2顺时针、M3逆时针三轮推力抵消纵向分力合成向右横向合力motorbit.motorRun(M1,CCW,200);motorbit.motorRun(M2,CW,200);motorbit.motorRun(M3,CCW,200);k10.canvas-canvasText(K10 小车右横,0,180,0x000000,k10.canvas-eCNAndENFont24,50,true);k10.canvas-updateCanvas();}// 语音指令5zuo heng 小车整体向左横向平移if(asr.isDetectCmdID(41)){// M1顺时针、M2逆时针、M3顺时针三轮推力抵消纵向分力合成向左横向合力motorbit.motorRun(M1,CW,200);motorbit.motorRun(M2,CCW,200);motorbit.motorRun(M3,CW,200);k10.canvas-canvasText(K10小车左横,0,180,0x000000,k10.canvas-eCNAndENFont24,50,true);k10.canvas-updateCanvas();}// 语音指令6shun zhuan 小车原地顺时针转圈if(asr.isDetectCmdID(51)){// M1/M2/M3全部逆时针CCW同步转动三轮推力形成环绕底盘中心的旋转力偶无平移分量motorbit.motorRun(M1,CCW,200);motorbit.motorRun(M2,CCW,200);motorbit.motorRun(M3,CCW,200);k10.canvas-canvasText(K10小车顺时针转圈,0,180,0x000000,k10.canvas-eCNAndENFont24,50,true);k10.canvas-updateCanvas();}// 语音指令7ni zhuan 小车原地逆时针转圈if(asr.isDetectCmdID(61)){// M1/M2/M3全部顺时针CW同步转动反向旋转力偶车身原地逆时针自转motorbit.motorRun(M1,CW,200);motorbit.motorRun(M2,CW,200);motorbit.motorRun(M3,CW,200);k10.canvas-canvasText(K10小车逆时针转圈,0,180,0x000000,k10.canvas-eCNAndENFont24,50,true);k10.canvas-updateCanvas();}// 清空画布第6行及下方所有文字清除上一轮运动状态文字防止新旧文字重叠产生残影k10.canvas-canvasClear(6);}代码解读一、项目整体功能本程序硬件搭配行空板 K10 离线 ASR 语音识别模块 Microbit 三路电机驱动 三轮福来全向轮底盘实现语音全向小车控制。固定唤醒口令你好小新共 7 组语音动作指令前进、停车、后退、右横移、左横移、顺时针原地转圈、逆时针原地转圈依靠福来轮 90° 被动辊子矢量推力叠加实现直行、左右横移、双向零半径自转LCD 屏幕使用 24 号大号字体实时显示车辆当前运动状态三路电机统一速度 200调速范围 0~255。二、头文件与硬件对象解析#includeasr.h#includeunihiker_k10.h#includeMicrobit_Motor.hasr.h离线语音识别库提供持续收音、唤醒检测、自定义拼音指令识别unihiker_k10.h行空板底层驱动管理 LCD 屏幕、画布文字、主板硬件初始化Microbit_Motor.h三路电机专用驱动库独立控制 M1/M2/M3 电机适配三轮福来轮底盘。UNIHIKER_K10 k10;ASR asr;uint8_tscreen_dir2;Microbit_Motor motorbit;k10行空板主控实例负责屏幕显示、系统总线初始化asr语音识别实例处理麦克风收音与人声解析screen_dir2设置屏幕倒置显示motorbit三路电机驱动对象对应三轮福来轮三个独立驱动电机 M1、M2、M3。三、setup () 上电初始化仅开机运行 1 次k10.begin();初始化行空板全部底层硬件、I2C / 串口总线、屏幕外设资源。asr.asrInit(CONTINUOUS,CN_MODE,12000);while(asr._asrState0){delay(100);}语音模块初始化配置CONTINUOUS持续收音模式麦克风实时监听环境人声CN_MODE中文识别模式仅识别中文拼音口令12000收音灵敏度数值越大抗噪音、防误唤醒能力越强循环阻塞等待语音模块加载语音模型硬件就绪后才执行后续代码。k10.initScreen(screen_dir);k10.creatCanvas();按照倒置参数点亮 LCD 屏幕创建绘图缓存画布所有文字先存入缓存再统一刷新到屏幕避免频繁刷屏闪烁。asr.addASRCommand(01,qian jin);// ID1 前进asr.addASRCommand(11,ting che);// ID2 停车asr.addASRCommand(21,hou tui);// ID3 后退asr.addASRCommand(31,you heng);// ID4 右横移asr.addASRCommand(41,zuo heng);// ID5 左横移asr.addASRCommand(51,shun zhuan);// ID6 顺时针转圈asr.addASRCommand(61,ni zhuan);// ID7 逆时针转圈批量注册 7 条离线语音拼音口令离线语音模块仅能识别提前录入的指令无法识别未注册词语。四、loop () 无限主循环实时监听语音指令唤醒状态检测asr.isWakeUp() 函数判断是否识别唤醒词「你好小新」唤醒成功屏幕第 6 行红色文字提示 “已唤醒行空板小车”未唤醒待机屏幕第 4 行蓝色文字提示唤醒口令updateCanvas() 将画布缓存文字一次性刷新输出到实体屏幕。Microbit 电机库核心函数说明motorRun(通道, 转向, 速度)通道M1/M2/M3 单路电机ALL 代表同时控制全部三路转向CW顺时针CCW逆时针速度区间0~255本程序统一使用 200 中高速motorStop(ALL)切断三路电机全部输出电机断电刹车小车立刻锁死静止。每条语音指令运动逻辑三轮福来轮矢量推力原理① qian jin 前进motorbit.motorRun(M2,CW,200);motorbit.motorRun(M3,CCW,200);M1 前轮停机M2、M3 后轮反向转动两轮推力矢量叠加横向分力抵消合力纯向前车身直线直行。② ting che 停车motorbit.motorStop(ALL);M1/M2/M3 三路电机全部停止输出三轮无驱动力小车立刻静止锁死。③ hou tui 后退motorbit.motorRun(M2,CCW,200);motorbit.motorRun(M3,CW,200);M2、M3 转向与前进完全反向矢量合成纯向后推力车身直线倒退。④ you heng 右横移motorbit.motorRun(M1,CCW,200);motorbit.motorRun(M2,CW,200);motorbit.motorRun(M3,CCW,200);三轮配合转动前后纵向推力相互抵消仅保留向右横向合力车身整体向右平移。⑤ zuo heng 左横移motorbit.motorRun(M1,CW,200);motorbit.motorRun(M2,CCW,200);motorbit.motorRun(M3,CW,200);三轮推力抵消纵向分力横向合力向左车身整体向左平移。⑥ shun zhuan 顺时针原地转圈motorbit.motorRun(M1,CCW,200);motorbit.motorRun(M2,CCW,200);motorbit.motorRun(M3,CCW,200);三轮全部同步逆时针转动推力形成环绕底盘中心的旋转力偶无平移分量原地持续顺时针自转。⑦ ni zhuan 逆时针原地转圈motorbit.motorRun(M1,CW,200);motorbit.motorRun(M2,CW,200);motorbit.motorRun(M3,CW,200);三轮全部同步顺时针转动反向旋转力偶车身原地逆时针持续自转。4. 屏幕清理语句k10.canvas-canvasClear(6);清空画布第 6 行及下方所有文字清除上一轮运动状态文字防止新旧文字重叠产生残影。五、7 种运动模式电机配置对照表六、完整设备运行流程设备上电初始化行空板硬件、语音模块循环等待语音芯片加载语音模型初始化倒置 LCD 屏幕、创建绘图画布录入 7 条小车语音控制拼音指令麦克风不间断持续监听唤醒词「你好小新」说出唤醒词解锁语音控制权限屏幕红色文字提示已唤醒说出对应语音口令三路电机按照三轮福来轮矢量差速逻辑运转屏幕同步大字显示当前运动状态循环末尾自动清空屏幕下方文字持续等待下一条语音指令。Mind图形编程实验场景图与视频记录【【花雕动手做】行空板 K10 系列实验之TT 马达三驱动全向福来轮语音识别控制小车#自制小车 #人工智能机器人 #语音识别 #厉害了我的车】https://www.bilibili.com/video/BV1aVM36kEey/?share_sourcecopy_webvd_source371a292a55e5ca9be994cbb4a86cc987行空板 K10 之TT马达三驱全向轮语音小车