[K10项目分享]行空板K10——语音麦昆小车 精华

131浏览
查看: 131|回复: 1

[K10项目分享] 行空板K10——语音麦昆小车

[复制链接]
【项目背景】
        随着人工智能技术的迅猛发展,语音识别与控制技术在各个领域的应用日益广泛。在教育、娱乐、工业自动化等领域,语音控制技术为用户提供了更为便捷和直观的交互方式。行空板K10是一款集成了多种传感器和通信模块的开发板,具有强大的计算能力和丰富的扩展接口,能够与各种外设进行无缝连接。麦昆小车是一款功能灵活的智能小车,具有良好的运动性能和扩展性,能够搭载各种传感器和执行器,实现复杂的运动控制和任务执行。
        将行空板K10与麦昆小车相结合,实现语音控制小车的项目,旨在探索语音识别技术在智能机器人领域的应用潜力。通过语音指令,用户可以远程控制小车的运动方向(前进、后退、向左、向右转)以及机械爪的动作(张开、闭合、抓取等),从而实现对小车的语音操控和任务执行。这一项目为麦昆小车提供新的交互方式。
        在教育领域,该项目可以作为机器人教育和编程教育的实践案例,帮助学生了解语音识别技术的原理和应用方法,培养学生的创新思维和实践能力。在娱乐领域,语音控制小车可以为用户提供更加丰富和有趣的互动体验,例如在家庭娱乐中,用户可以通过语音指令让小车完成各种有趣的动作和任务。
【硬件组合】
行空板K10——语音麦昆小车图8

行空板K10——语音麦昆小车图9

行空板K10——语音麦昆小车图10

行空板K10——语音麦昆小车图11

【项目准备】

1.修改用户库“代码生成器”的“config.json”文件,增加"esp32s3bit":true,支持行空板K10。
行空板K10——语音麦昆小车图1

2.在“Arduino\static\libraries\Maqueen_Motor”目录下新增“esp32s3bit”文件夹,并将“fireBeetleEsp32”目录下的“Maqueen_Motor.cpp.o”文件录制到“esp32s3bit”。
【编写程序】
1.编写小车相应控制函数
行空板K10——语音麦昆小车图2

2.编写机械爪相应控制函数
行空板K10——语音麦昆小车图3

3.编写电机相应控制函数(暂时未使用)
行空板K10——语音麦昆小车图4

4.主程序
行空板K10——语音麦昆小车图5

行空板K10——语音麦昆小车图6

行空板K10——语音麦昆小车图7

