【花雕动手做】行空板 K10 系列实验之方盒麦克纳姆轮内置式四驱语音识别小车 行空板K10是一款专为快速体验物联网和学习人工智能而设计的开发学习板100%采用国产芯片知识产权自主可控符合信息科技课程中编程学习、物联网及人工智能等教学需求。该板集成2.8寸LCD彩屏、WiFi蓝牙、摄像头、麦克风、扬声器、RGB指示灯、多种传感器及丰富的扩展接口。凭借高度集成的板载资源教学过程中无需额外连接其他设备便可轻松实现传感器控制、物联网应用以及人脸识别、语音识别、语音合成等AI人工智能项目。主要特点集成摄像头内置算法可进行离线图像检测集成麦克风内置算法可进行离线语音识别集成扬声器内置算法可进行离线语音合成2.8寸彩色屏幕数据展示更清晰集成度高利于教学接口丰富兼容软件多扩展性好TT马达四驱麦克纳姆轮小车使用的特色底板、TT电机与扩展板主打人工智能模块语音识别合成相关说明辅助屏幕显示相关积木接脚 IO 扩展模块LED控制模块知识点麦克纳姆轮麦轮一、基础结构与核心原理硬件结构麦克纳姆轮由轮毂 45° 斜向自由辊子两部分组成轮毂电机驱动主轮体辊子环绕轮毂倾斜 45° 安装可独立自由滚动与地面接触产生斜向摩擦力CSDN博…。四轮底盘必须搭配2 个左旋麦轮 2 个右旋麦轮矩形四角对称安装标准 X 型布局缺一无法实现全向移动。力学原理单个轮子转动时地面摩擦力会分解为纵向分力车身前后、横向分力车身左右通过独立控制四个电机的转向、转速让四个轮子的分力相互抵消 / 叠加合成任意平面运动前后直行、左右横移、原地 360° 旋转、斜向行走抖音。和普通两轮差速小车核心区别二、四轮布局与电机编号定义使用Microbit_Motor四路驱动编号定义M1左前轮M2右前轮M3右后轮M4左后轮转向标识CW顺时针正转CCW逆时针反转三、6 种基础运动电机转向对照表前进 qian jinmotorbit.motorRun(M1,CW,200);motorbit.motorRun(M3,CCW,200);逻辑左前 CW、右后 CCW四轮纵向分力同向叠加横向力抵消车身直线向前。2. 后退 hou tuimotorbit.motorRun(M1,CCW,200);motorbit.motorRun(M3,CW,200);逻辑与前进转向全部反向车身直线向后倒退。3. 右横移 you heng车身整体向右平移motorbit.motorRun(M2,CCW,200);motorbit.motorRun(M4,CW,200);逻辑右前 CCW、左后 CW纵向分力抵消横向合力向右车身横着走。4. 左横移 zuo heng车身整体向左平移motorbit.motorRun(M2,CW,200);motorbit.motorRun(M4,CCW,200);逻辑右前 CW、左后 CCW横向合力向左。5. 原地顺时针转圈 zhuan quanmotorbit.motorRun(M1,CW,200);motorbit.motorRun(M2,CW,200);motorbit.motorRun(M3,CW,200);motorbit.motorRun(M4,CW,200);逻辑四轮全部同向 CW 旋转前后左右分力形成旋转力偶无平移分量原地持续旋转。6. 停车 ting chemotorbit.motorStop(ALL);四路电机全部断电刹车所有轮子无驱动力小车立刻静止锁死。四、适配代码的语音控制整体架构1、硬件组合行空板 K10 ASR 离线语音识别模块 Microbit 四路电机驱动板 麦克纳姆四轮底盘语音模块识别唤醒词「你好小新」6 条拼音口令Microbit 电机库封装四路电机motorRun/motorStop直接控制每轮转向与 PWM 速度LCD 屏幕24 号大字实时显示当前运动状态。2、程序控制流程上电初始化主板、语音模块、四路电机引脚预注册语音指令前进 / 停车 / 后退 / 右横 / 左横 / 转圈麦克风持续监听唤醒词唤醒后解锁电机控制权限识别到语音口令自动输出对应电机转向组合屏幕同步提示循环清空屏幕文字持续等待下一条语音指令。五、麦克纳姆轮优缺点1·、优点全向移动可前后、左右横移、原地自转狭小室内、仓储机器人首选运动灵活无需预留转弯空间侧向避障、侧方停靠极强运动解耦平移和旋转互不干扰可一边横移一边转向模块化控制每路电机独立调速代码只需要调整转向组合即可切换运动模式。2、缺点成本更高需要 4 套独立电机驱动辊子耐磨差长期重载、粗糙地面容易磨损传动效率低于普通橡胶轮相同电机功率下速度略慢安装要求严格轮子左右不能装反否则运动错乱、跑偏。六、典型应用场景1、教育创客行空板 / Arduino 语音遥控全向小车2、仓储 AGV 物流小车狭窄货架之间侧向穿梭3、工业重载转运平台、机器人比赛底盘4、室内巡检机器人、云台全向移动底座。【花雕动手做】行空板 K10 系列实验之方盒麦克纳姆轮内置式四驱语音识别小车实验开源代码// 引入离线语音识别库asr.h提供语音唤醒、拼音指令识别、持续收音监听全套功能#includeasr.h// 行空板K10主板底层驱动库封装LCD屏幕、画布绘制、主板硬件初始化、系统总线管理API#includeunihiker_k10.h// Microbit四路电机驱动库专门适配四轮麦克纳姆轮底盘独立控制M1/M2/M3/M4四路直流减速电机#includeMicrobit_Motor.h// 全局硬件对象实例化 UNIHIKER_K10 k10;// 行空板主控实例统一管理屏幕、板载IO、底层通信总线ASR asr;// 离线语音识别模块实例负责麦克风收音、人声解析、唤醒判断uint8_tscreen_dir2;// 屏幕旋转配置参数数值2 屏幕倒置显示适配小车安装视角Microbit_Motor motorbit;// 四路电机驱动实例/* 麦克纳姆四轮底盘电机编号标准定义 M1 左前轮 M2 右前轮 M3 右后轮 M4 左后轮 CW Clockwise 电机顺时针旋转 CCW CounterClockwise 电机逆时针旋转 速度参数取值范围 0~255数值越大PWM占空比越高电机转速越快 *///// setup() 上电初始化函数设备开机/重启仅执行1次// 功能初始化主板硬件、语音识别模块、LCD画布注册7条麦轮小车语音拼音指令//voidsetup(){// 初始化行空板全部底层硬件资源I2C、串口、屏幕、板载外设、IO总线k10.begin();// 离线语音识别模块初始化传入3个核心配置参数// 1.CONTINUOUS持续收音模式麦克风不间断循环监听环境人声// 2.CN_MODE中文识别模式仅支持预先注册的中文拼音口令识别// 3.10000收音抗噪灵敏度阈值数值越高过滤环境杂音、防止误唤醒能力越强asr.asrInit(CONTINUOUS,CN_MODE,10000);// 阻塞循环等待语音识别模型加载完成// _asrState 0 代表语音模块未就绪每100ms检测一次状态避免未初始化调用导致程序报错while(asr._asrState0){delay(100);}// 根据screen_dir2参数初始化倒置LCD显示屏k10.initScreen(screen_dir);// 创建屏幕绘图画布缓存区所有文字先写入缓存再统一刷新到屏幕减少高频刷屏闪烁k10.creatCanvas();// 批量注册7条离线语音控制指令离线ASR仅能识别提前录入的拼音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,zhuan quan);// ID6 语音口令原地转圈asr.addASRCommand(61,xie zou);// ID7 语音口令斜着走斜向直行}//// loop() 主循环函数硬件初始化完成后无限循环持续运行// 功能实时检测语音唤醒状态、匹配语音指令、输出四路电机控制信号屏幕同步刷新小车运行状态文字//voidloop(){// 检测麦克风是否识别到固定唤醒关键词【你好小新】if(asr.isWakeUp()){// 唤醒成功在画布第6行绘制红色提示文字 RGB0xFF0000k10.canvas-canvasText(已唤醒行空板小车.......,6,0xFF0000);// 将画布缓存内所有文字一次性刷新输出到实体LCD屏幕k10.canvas-updateCanvas();}else{// 未唤醒待机状态画布第4行绘制蓝色提示文字 RGB0x0000FF提示用户唤醒口令k10.canvas-canvasText(唤醒词为“你好小新”,4,0x0000FF);k10.canvas-updateCanvas();}// 语音指令ID1qian jin 小车直线前进CCW四轮同步逆时针低速102if(asr.isDetectCmdID(01)){// ALL参数代表同时控制M1/M2/M3/M4全部四路电机统一逆时针旋转速度102中低速行驶更稳// 四轮同向转动后麦克纳姆轮横向分力两两抵消仅保留向前的纵向合力车身笔直前进motorbit.motorRun(ALL,CCW,102);// 屏幕绘制状态大字参数依次为 X坐标,Y坐标,文字黑色RGB,中英文字体,字号50,自动换行开启k10.canvas-canvasText(K10 小车前进,0,180,0x000000,k10.canvas-eCNAndENFont24,50,true);k10.canvas-updateCanvas();}// 语音指令ID2ting che 小车全部电机刹车停机if(asr.isDetectCmdID(11)){// motorStop(ALL)同时切断四路电机驱动输出电机断电锁死小车立刻静止motorbit.motorStop(ALL);k10.canvas-canvasText(K10 小车停止,0,180,0x000000,k10.canvas-eCNAndENFont24,50,true);k10.canvas-updateCanvas();}// 语音指令ID3hou tui 小车直线后退CW四轮同步顺时针低速102if(asr.isDetectCmdID(21)){// 四轮全部顺时针反转与前进转向完全反向纵向合力向后车身直线倒退motorbit.motorRun(ALL,CW,102);k10.canvas-canvasText(K10 小车后退,0,180,0x000000,k10.canvas-eCNAndENFont24,50,true);k10.canvas-updateCanvas();}// 语音指令ID4you heng 车身整体向右横向平移速度100if(asr.isDetectCmdID(31)){// 麦克纳姆轮标准右横移差速组合前后纵向推力完全抵消仅保留向右横向合力motorbit.motorRun(M1,CW,100);// 左前轮顺时针motorbit.motorRun(M2,CCW,100);// 右前轮逆时针motorbit.motorRun(M3,CCW,100);// 右后轮逆时针motorbit.motorRun(M4,CW,100);// 左后轮顺时针k10.canvas-canvasText(K10 小车右横,0,180,0x000000,k10.canvas-eCNAndENFont24,50,true);k10.canvas-updateCanvas();}// 语音指令ID5zuo heng 车身整体向左横向平移速度100if(asr.isDetectCmdID(41)){// 所有电机转向与右横移完全反向纵向分力抵消横向合力向左整车平行左滑motorbit.motorRun(M1,CCW,100);// 左前轮逆时针motorbit.motorRun(M2,CW,100);// 右前轮顺时针motorbit.motorRun(M3,CW,100);// 右后轮顺时针motorbit.motorRun(M4,CCW,100);// 左后轮逆时针k10.canvas-canvasText(K10小车左横,0,180,0x000000,k10.canvas-eCNAndENFont24,50,true);k10.canvas-updateCanvas();}// 语音指令ID6zhuan quan 原地顺时针转圈转速150比平移更快if(asr.isDetectCmdID(51)){// 对角电机同方向、两组对角反向转动只产生纯旋转力矩无前后左右平移分量零半径原地自转motorbit.motorRun(M1,CCW,150);// 左前轮逆时针motorbit.motorRun(M2,CCW,150);// 右前轮逆时针motorbit.motorRun(M3,CW,150);// 右后轮顺时针motorbit.motorRun(M4,CW,150);// 左后轮顺时针k10.canvas-canvasText(K10小车原地转圈,0,180,0x000000,k10.canvas-eCNAndENFont24,50,true);k10.canvas-updateCanvas();}// 语音指令ID7xie zou 小车斜向行走左前方斜走高速200if(asr.isDetectCmdID(61)){// 仅左前M1、右后M3电机高速顺时针运转M2右前、M4左后轮停机推力合成左前方斜向合力motorbit.motorRun(M1,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 条拼音语音指令前进、停车、后退、右横移、左横移、原地转圈、斜向直行麦克纳姆全向移动依靠 45° 斜辊分力抵消原理实现直行、横移、零半径自转、斜走分级差异化调速直行 / 横移低速稳行、转圈中速、斜向行走全速LCD 屏幕实时文字反馈分层展示唤醒提示、小车运动状态。二、头文件与全局对象解析#includeasr.h#includeunihiker_k10.h#includeMicrobit_Motor.hasr.h离线语音识别库提供持续收音、人声唤醒、拼音指令匹配功能unihiker_k10.h行空板底层驱动封装屏幕画布、硬件初始化、IO 操作 APIMicrobit_Motor.h四路电机专用驱动库独立控制 M1 左前 / M2 右前 / M3 右后 / M4 左后四个麦轮电机。UNIHIKER_K10 k10;ASR asr;uint8_tscreen_dir2;Microbit_Motor motorbit;k10行空板主控实例统一管理屏幕、主板通信总线asr语音识别实例处理麦克风收音与人声解析screen_dir2屏幕倒置显示适配小车安装视角motorbit四路电机驱动实例CW电机顺时针旋转CCW电机逆时针旋转速度参数范围 0~255数值越大转速越快。三、setup () 上电初始化开机仅执行 1 次k10.begin();初始化行空板全部底层硬件I2C、串口、LCD 屏幕、板载外设总线。语音模块初始化asr.asrInit(CONTINUOUS,CN_MODE,10000);while(asr._asrState0){delay(100);}CONTINUOUS不间断持续收音CN_MODE中文拼音识别模式仅识别预存口令10000高抗噪灵敏度过滤环境杂音减少误唤醒循环阻塞等待语音识别模型加载完成避免未就绪调用报错。屏幕初始化k10.initScreen(screen_dir);k10.creatCanvas();按倒置参数点亮屏幕创建画布缓存文字先存入缓存再统一刷新降低屏幕闪烁。4. 注册 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,zhuan quan);// ID6 原地转圈asr.addASRCommand(61,xie zou);// ID7 斜着走离线语音模块仅能识别提前录入的拼音口令无法识别未注册词语。四、loop () 无限主循环实时监听语音并控制小车1. 唤醒状态屏幕提示逻辑asr.isWakeUp()判断是否识别唤醒词「你好小新」唤醒成功画布第 6 行红色文字已唤醒行空板小车.......未唤醒待机画布第 4 行蓝色文字唤醒词为“你好小新”updateCanvas()将画布缓存一次性刷新到实体屏幕。2. Microbit 电机库核心 APImotorRun(通道, 转向, 速度)通道ALL同时控制四路电机 / M1/M2/M3/M4 单独单路转向CW顺时针、CCW逆时针motorStop(ALL)切断四路电机全部动力小车立即锁死静止。3. 每条语音指令电机控制逻辑1qian jin 前进速度 102motorbit.motorRun(ALL,CCW,102);四轮全部同步逆时针低速运转麦克纳姆轮横向分力两两抵消仅保留向前合力行驶平稳不窜动。2ting che 停车motorbit.motorStop(ALL);四路电机同步断电刹车小车立刻静止。3hou tui 后退速度 102motorbit.motorRun(ALL,CW,102);四轮全部同步顺时针低速反转合力向后直线平稳倒退。4you heng 右横移速度 100motorbit.motorRun(M1,CW,100);motorbit.motorRun(M2,CCW,100);motorbit.motorRun(M3,CCW,100);motorbit.motorRun(M4,CW,100);四轮差速配合前后纵向推力完全抵消只保留向右横向分力整车平行右滑。5zuo heng 左横移速度 100motorbit.motorRun(M1,CCW,100);motorbit.motorRun(M2,CW,100);motorbit.motorRun(M3,CW,100);motorbit.motorRun(M4,CCW,100);电机转向与右横移全部反向纵向分力抵消合力向左整车平行左滑。6zhuan quan 原地转圈速度 150motorbit.motorRun(M1,CCW,150);motorbit.motorRun(M2,CCW,150);motorbit.motorRun(M3,CW,150);motorbit.motorRun(M4,CW,150);左前、右前轮一组同向右后、左后轮另一组反向仅产生旋转力矩无平移分量原地顺时针自转转速高于直行。7xie zou 斜着走速度 200motorbit.motorRun(M1,CW,200);motorbit.motorRun(M3,CW,200);仅左前 M1、右后 M3 电机全速运转M2、M4 停机推力合成左前方斜向直行。4. 屏幕清理k10.canvas-canvasClear(6);清空画布第 6 行及下方所有文字清除唤醒提示残留内容避免新旧文字重叠出现残影。五、运动模式电机参数对照表六、完整设备运行流程设备上电初始化行空板硬件、语音识别模块循环等待语音模型加载完成初始化倒置 LCD 屏幕、创建绘图画布批量注册 7 条拼音语音指令麦克风不间断持续监听唤醒词「你好小新」识别唤醒词后屏幕红色文字提示未唤醒则蓝色文字提示唤醒口令说出对应语音口令四路电机按照麦克纳姆轮矢量差速逻辑运转屏幕同步打印车辆运行状态循环末尾自动清空屏幕下方文字持续循环等待下一条语音指令。Mind图形编程实验场景图与视频记录【[花雕动手做] 行空板 K10 系列实验之方盒麦克纳姆轮内置式四驱语音识别小车 #人工智能技术 #语音识别 #行空板K10 #DIY动手做 #科技改变生活】https://www.bilibili.com/video/BV1avKn6aEY5/?share_sourcecopy_webvd_source371a292a55e5ca9be994cbb4a86cc987https://www.bilibili.com/video/BV1RbKn6vEUF/?share_sourcecopy_webvd_source371a292a55e5ca9be994cbb4a86cc987