【花雕动手做】K10 实验 3630电机启动、高低速与正反转向

2026-06-27854
AI 快速预览详细 收起
本文介绍了如何使用行空板K10进行语音控制3630电机的启动、高低速与正反转向实验。行空板K10集成了2.8寸彩色屏幕、WiFi蓝牙、摄像头、麦克风、扬声器等多种资源,支持离线语音识别与合成。通过内置的麦克风和扬声器,用户可以轻松实现语音控制功能,非常适合STEM教育中的机器人项目。
【花雕动手做】行空板 K10 系列实验之语音控制3630机器人电机的启动、高低速与正反转向

【花雕动手做】K10 实验 3630电机启动、高低速与正反转向图1

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

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


【花雕动手做】K10 实验 3630电机启动、高低速与正反转向图2

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(14)
不败shengsheng
不败shengsheng
好玩,我也学过
驴友花雕
驴友花雕
作者
回复不败shengsheng
谢谢鼓励,要加油哦
日落蛇宏弈
日落蛇宏弈
这个好玩,我也去做一个
驴友花雕
驴友花雕
作者
回复日落蛇宏弈
期待大作哦
谢帝
谢帝
真棒,下次继续保持。
驴友花雕
驴友花雕
作者
回复谢帝
谢谢鼓励哦
驴友花雕
驴友花雕
作者

【【花雕动手做】行空板 K10 系列实验之语音控制3630机器人电机的启动刹车、高低速与正反转向#k10行空板#直流电机 #单片机 #科技改变生活】
https://www.bilibili.com/video/BV1iW7s6yERT/?share_source=copy_web&vd_source=371a292a55e5ca9be994cbb4a86cc987
[media=x,500,375]https://www.bilibili.com/video/BV1iW7s6yERT/?share_source=copy_web&vd_source=371a292a55e5ca9be994cbb4a86cc987[/media]
驴友花雕
驴友花雕
作者




驴友花雕
驴友花雕
作者
实验场景图与视频记录




驴友花雕
驴友花雕
作者
Mind+图形编程

驴友花雕
驴友花雕
作者
代码解读
一、项目整体功能概述
本程序运行在行空板 K10,搭配离线 ASR 语音模块、I2C IO 扩展板,实现语音全功能控制 12V 内置驱动直流无刷减速电机。
唤醒口令:你好小新;
六条控制语音指令:启动、停止、正转、反转、低速、高速;
通过扩展板 3 路 GPIO 输出电平,分别控制电机刹车、旋转方向、高低速档位;
屏幕用大号字体实时显示电机当前工作状态。
二、头文件与对象定义解读
[code]#include "asr.h"
#include "unihiker_k10.h"
#include "DFRobot_UnihikerExpansion.h"
asr.h:离线语音识别库,提供语音唤醒、自定义指令识别;
unihiker_k10.h:行空板 K10 底层库,管理 LCD 屏幕、画布绘制;
DFRobot_UnihikerExpansion.h:I2C 扩展 IO 驱动,拓展多路数字输出引脚,专门控制电机控制线。
UNIHIKER_K10 k10;
ASR asr;
DFRobot_UnihikerExpansion_I2C eunihiker(&Wire);
uint8_t screen_dir=2;[/code]
k10:行空板主控对象,操控屏幕;
asr:语音识别对象,处理麦克风收音识别;
eunihiker:I2C 扩展板对象,调用系统默认 I2C 总线通信;
screen_dir=2:设置屏幕倒置显示。
三、setup () 初始化函数(上电仅执行一次)
[code]k10.begin();[/code]
初始化行空板全部硬件、通信总线。
[code]asr.asrInit(CONTINUOUS, CN_MODE, 12000);[/code]
语音模块初始化:持续收音、中文识别、12000 中等灵敏度,抗环境噪音。
[code]while(asr._asrState == 0){delay(100);}[/code]
循环等待语音模块加载完成,模块未就绪时阻塞程序,避免调用报错。
[code]while(!eunihiker.begin()){delay(1000);}[/code]
持续检测 I2C 扩展板通信,硬件未连接则每秒重试一次。
[code]eunihiker.setMode(eC0, eWriteGpio);[/code]
把扩展板 C0 引脚设置为数字输出,用于电机刹车控制。
屏幕初始化
[code]k10.initScreen(screen_dir);
k10.creatCanvas();[/code]
按设定方向点亮屏幕,创建绘图缓冲区画布。
配置剩余两路输出引脚
[code]eunihiker.setMode(eC1, eWriteGpio); // C1控制电机正反转
eunihiker.setMode(eC2, eWriteGpio); // C2控制高低速档位[/code]
注册 6 条离线语音指令
[code]asr.addASRCommand(0+1, "qi dong"); // ID1 启动
asr.addASRCommand(1+1, "ting zhi"); // ID2 停止
asr.addASRCommand(2+1, "zheng zhuan"); // ID3 正转
asr.addASRCommand(3+1, "fan zhuan"); // ID4 反转
asr.addASRCommand(4+1, "di su"); // ID5 低速
asr.addASRCommand(5+1, "gao su"); // ID6 高速[/code]
离线语音只能识别提前录入的拼音口令。
[code]eunihiker.setGpioState(eC0, eHIGH);[/code]
上电默认 C0 高电平,电机默认刹车锁死,开机不转动,保证安全。
四、loop () 无限主循环
1. 唤醒状态判断
[code]if (asr.isWakeUp())[/code]
识别到 “你好小新” 唤醒词:屏幕第 6 行红色文字提示已唤醒;
未唤醒:屏幕蓝色文字提示唤醒口令;
updateCanvas() 将画布内容刷新到屏幕。
2. 语音指令逻辑分段
(1)qi dong 启动电机
C0 输出低电平 → 电机刹车线悬空,解除刹车,电机允许运转;屏幕显示 “电机启动” 大号字体。
(2)ting zhi 停止电机
C0 输出高电平 → 刹车线接地,电机急停锁死;屏幕显示 “电机停止”。
(3)zheng zhuan 正转
C1 高电平,电机方向线悬空,正向旋转;屏幕同步提示。
(4)fan zhuan 反转
C1 低电平,电机方向线接地,反向旋转;屏幕同步提示。
(5)di su 低速
C2 高电平,搭配分压电路给电机调速脚输出低电压,低速运行。
(6)gao su 高速
C2 低电平,调速脚电压升高,电机高速运转。
3. 屏幕清理
[code]k10.canvas->canvasClear(6);[/code]
清空第 6 行及下方全部文字,清除上一轮状态信息,防止文字重叠残影。
五、语音指令对照表