5.Arduino C 代码
  1. /*!
  2. * MindPlus
  3. * esp32s3bit
  4. *
  5. */
  6. #include "asr.h"
  7. #include "unihiker_k10.h"
  8. #include <Maqueen_Motor.h>
  9. // 动态变量
  10. volatile float mind_n_JiaoDu;
  11. // 函数声明
  12. void DF_BiHe();
  13. void DF_ZhangKai();
  14. void DF_DianJi(String mind_s_ZuoYou, float mind_n_ZhuanSu, String mind_s_ZhengFanZhuan);
  15. void DF_DianJiChuShiHua();
  16. void DF_TingZhi(String mind_s_ZuoYou);
  17. void DF_ZhuaQu();
  18. void DF_Song();
  19. void DF_Jin();
  20. void DF_HouTui(float mind_n_SuDu);
  21. void DF_ZuoZhuan(float mind_n_SuDu);
  22. void DF_YouZhuan(float mind_n_SuDu);
  23. void DF_QianJin(float mind_n_SuDu);
  24. void DF_TingChe();
  25. // 创建对象
  26. UNIHIKER_K10  k10;
  27. uint8_t       screen_dir=2;
  28. ASR           asr;
  29. Maqueen_Motor motor;
  30. // 主程序开始
  31. void setup() {
  32.         k10.begin();
  33.         k10.initScreen(screen_dir);
  34.         k10.creatCanvas();
  35.         asr.asrInit(CONTINUOUS, CN_MODE, 60000);
  36.         while(asr._asrState == 0){delay(100);}
  37.         k10.setScreenBackground(0x000000);
  38.         k10.canvas->canvasText("行空板", 84, 50, 0xFFFFFF, k10.canvas->eCNAndENFont24, 50, true);
  39.         k10.canvas->canvasText("语音麦昆车", 60, 200, 0xFFFFFF, k10.canvas->eCNAndENFont24, 50, true);
  40.         k10.canvas->updateCanvas();
  41.         DF_DianJiChuShiHua();
  42.         asr.addASRCommand(0+1, "qian jin");
  43.         asr.addASRCommand(1+1, "hou tui");
  44.         asr.addASRCommand(2+1, "zuo zhuan");
  45.         asr.addASRCommand(3+1, "you zhuan");
  46.         asr.addASRCommand(4+1, "ting zhi");
  47.         asr.addASRCommand(5+1, "jin yi jin");
  48.         asr.addASRCommand(6+1, "song yi song");
  49.         asr.addASRCommand(7+1, "bi he");
  50.         asr.addASRCommand(8+1, "zhang kai");
  51.         asr.addASRCommand(9+1, "zhua qu");
  52.         mind_n_JiaoDu = 110;
  53. }
  54. void loop() {
  55.         if (asr.isDetectCmdID(0+1)) {
  56.                 DF_QianJin(200);
  57.         }
  58.         if (asr.isDetectCmdID(1+1)) {
  59.                 DF_HouTui(200);
  60.         }
  61.         if (asr.isDetectCmdID(2+1)) {
  62.                 DF_ZuoZhuan(150);
  63.         }
  64.         if (asr.isDetectCmdID(3+1)) {
  65.                 DF_YouZhuan(150);
  66.         }
  67.         if (asr.isDetectCmdID(4+1)) {
  68.                 DF_TingChe();
  69.         }
  70.         if (asr.isDetectCmdID(5+1)) {
  71.                 DF_Jin();
  72.         }
  73.         if (asr.isDetectCmdID(6+1)) {
  74.                 DF_Song();
  75.         }
  76.         if (asr.isDetectCmdID(7+1)) {
  77.                 DF_BiHe();
  78.         }
  79.         if (asr.isDetectCmdID(8+1)) {
  80.                 DF_ZhangKai();
  81.         }
  82.         if (asr.isDetectCmdID(9+1)) {
  83.                 DF_ZhuaQu();
  84.         }
  85. }
  86. // 自定义函数
  87. void DF_BiHe() {
  88.         mind_n_JiaoDu = 110;
  89.         motor.servo(motor.S1, mind_n_JiaoDu);;
  90. }
  91. void DF_ZhangKai() {
  92.         mind_n_JiaoDu = 45;
  93.         motor.servo(motor.S1, mind_n_JiaoDu);;
  94. }
  95. void DF_DianJi(String mind_s_ZuoYou, float mind_n_ZhuanSu, String mind_s_ZhengFanZhuan) {
  96.         if ((mind_s_ZuoYou==String("左"))) {
  97.                 if ((mind_s_ZhengFanZhuan==String("正"))) {
  98.                         motor.motorRun(motor.LEFT,motor.CW,mind_n_ZhuanSu);;
  99.                 }
  100.                 else {
  101.                         motor.motorRun(motor.LEFT,motor.CCW,mind_n_ZhuanSu);;
  102.                 }
  103.         }
  104.         else {
  105.                 if ((mind_s_ZhengFanZhuan==String("正"))) {
  106.                         motor.motorRun(motor.RIGHT,motor.CW,mind_n_ZhuanSu);;
  107.                 }
  108.                 else {
  109.                         motor.motorRun(motor.RIGHT,motor.CCW,mind_n_ZhuanSu);;
  110.                 }
  111.         }
  112. }
  113. void DF_DianJiChuShiHua() {
  114. }
  115. void DF_TingZhi(String mind_s_ZuoYou) {
  116.         if ((mind_s_ZuoYou==String("左"))) {
  117.                 motor.motorStop(motor.LEFT);;
  118.         }
  119.         else if ((mind_s_ZuoYou==String("右"))) {
  120.                 motor.motorStop(motor.RIGHT);;
  121.         }
  122.         else {
  123.                 motor.motorStop(motor.LEFT);;
  124.                 motor.motorStop(motor.RIGHT);;
  125.         }
  126. }
  127. void DF_ZhuaQu() {
  128.         mind_n_JiaoDu = 90;
  129.         motor.servo(motor.S1, mind_n_JiaoDu);;
  130. }
  131. void DF_Song() {
  132.         if ((mind_n_JiaoDu>50)) {
  133.                 mind_n_JiaoDu = (mind_n_JiaoDu - 5);
  134.                 motor.servo(motor.S1, mind_n_JiaoDu);;
  135.         }
  136. }
  137. void DF_Jin() {
  138.         if ((mind_n_JiaoDu<110)) {
  139.                 mind_n_JiaoDu = (mind_n_JiaoDu + 5);
  140.                 motor.servo(motor.S1, mind_n_JiaoDu);;
  141.         }
  142. }
  143. void DF_HouTui(float mind_n_SuDu) {
  144.         motor.motorRun(motor.LEFT,motor.CCW,mind_n_SuDu);;
  145.         motor.motorRun(motor.RIGHT,motor.CCW,mind_n_SuDu);;
  146. }
  147. void DF_ZuoZhuan(float mind_n_SuDu) {
  148.         motor.motorStop(motor.LEFT);;
  149.         motor.motorRun(motor.RIGHT,motor.CW,mind_n_SuDu);;
  150. }
  151. void DF_YouZhuan(float mind_n_SuDu) {
  152.         motor.motorRun(motor.LEFT,motor.CW,mind_n_SuDu);;
  153.         motor.motorStop(motor.RIGHT);;
  154. }
  155. void DF_QianJin(float mind_n_SuDu) {
  156.         motor.motorRun(motor.LEFT,motor.CW,mind_n_SuDu);;
  157.         motor.motorRun(motor.RIGHT,motor.CW,mind_n_SuDu);;
  158. }
  159. void DF_TingChe() {
  160.         motor.motorStop(motor.LEFT);;
  161.         motor.motorStop(motor.RIGHT);;
  162. }
复制代码

【演示视频】


木子呢  管理员

发表于 前天 13:51

太丝滑了!!!!赞!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail