行空板K10——语音麦昆小车
【项目背景】随着人工智能技术的迅猛发展,语音识别与控制技术在各个领域的应用日益广泛。在教育、娱乐、工业自动化等领域,语音控制技术为用户提供了更为便捷和直观的交互方式。行空板K10是一款集成了多种传感器和通信模块的开发板,具有强大的计算能力和丰富的扩展接口,能够与各种外设进行无缝连接。麦昆小车是一款功能灵活的智能小车,具有良好的运动性能和扩展性,能够搭载各种传感器和执行器,实现复杂的运动控制和任务执行。
将行空板K10与麦昆小车相结合,实现语音控制小车的项目,旨在探索语音识别技术在智能机器人领域的应用潜力。通过语音指令,用户可以远程控制小车的运动方向(前进、后退、向左、向右转)以及机械爪的动作(张开、闭合、抓取等),从而实现对小车的语音操控和任务执行。这一项目为麦昆小车提供新的交互方式。
在教育领域,该项目可以作为机器人教育和编程教育的实践案例,帮助学生了解语音识别技术的原理和应用方法,培养学生的创新思维和实践能力。在娱乐领域,语音控制小车可以为用户提供更加丰富和有趣的互动体验,例如在家庭娱乐中,用户可以通过语音指令让小车完成各种有趣的动作和任务。
【硬件组合】
【项目准备】
1.修改用户库“代码生成器”的“config.json”文件,增加"esp32s3bit":true,支持行空板K10。
2.在“Arduino\static\libraries\Maqueen_Motor”目录下新增“esp32s3bit”文件夹,并将“fireBeetleEsp32”目录下的“Maqueen_Motor.cpp.o”文件录制到“esp32s3bit”。
【编写程序】
1.编写小车相应控制函数
2.编写机械爪相应控制函数
3.编写电机相应控制函数(暂时未使用)
4.主程序
5.Arduino C 代码
/*!
* MindPlus
* esp32s3bit
*
*/
#include "asr.h"
#include "unihiker_k10.h"
#include <Maqueen_Motor.h>
// 动态变量
volatile float mind_n_JiaoDu;
// 函数声明
void DF_BiHe();
void DF_ZhangKai();
void DF_DianJi(String mind_s_ZuoYou, float mind_n_ZhuanSu, String mind_s_ZhengFanZhuan);
void DF_DianJiChuShiHua();
void DF_TingZhi(String mind_s_ZuoYou);
void DF_ZhuaQu();
void DF_Song();
void DF_Jin();
void DF_HouTui(float mind_n_SuDu);
void DF_ZuoZhuan(float mind_n_SuDu);
void DF_YouZhuan(float mind_n_SuDu);
void DF_QianJin(float mind_n_SuDu);
void DF_TingChe();
// 创建对象
UNIHIKER_K10k10;
uint8_t screen_dir=2;
ASR asr;
Maqueen_Motor motor;
// 主程序开始
void setup() {
k10.begin();
k10.initScreen(screen_dir);
k10.creatCanvas();
asr.asrInit(CONTINUOUS, CN_MODE, 60000);
while(asr._asrState == 0){delay(100);}
k10.setScreenBackground(0x000000);
k10.canvas->canvasText("行空板", 84, 50, 0xFFFFFF, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->canvasText("语音麦昆车", 60, 200, 0xFFFFFF, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->updateCanvas();
DF_DianJiChuShiHua();
asr.addASRCommand(0+1, "qian jin");
asr.addASRCommand(1+1, "hou tui");
asr.addASRCommand(2+1, "zuo zhuan");
asr.addASRCommand(3+1, "you zhuan");
asr.addASRCommand(4+1, "ting zhi");
asr.addASRCommand(5+1, "jin yi jin");
asr.addASRCommand(6+1, "song yi song");
asr.addASRCommand(7+1, "bi he");
asr.addASRCommand(8+1, "zhang kai");
asr.addASRCommand(9+1, "zhua qu");
mind_n_JiaoDu = 110;
}
void loop() {
if (asr.isDetectCmdID(0+1)) {
DF_QianJin(200);
}
if (asr.isDetectCmdID(1+1)) {
DF_HouTui(200);
}
if (asr.isDetectCmdID(2+1)) {
DF_ZuoZhuan(150);
}
if (asr.isDetectCmdID(3+1)) {
DF_YouZhuan(150);
}
if (asr.isDetectCmdID(4+1)) {
DF_TingChe();
}
if (asr.isDetectCmdID(5+1)) {
DF_Jin();
}
if (asr.isDetectCmdID(6+1)) {
DF_Song();
}
if (asr.isDetectCmdID(7+1)) {
DF_BiHe();
}
if (asr.isDetectCmdID(8+1)) {
DF_ZhangKai();
}
if (asr.isDetectCmdID(9+1)) {
DF_ZhuaQu();
}
}
// 自定义函数
void DF_BiHe() {
mind_n_JiaoDu = 110;
motor.servo(motor.S1, mind_n_JiaoDu);;
}
void DF_ZhangKai() {
mind_n_JiaoDu = 45;
motor.servo(motor.S1, mind_n_JiaoDu);;
}
void DF_DianJi(String mind_s_ZuoYou, float mind_n_ZhuanSu, String mind_s_ZhengFanZhuan) {
if ((mind_s_ZuoYou==String("左"))) {
if ((mind_s_ZhengFanZhuan==String("正"))) {
motor.motorRun(motor.LEFT,motor.CW,mind_n_ZhuanSu);;
}
else {
motor.motorRun(motor.LEFT,motor.CCW,mind_n_ZhuanSu);;
}
}
else {
if ((mind_s_ZhengFanZhuan==String("正"))) {
motor.motorRun(motor.RIGHT,motor.CW,mind_n_ZhuanSu);;
}
else {
motor.motorRun(motor.RIGHT,motor.CCW,mind_n_ZhuanSu);;
}
}
}
void DF_DianJiChuShiHua() {
}
void DF_TingZhi(String mind_s_ZuoYou) {
if ((mind_s_ZuoYou==String("左"))) {
motor.motorStop(motor.LEFT);;
}
else if ((mind_s_ZuoYou==String("右"))) {
motor.motorStop(motor.RIGHT);;
}
else {
motor.motorStop(motor.LEFT);;
motor.motorStop(motor.RIGHT);;
}
}
void DF_ZhuaQu() {
mind_n_JiaoDu = 90;
motor.servo(motor.S1, mind_n_JiaoDu);;
}
void DF_Song() {
if ((mind_n_JiaoDu>50)) {
mind_n_JiaoDu = (mind_n_JiaoDu - 5);
motor.servo(motor.S1, mind_n_JiaoDu);;
}
}
void DF_Jin() {
if ((mind_n_JiaoDu<110)) {
mind_n_JiaoDu = (mind_n_JiaoDu + 5);
motor.servo(motor.S1, mind_n_JiaoDu);;
}
}
void DF_HouTui(float mind_n_SuDu) {
motor.motorRun(motor.LEFT,motor.CCW,mind_n_SuDu);;
motor.motorRun(motor.RIGHT,motor.CCW,mind_n_SuDu);;
}
void DF_ZuoZhuan(float mind_n_SuDu) {
motor.motorStop(motor.LEFT);;
motor.motorRun(motor.RIGHT,motor.CW,mind_n_SuDu);;
}
void DF_YouZhuan(float mind_n_SuDu) {
motor.motorRun(motor.LEFT,motor.CW,mind_n_SuDu);;
motor.motorStop(motor.RIGHT);;
}
void DF_QianJin(float mind_n_SuDu) {
motor.motorRun(motor.LEFT,motor.CW,mind_n_SuDu);;
motor.motorRun(motor.RIGHT,motor.CW,mind_n_SuDu);;
}
void DF_TingChe() {
motor.motorStop(motor.LEFT);;
motor.motorStop(motor.RIGHT);;
}
【演示视频】https://www.bilibili.com/video/BV1ymrGY9EQe/?share_source=copy_web
太丝滑了!!!!赞! 修改用户库“代码生成器”的“config.json”文件,增加"esp32s3bit":true,请问这个config.json文件的路径是多少啊
C:\Users\自己的电脑名\AppData\Local\DFScratch\extensions
页:
[1]