六、完整运行流程
设备上电,初始化主板、语音模块、I2C 扩展板;
配置 C0/C1/C2 为输出引脚,上电电机默认刹车停止;
录入 6 条语音控制指令;
麦克风不间断监听唤醒词;
说出 “你好小新” 完成唤醒;
说出对应语音口令,三路 IO 同步切换电平,电机切换启停、转向、速度,屏幕大字展示状态;
自动清空屏幕文字,持续等待下一条语音指令。
驴友花雕
驴友花雕
作者
【花雕动手做】行空板 K10 系列实验之语音控制3630机器人电机的启动刹车、高低速与正反转向
实验开源代码
[code]// 引入离线语音识别库,提供ASR唤醒、语音命令识别功能
#include "asr.h"
// 行空板K10核心驱动库,控制LCD屏幕、画布绘制
#include "unihiker_k10.h"
// 行空板I2C IO扩展模块库,拓展多路GPIO输出,控制无刷电机控制线
#include "DFRobot_UnihikerExpansion.h"
// 实例化硬件对象
UNIHIKER_K10 k10; // 行空板主板对象
ASR asr; // 语音识别模块对象
DFRobot_UnihikerExpansion_I2C eunihiker(&Wire);// I2C扩展IO对象,使用默认I2C总线
uint8_t screen_dir=2; // 屏幕方向参数:2代表倒置显示
//=====================================================================
// setup()上电初始化函数,设备重启/开机仅执行1次
//=====================================================================
void setup() {
// 初始化行空板底层硬件、总线资源
k10.begin();
// 初始化语音识别模块
// CONTINUOUS:持续收音模式,时刻监听人声
// CN_MODE:中文识别模式
// 12000:收音灵敏度,数值越大抗环境噪音越强
asr.asrInit(CONTINUOUS, CN_MODE, 12000);
// 阻塞循环等待语音模块加载模型完成
// _asrState == 0 代表语音模块未就绪,每100ms查询一次状态
while(asr._asrState == 0){delay(100);}
// 循环检测I2C扩展板硬件通信,连接失败则1秒后重试
while(!eunihiker.begin()){delay(1000);}
// 将扩展板C0引脚配置为数字输出模式,用于电机启停刹车控制
eunihiker.setMode(eC0, eWriteGpio);
// 根据预设方向初始化显示屏
k10.initScreen(screen_dir);
// 创建屏幕绘图缓冲区画布,所有文字先写入画布再刷新
k10.creatCanvas();
// C1引脚配置为输出,控制电机正反转信号线
eunihiker.setMode(eC1, eWriteGpio);
// C2引脚配置为输出,搭配分压电路实现高低速档位控制
eunihiker.setMode(eC2, eWriteGpio);
// 批量注册6条离线语音控制指令(拼音匹配)
asr.addASRCommand(0+1, "qi dong"); // ID=1 语音:启动
asr.addASRCommand(1+1, "ting zhi"); // ID=2 语音:停止
asr.addASRCommand(2+1, "zheng zhuan");// ID=3 语音:正转
asr.addASRCommand(3+1, "fan zhuan"); // ID=4 语音:反转
asr.addASRCommand(4+1, "di su"); // ID=5 语音:低速
asr.addASRCommand(5+1, "gao su"); // ID=6 语音:高速
// 上电默认C0输出高电平,电机初始为停止刹车状态
eunihiker.setGpioState(eC0, eHIGH);
}
//=====================================================================
// loop()主循环,初始化完成后无限循环运行,实时监听语音指令
//=====================================================================
void loop() {
// 判断是否识别到唤醒词“你好小新”
if (asr.isWakeUp()) {
// 唤醒成功:第6行打印红色提示文字
k10.canvas->canvasText("已唤醒行空板.......", 6, 0xFF0000);
k10.canvas->updateCanvas(); // 将画布内容刷新到实体屏幕
}
else {
// 未唤醒待机:第4行蓝色文字提示唤醒关键词
k10.canvas->canvasText("唤醒词为“你好小新”", 4, 0x0000FF);
k10.canvas->updateCanvas();
}
// ==========语音指令1:qi dong 启动电机==========
if (asr.isDetectCmdID(0+1)) {
// 全屏居中24号黑色大字显示状态,参数:X坐标、Y坐标、颜色、字体、字号、自动换行
k10.canvas->canvasText("电机启动", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->updateCanvas();
// C0拉低,刹车线悬空,解除刹车,电机允许运转
eunihiker.setGpioState(eC0, eLOW);
}
// ==========语音指令2:ting zhi 停止电机==========
if (asr.isDetectCmdID(1+1)) {
k10.canvas->canvasText("电机停止", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->updateCanvas();
// C0拉高,刹车线接地,电机急停锁死
eunihiker.setGpioState(eC0, eHIGH);
}
// ==========语音指令3:zheng zhuan 正转==========
if (asr.isDetectCmdID(2+1)) {
k10.canvas->canvasText("电机正转", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->updateCanvas();
// C1高电平,电机方向线悬空,正向旋转
eunihiker.setGpioState(eC1, eHIGH);
}
// ==========语音指令4:fan zhuan 反转==========
if (asr.isDetectCmdID(3+1)) {
k10.canvas->canvasText("电机反转", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->updateCanvas();
// C1低电平,电机方向线接地,反向旋转
eunihiker.setGpioState(eC1, eLOW);
}
// ==========语音指令5:di su 低速档位==========
if (asr.isDetectCmdID(4+1)) {
k10.canvas->canvasText("电机低速", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->updateCanvas();
// C2高电平,分压后给调速脚低电压,低速运行
eunihiker.setGpioState(eC2, eHIGH);
}
// ==========语音指令6:gao su 高速档位==========
if (asr.isDetectCmdID(5+1)) {
k10.canvas->canvasText("电机高速", 0, 180, 0x000000, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->updateCanvas();
// C2低电平,分压后给调速脚高电压,高速运行
eunihiker.setGpioState(eC2, eLOW);
}
// 清空第6行及下方所有文字,清除上一轮状态提示,防止文字重叠残影
k10.canvas->canvasClear(6);
}[/code]
驴友花雕
驴友花雕
作者
知识点:直流无刷减速电机控制
一、电机基础结构与优势
1. 整体组成
分为两大核心部分:无刷电机本体 + 全金属减速箱 + 内置驱动板
无刷电机:前后双滚珠轴承,运转顺滑、噪音低、寿命长;无碳刷结构,不会产生碳粉、火花。
减速箱:五四钢精密齿轮,滚齿加工 + 热处理强化,耐磨承重,扭矩大幅提升,适合机器人关节(头、颈、手臂、行走脚)。
内置驱动板:无需额外外置驱动模块,单 DC12V 一组电源即可供电,大幅简化接线。
2. 对比有刷减速电机核心优点
寿命更长:无碳刷磨损,长期连续工作不易损坏;
电磁干扰小:无换向火花,不会干扰语音模块、单片机信号;
功率密度高、发热更低;
自带调速、正反转、刹车、两相 AB 相位反馈,功能一体化。
二、电气硬件参数(雅腾 12V 机器人无刷减速电机)
供电电压:统一 DC12V,仅需一组稳压电源供电;
调速方式:电压调速,调速控制线电压区间 0.4V~4.6V,电压越高转速越快;
控制功能:支持正反转切换、电平急停刹车;
信号反馈:AB 两相脉冲输出,相位差 90°,可简单测速、判断转向(非高精度独立编码器);
轴承:前后双滚珠支撑,负载能力强;
减速比:多款规格,分机器人头部、颈部、手臂、行走脚专用型号。
三、控制线
两种基础接线方案
1、最简固定转速运转
红线接 12V+,黑线接 12V-;白线串联 10K 电阻接到黑线,电机以固定速度持续转动。
2、电位器无级调速
自备 10K 固定电阻 + 10K 电位器,分压电路给白线提供 0.4~4.6V 可变电压,手动调节转速。
四、三种控制实现方案(结合行空板 K10 )
方案 1:IO 电平控制转向
硬件搭配:行空板 + I2C IO 扩展模块;
控制逻辑:扩展板输出高低电平接入电机蓝线(方向线);
IO 高电平悬空等效 → 电机正转
IO 低电平接 GND → 电机反转
配套交互:ASR 离线语音识别,说出 “正转 / 反转”,单片机自动切换 IO 电平,屏幕文字 + RGB 灯同步提示状态。
特点:接线简单、程序逻辑易懂,适合教学机器人关节控制;缺点:仅切换转向,无法调速。
方案 2:PWM 电压调速 + 转向双控制(进阶方案)
行空板 PWM 输出引脚,搭配分压电路,给电机白线输出可调 0.4~4.6V 模拟电压,实现无级调速;
另一路 IO 控制蓝线切换正反转;
语音指令可拓展:加速、减速、正转、反转、停止。
方案 3:闭环测速控制(机器人精准动作)
读取青线 A、棕线 B 两相脉冲,单片机统计脉冲数量计算转速、旋转角度,实现精准定位:
机械臂旋转固定角度;
行走电机匀速前进,不会左右跑偏。
五、内置驱动核心功能说明
正反转控制
依靠方向控制线电平切换,电机绕组换相,实现平稳换向,无冲击卡顿;
电压调速
通过改变调速脚电压,驱动板调节三相输出功率,连续平滑调速,无档位顿挫;
急停刹车
刹车线拉低接地,驱动板短接电机线圈,产生阻尼力矩,瞬间锁止输出轴,机器人停止姿态稳定;
两相相位反馈
电机每转一圈输出固定脉冲,仅用于基础测速,不支持高精度角度定位。
六、供电与安全注意事项
电源要求:必须使用12V 稳压开关电源,避免电池电压波动导致转速不稳、驱动损坏;
接线红线黑线严禁反接,一旦接反内部驱动芯片瞬间击穿;
电机负载不能超过额定扭矩,长时间堵转会发热烧毁驱动;
库存电机外壳存在轻微氧化,不影响电气性能,外观要求高需谨慎选购;
减速齿轮定期补充润滑黄油,减少噪音、延长齿轮寿命。
七、典型应用场景
教育智能机器人:头部旋转、脖子俯仰、机械臂抓取、底盘行走驱动;
小型云台、摄像头转向机构;
小型自动化传送、简易物料分拣设备。
八、整体控制流程
行空板上电初始化 ASR 语音模块、I2C 扩展 IO;
麦克风持续监听唤醒词 “你好小新”;
唤醒后识别语音指令 “正转 / 反转”;
单片机控制扩展 IO 输出对应电平给到电机方向控制线;
电机切换旋转方向,屏幕打印状态文字,RGB 彩灯区分正反转;
拓展升级:可增加 PWM 调速、刹车停止、脉冲测速闭环控制。
驴友花雕
驴友花雕
作者
知识点:语音识别(ASR)
一、什么是语音识别(ASR)
语音识别英文缩写是 ASR(Automatic Speech Recognition),简单来说:让单片机、电脑听懂人说话,把麦克风采集到的声音信号,转换成文字或者指令。
分为两大类:
在线语音识别:需要联网,把声音上传到云端服务器解析,识别词汇量巨大;
离线语音识别:不需要 WiFi、不需要网络,语音模型预先存放在芯片内部,本地直接处理声音,适合单片机、行空板、Arduino 这类硬件。
你代码里使用的就是离线本地 ASR 语音模块。
二、离线语音模块核心功能(对应你 K10 代码)
1. 两种工作模式
(1)持续拾音模式 CONTINUOUS
麦克风一直处于收音状态,不间断监听声音,专门用来做语音唤醒。
对应代码:asr.asrInit(CONTINUOUS, CN_MODE, 12000);
(2)按键触发模式
按下按键才开始录音识别,省电,一般用于命令词识别。
2. 语言模式 CN_MODE
CN_MODE:中文模式,只识别汉语;
EN_MODE:英文模式,识别英语。
本程序开启中文识别,用来识别唤醒词:你好小新。
3. 灵敏度阈值(第三个参数 12000)
数值代表声音检测灵敏度:
数值越大:越不容易被环境杂音误触发,抗干扰强;
数值越小:轻声说话就能识别,但是容易被噪音误唤醒。
12000 属于中等灵敏度,适合室内环境使用。
三、语音唤醒技术(本项目核心)
1. 唤醒词机制
唤醒词就是开门密码。模块平时处于低功耗监听状态,只监听这一句话,其他普通对话会直接忽略。
只有说出预设唤醒词(你好小新),模块才会被 “唤醒”,进入待命状态,之后才可以识别后续控制指令。
2. 代码里的唤醒检测函数
[code]asr.isWakeUp()[/code]
检测到唤醒词,函数返回 true;
没有检测到唤醒词,返回 false。
3. 模块状态标志
[code]asr._asrState[/code]
值 = 0:语音模块正在启动、模型加载中,暂时无法工作;
值 ≠ 0:初始化完成,可以正常收音识别。
程序中用 while 循环等待模块就绪,避免硬件未启动造成程序崩溃。
四、硬件运行完整工作流程
上电初始化行空板主板与显示屏;
启动 ASR 语音芯片,加载离线语音模型;
等待语音模块就绪;
屏幕打印实验标题;
模块持续收音,安静待机,只监听唤醒词;
使用者说出:你好小新;
程序捕捉到唤醒信号,屏幕切换文字提示 “已唤醒行空板”;
没有听到唤醒词,则一直显示唤醒词提示语句;
每秒刷新一次屏幕,并清除文字,防止画面重叠。
五、离线语音识别优缺点
优点
完全离线,不用网络、不用流量;
响应速度极快,话音刚落立刻识别;
单片机就能驱动,成本低,非常适合机器人、智能音箱、门禁、实验教具;
不受网络波动影响,设备在野外也能正常使用。
缺点
词汇数量有限,一般只能预先录入几十条唤醒词 + 控制指令;
对嘈杂环境比较敏感,噪音大会出现识别失败;
无法自由识别任意一句话,只能识别预先烧录好的词语。
六、拓展功能(可以在现有代码上升级)
多级指令识别
唤醒之后,再识别 “开灯”“关灯”“前进”“后退”,控制电机与 LED 灯;
自定义唤醒词
修改库文件,把 “你好小新” 改成 “你好行空板”;
多句话语音交互
唤醒后连续识别多条语音命令;
调节收音灵敏度,解决误唤醒或者识别不到声音的问题。
七、容易遇到的常见问题
识别不到唤醒词
调低阈值数值,靠近麦克风,降低环境噪音。
无缘无故自动唤醒(误触发)
把灵敏度数值调高,提高抗干扰能力。
程序卡死在初始化循环
语音模块接线异常,串口通信断开,导致模块始终处于未就绪状态。

驴友花雕
驴友花雕
作者
辅助:屏幕显示相关积木

扩展板模块

LED控制模块

驴友花雕
驴友花雕
作者
主打:人工智能模块

语音识别相关说明

驴友花雕
驴友花雕
作者
实验使用的电机与扩展板



- 没有更多了 -