公司动态
【花雕动手做】行空板 K10 系列实验之胜利牌羽毛球筒麦克纳姆轮四驱语音识别控制小车
行空板K10是一款专为快速体验物联网和学习人工智能而设计的开发学习板100%采用国产芯片知识产权自主可控符合信息科技课程中编程学习、物联网及人工智能等教学需求。该板集成2.8寸LCD彩屏、WiFi蓝牙、摄像头、麦克风、扬声器、RGB指示灯、多种传感器及丰富的扩展接口。凭借高度集成的板载资源教学过程中无需额外连接其他设备便可轻松实现传感器控制、物联网应用以及人脸识别、语音识别、语音合成等AI人工智能项目。主要特点集成摄像头内置算法可进行离线图像检测集成麦克风内置算法可进行离线语音识别集成扬声器内置算法可进行离线语音合成2.8寸彩色屏幕数据展示更清晰集成度高利于教学接口丰富兼容软件多扩展性好今天早上打完羽毛球捡到一个胜利牌的空球筒于是突发奇想试试看能否做个智能小车使用的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 系列实验之胜利牌羽毛球筒麦克纳姆轮四驱语音识别控制小车实验开源代码// 1.离线语音识别库提供语音唤醒、拼音指令识别、持续收音功能#includeasr.h// 2.行空板K10底层驱动库管理LCD屏幕、画布绘制、主板硬件初始化#includeunihiker_k10.h// 3.Microbit四路电机驱动库专门适配四轮麦克纳姆轮底盘独立控制M1/M2/M3/M4电机#includeMicrobit_Motor.h// 全局硬件对象实例化 UNIHIKER_K10 k10;// 行空板主控实例统一管理屏幕、系统总线、板载外设ASR asr;// 离线语音识别模块实例处理麦克风收音与人声解析uint8_tscreen_dir2;// 屏幕旋转参数数值2代表屏幕倒置显示Microbit_Motor motorbit;// 四路电机驱动对象/* 电机编号对应四轮麦克纳姆轮底盘布局 M1 左前轮 M2 右前轮 M3 右后轮 M4 左后轮 CW 电机顺时针正转CCW 电机逆时针反转 速度参数范围 0~255数值越大转速越快本程序统一使用200中高速 *///// setup() 上电初始化函数设备开机/重启仅执行1次// 功能初始化主板、语音模块、屏幕画布批量注册7条麦轮小车语音控制拼音指令//voidsetup(){// 初始化行空板全部底层硬件串口、I2C总线、LCD屏幕、IO外设资源k10.begin();// 离线语音识别模块初始化三大核心参数// CONTINUOUS持续收音模式麦克风不间断实时监听环境人声// CN_MODE中文识别模式仅能识别提前注册的中文拼音口令// 10000收音抗噪灵敏度阈值数值越大过滤环境杂音、防误唤醒能力越强asr.asrInit(CONTINUOUS,CN_MODE,10000);// 阻塞循环等待语音识别模型加载完成// _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,zhuan quan);// ID6 语音口令原地转圈asr.addASRCommand(61,xie zou);// 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();}// 语音指令ID1qian jin 小车直线前进麦克纳姆标准直行逻辑if(asr.isDetectCmdID(01)){// ALL代表同时控制M1/M2/M3/M4四路电机全部顺时针转动// 四轮同向正转纵向推力叠加、横向分力相互抵消车身笔直向前行驶motorbit.motorRun(ALL,CW,200);// 屏幕居中24号黑色中英文字体打印运行状态// 参数说明X坐标,Y坐标,文字RGB颜色,字体类型,字号大小,自动换行开关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 小车直线后退if(asr.isDetectCmdID(21)){// 四轮全部逆时针反转与前进转向完全反向车身直线向后倒退motorbit.motorRun(ALL,CCW,200);k10.canvas-canvasText(K10 小车后退,0,180,0x000000,k10.canvas-eCNAndENFont24,50,true);k10.canvas-updateCanvas();}// 语音指令ID4you heng 车身整体向右横向平移if(asr.isDetectCmdID(31)){// 麦克纳姆轮横移差速组合纵向分力完全抵消仅保留向右横向合力motorbit.motorRun(M1,CCW,200);// 左前轮逆时针motorbit.motorRun(M2,CW,200);// 右前轮顺时针motorbit.motorRun(M3,CW,200);// 右后轮顺时针motorbit.motorRun(M4,CCW,200);// 左后轮逆时针k10.canvas-canvasText(K10 小车右横,0,180,0x000000,k10.canvas-eCNAndENFont24,50,true);k10.canvas-updateCanvas();}// 语音指令ID5zuo heng 车身整体向左横向平移if(asr.isDetectCmdID(41)){// 反向差速组合纵向分力抵消合力向左整车横向左移motorbit.motorRun(M1,CW,200);// 左前轮顺时针motorbit.motorRun(M2,CCW,200);// 右前轮逆时针motorbit.motorRun(M3,CCW,200);// 右后轮逆时针motorbit.motorRun(M4,CW,200);// 左后轮顺时针k10.canvas-canvasText(K10小车左横,0,180,0x000000,k10.canvas-eCNAndENFont24,50,true);k10.canvas-updateCanvas();}// 语音指令ID6zhuan quan 小车原地顺时针转圈if(asr.isDetectCmdID(51)){// 对角电机反向转动形成纯旋转力偶无前后/左右平移分量零半径原地自转motorbit.motorRun(M1,CCW,200);motorbit.motorRun(M2,CW,200);motorbit.motorRun(M3,CCW,200);motorbit.motorRun(M4,CW,200);k10.canvas-canvasText(K10小车原地转圈,0,180,0x000000,k10.canvas-eCNAndENFont24,50,true);k10.canvas-updateCanvas();}// 语音指令ID7xie zou 小车斜向直行左前方斜走if(asr.isDetectCmdID(61)){// 仅左前M1、左后M4电机顺时针运转M2/M3停机推力合成斜向前左方向motorbit.motorRun(M1,CW,200);motorbit.motorRun(M4,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 屏幕使用 24 号大号字体实时展示小车当前动作电机统一固定速度 200调速范围 0~255。二、头文件与全局对象解析#includeasr.h#includeunihiker_k10.h#includeMicrobit_Motor.hasr.h离线语音识别库实现持续收音、唤醒检测、自定义拼音指令识别unihiker_k10.h行空板底层驱动管理 LCD 屏幕、画布缓存、主板硬件初始化Microbit_Motor.h四路直流电机专用驱动库可单独控制 M1/M2/M3/M4 任意一路电机适配麦轮底盘。UNIHIKER_K10 k10;ASR asr;uint8_tscreen_dir2;Microbit_Motor motorbit;k10行空板主控实例统一管理屏幕、系统通信总线asr语音识别实例负责麦克风收音、人声解析screen_dir2设置屏幕倒置显示motorbit四路电机驱动对象电机编号定义M1 左前轮 M2 右前轮M3 右后轮 M4 左后轮CW 电机顺时针正转CCW 电机逆时针反转三、setup () 上电初始化开机仅执行 1 次k10.begin();初始化行空板全部底层硬件串口、I2C 总线、屏幕、板载 IO 外设。asr.asrInit(CONTINUOUS,CN_MODE,10000);while(asr._asrState0){delay(100);}语音模块初始化参数说明CONTINUOUS持续收音模式麦克风不间断监听人声CN_MODE中文识别模式仅识别提前注册的拼音口令10000收音抗噪灵敏度数值越大过滤环境杂音、防误唤醒能力越强循环阻塞等待语音模型加载完毕模块就绪才执行后续代码防止调用报错。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,zhuan quan);// ID6 原地转圈asr.addASRCommand(61,xie zou);// ID7 斜着走批量录入 7 条离线语音口令语音模块仅能识别预存指令无法识别未录入词语。四、loop () 无限主循环实时监听语音指令1. 唤醒状态判断asr.isWakeUp()检测麦克风是否识别唤醒词「你好小新」唤醒成功画布第 6 行输出红色文字已唤醒行空板小车.......未唤醒待机画布第 4 行输出蓝色提示文字唤醒词为“你好小新”updateCanvas()将缓存文字一次性刷新到实体屏幕。2. Microbit 电机库核心函数motorRun(通道, 转向, 速度)通道ALL四路同时控制 / M1/M2/M3/M4 单路独立控制转向CW顺时针、CCW逆时针速度区间0~255本代码统一 200 中高速motorStop(ALL)四路电机同时断电锁死小车立即静止。3. 每条语音指令麦轮运动逻辑① qian jin 前进motorbit.motorRun(ALL,CW,200);四轮全部顺时针同步转动麦轮纵向摩擦力叠加、横向分力抵消车身直线向前行驶。② ting che 停车motorbit.motorStop(ALL);M1/M2/M3/M4 全部切断动力输出四轮无驱动力小车立刻刹车静止。③ hou tui 后退motorbit.motorRun(ALL,CCW,200);四轮全部逆时针反转与前进转向完全反向车身直线向后倒退。④ you heng 右横移motorbit.motorRun(M1,CCW,200);motorbit.motorRun(M2,CW,200);motorbit.motorRun(M3,CW,200);motorbit.motorRun(M4,CCW,200);四路电机反向差速配合前后纵向推力相互抵消仅保留向右的横向合力整车整体右移。⑤ zuo heng 左横移motorbit.motorRun(M1,CW,200);motorbit.motorRun(M2,CCW,200);motorbit.motorRun(M3,CCW,200);motorbit.motorRun(M4,CW,200);与右横移转向全部反向纵向分力抵消横向合力向左车身整体左移。⑥ zhuan quan 原地转圈motorbit.motorRun(M1,CCW,200);motorbit.motorRun(M2,CW,200);motorbit.motorRun(M3,CCW,200);motorbit.motorRun(M4,CW,200);对角电机反向转动形成纯旋转力偶无前后、左右平移分量零半径原地持续顺时针自转。⑦ xie zou 斜着走motorbit.motorRun(M1,CW,200);motorbit.motorRun(M4,CW,200);仅左前 M1、左后 M4 电机顺时针运转右前 M2、右后 M3 停机推力合成左前方斜向直行。4. 屏幕清理语句k10.canvas-canvasClear(6);清空画布第 6 行及下方全部文字清除上一轮动作文字避免新旧文字重叠出现残影。五、7 种运动电机配置对照表六、完整运行流程设备上电初始化行空板硬件、语音识别模块循环等待语音模型加载完成初始化倒置 LCD 屏幕、创建绘图画布录入 7 条语音控制拼音指令麦克风不间断监听唤醒词「你好小新」识别唤醒词后屏幕红色文字提示已唤醒未唤醒则蓝色文字提示唤醒口令说出对应语音口令四路电机按照麦克纳姆矢量差速逻辑运转屏幕同步打印当前运动状态循环末尾自动清空屏幕下方文字持续等待下一条语音指令。Mind图形编程实验场景图与视频记录【【花雕动手做】行空板 K10 系列实验之胜利牌羽毛球筒麦克纳姆轮四驱语音识别控制小车#手工机械爱好者 #行空板k10 #人工智能技术 #diy造车】https://www.bilibili.com/video/BV1PiKG6fEGD/?share_sourcecopy_webvd_source371a292a55e5ca9be994cbb4a86cc987行空板K10羽毛球筒麦轮四驱语音识别小车