物联网技术
直播中

王雨

11年用户 130经验值
擅长:测量仪表 嵌入式技术 模拟技术 控制/MCU RF/无线
私信 关注

【庆科MXPVT-VBS7100语音开发板试用体验】+arduino语音小车之灵魂注入

`

晓得时间飞快,没想到距离上次发布已经快一个月了,今天把资料和实物全部整合测试了一遍,发现很多地方的不足之处,欢迎大佬批评指正!

一、项目名称

arduino和小车作为语音开发板的测试

二、准备工作

准备东西如下:庆科MXPVT-VBS7100语音开发板、小车、arduino uno板、胶枪、LCD1602等

三、组装后效果图

如下:(这里注意需要把听筒单独高举才能更好的和语音板对话)

四、注入灵魂

测试结果相对满意,只不过测试了车子的前进、后退、左转、右转,比较简单

效果图如下:

五、总结分析

1、由于语音板返回的ASR指令较为特殊,故作了特别处理,采用了比较简单的ASR指令和编号如下:

2、由于语音识别能力尚需加强,故在对话时的距离需要保持在30cm内

3、由于整体供电能力不足,在小车启动过程中,会导致LCD1602的亮度降低,但问题不大

4、经过几天的反复测试,语音板对汉语识别能力有待提高,不过值得骄傲的是,对英文的阅读发音比较标准

5、反复几次测试,发现语音板功能还需继续挖掘

六、代码展示

  1. #include //引用LCD1602的库
  2. #include

  3. LiquidCrystal_I2C lcd(0x3F, 16, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display

  4. #define IN1 4  //定义ARDUINO驱动电机引脚
  5. #define IN2 5
  6. #define IN3 6
  7. #define IN4 7

  8. void setup()
  9. {
  10.   pinMode(IN1,OUTPUT);
  11.   pinMode(IN2,OUTPUT);
  12.   pinMode(IN3,OUTPUT);
  13.   pinMode(IN4,OUTPUT);
  14.   lcd.init();
  15.   lcd.backlight();
  16.   lcd.print("MXPVT-VSB7100");
  17.   Serial.begin(115200);

  18. }
  19. //int i;
  20. String str="";
  21. void loop()
  22. {
  23.   while (Serial.available() > 0)  
  24.     {
  25.         str += char(Serial.read());
  26.         delay(2);
  27.     }
  28.     if (str.length() > 0)
  29.     {
  30.         //Serial.println(str);
  31.       if(str[12]=='1'){
  32.       some1();
  33.       }
  34.       if(str[12]=='2'){
  35.       some2();
  36.       }
  37.       if(str[12]=='3'){
  38.       some3();
  39.       }
  40.       if(str[12]=='4'){
  41.       some4();
  42.       }
  43.         str = "";
  44.     }

  45.    
  46. }
  47. void some1(){
  48.   lcd.clear();
  49.   lcd.print("RECEIVE ASR DATA:"); // Print a message to the LCD.
  50.   lcd.setCursor(0, 1); //newline
  51.   lcd.print("ZL:QianJin BH:1");// Print a message to the LCD
  52.   forward();
  53. }
  54. void some2(){
  55.   lcd.clear();
  56.   lcd.print("RECEIVE ASR DATA:"); // Print a message to the LCD.
  57.   lcd.setCursor(0, 1); //newline
  58.   lcd.print("ZL:HouTui BH:2");// Print a message to the LCD
  59.   back();
  60. }
  61. void some3(){
  62.   lcd.clear();
  63.   lcd.print("RECEIVE ASR DATA:"); // Print a message to the LCD.
  64.   lcd.setCursor(0, 1); //newline
  65.   lcd.print("ZL:XiangZuo BH:3");// Print a message to the LCD
  66.   turnRight();
  67. }
  68. void some4(){
  69.   lcd.clear();
  70.   lcd.print("RECEIVE ASR DATA:"); // Print a message to the LCD.
  71.   lcd.setCursor(0, 1); //newline
  72.   lcd.print("ZL:XiangYou BH:4");// Print a message to the LCD
  73.   turnLeft();
  74. }

  75. void forward(){
  76.   digitalWrite(IN1,HIGH);
  77.   digitalWrite(IN2,LOW);
  78.   digitalWrite(IN3,HIGH);
  79.   digitalWrite(IN4,LOW);
  80. }
  81. void back(){
  82.   digitalWrite(IN1,LOW);
  83.   digitalWrite(IN2,HIGH);
  84.   digitalWrite(IN3,LOW);
  85.   digitalWrite(IN4,HIGH);
  86.   }
  87. void turnLeft(){
  88.   digitalWrite(IN1,LOW);
  89.   digitalWrite(IN2,LOW);
  90.   digitalWrite(IN3,HIGH);
  91.   digitalWrite(IN4,LOW);
  92.   }
  93. void turnRight(){
  94.   digitalWrite(IN1,HIGH);
  95.   digitalWrite(IN2,LOW);
  96.   digitalWrite(IN3,LOW);
  97.   digitalWrite(IN4,LOW);
  98.   }

七、感谢电子发烧友及小编!欢迎大家相互学习和交流,后续测试视频如下:

[media]http://v.youku.com/v_show/id_XNDAwOTYzNTMwMA==.html?spm=a2h3j.8428770.3416059.1[/media]

`
附件: 您需要登录才可以下载或查看附件。没有帐号?注册

回帖(3)

王雨

2019-1-12 18:25:21
这是测试视频的连接地址:http://v.youku.com/v_show/id_XNDAwOTYzNTMwMA==.html?spm=a2h3j.8428770.3416059.1
举报

王雨

2019-1-12 18:29:55
有的朋友可能会问str[12]=='1'这个是什么意思,其实这个是对ASR串口指令的解析,一般返回的指令是/r/n+ASREVENT:1/r/n,我所作的处理就是接受所有数据,数据变成字符数字,然后我们取出对我们有用的那个字符即可,这样就完成了接受解析的任务,要比一个char一个char的判断和解析的效率高,失真率也小的多
1 举报

dianzi

2022-2-28 10:54:34
优秀啊~
举报

更多回帖

发帖
×
20
完善资料,
赚取积分