10051浏览
查看: 10051|回复: 14

[常见问题] 求助!<(SKU:DFR0189)ASR Board for Arduino语音识别控制器>用不了...

[复制链接]
本帖最后由 philip2929 于 2015-5-26 01:45 编辑

刚买了这个语音模组,再把它连接了电脑, 因为我看见它有这个mgea32u4 microcontroller, 所以我用Arduino IDE上传了ASRB_2 library的code
  1. #include <ASRB.h>
  2. #include <EEPROM.h>
  3. #include <SPI.h>
  4. #define SUM 35//
  5. int set=0,vall,res;
  6. char sRecog[SUM][38]={"kai deng","guan deng","zhun bei"};//
  7. unsigned int fDigit[SUM]={252,253,254};//AD4
  8. void BT(int x,int y,char  (*p)[38],unsigned int dd[],int set);
  9. void PT(int x,int y,char  (*p)[38],unsigned int dd[],int set);
  10. void ASR_while(int x,int y,char  (*p)[38],unsigned int dd[],int set);
  11. void ASR_BT(int x,int y,char  (*p)[38],unsigned int dd[],int set);
  12. int button=3,led=4;
  13. void setup()
  14. {
  15. ASRB.Initialise(SUM,sRecog,fDigit);
  16. attachInterrupt(0,ExtInt0Handler,LOW);
  17. //pinMode(button,INPUT);
  18. pinMode(led,OUTPUT);
  19. digitalWrite(led,HIGH);
  20. }
  21. void loop()
  22. {
  23.    if(vall==111) PT(SUM,38,sRecog,fDigit,set);   //
  24.    else if(vall==112) BT(SUM,38,sRecog,fDigit,set);   //
  25.    else
  26.       {
  27.        while(1)
  28.          {  res=0;
  29.              res=ASRB.Asr(SUM,38,sRecog,fDigit,set);
  30.              ASR_monitor();
  31.               delay(10);
  32.              ASRB.Busy_SD();
  33.               if (Serial.available() > 0)  break;
  34.           }
  35.        } //
  36. ASRB.AT_command(SUM,38,sRecog,fDigit,set);//
  37.   delay(100);  
  38. }
  39. void ExtInt0Handler ()
  40. {
  41. ASRB.ProcessInt0();                                       
  42. }
  43. void ASR_while(int x,int y,char  (*p)[38],unsigned int dd[],int set)
  44. {
  45.   while(1)
  46.      {
  47.        res=0;
  48.        res=ASRB.Asr(x,y,p,dd,set);
  49.         ASR_monitor();
  50.         delay(10);
  51.         ASRB.Busy_SD();
  52.         if(res<255&&res>0) break;
  53.         if (Serial.available() > 0)  break;  
  54.      // else if(digitalRead(button)==LOW) break;
  55.      }
  56. }
  57. void ASR_BT(int x,int y,char  (*p)[38],unsigned int dd[],int set)
  58. {
  59.   ASRB.send_SD(260);
  60.   delay(50);
  61.   ASRB.Busy_SD();
  62.   ASR_while(x,y,p,dd,set);
  63. }
  64. /**************************************语音控制LED****************************/
  65. void ASR_monitor()
  66. {
  67. if(res==252) digitalWrite(led,LOW);
  68. else if(res==253) digitalWrite(led,HIGH);
  69. }
  70. /*******************************口令模式*************************************/
  71. void PT(int x,int y,char  (*p)[38],unsigned int dd[],int set)
  72. {
  73.    while(1)
  74.    {
  75.      set=1;
  76.    if (Serial.available() > 0)
  77.      {
  78.       set=0;
  79.        break;
  80.      }
  81. int h=ASRB.Asr(x,y,p,dd,set);
  82.   delay(50);
  83.   if(h==254)   //
  84.    {
  85.     set=0;  
  86.      ASRB.send_SD(260);
  87.      delay(50);
  88.     ASRB.Busy_SD();   
  89.      ASR_while(x,y,p,dd,set);     
  90.     }     
  91.   }
  92. }
  93. /*******************************按键模式**************************************/
  94. void BT(int x,int y,char  (*p)[38],unsigned int dd[],int set)
  95. {
  96. char local[10]={0};
  97. char DD[1][6]={"asrbt"};
  98. while(1)
  99. {
  100. if (Serial.available() > 0)
  101.   {
  102.     local[0]= Serial.read();  
  103.     delay(20);
  104.     if(local[0]!=0x41)   
  105.      {
  106.        for(int i=1;i<8;i++)
  107.          {   
  108.          local[i]= Serial.read();  
  109.           if( local[i]==0x0a)  //
  110.            {
  111.             if( local[i-1]==0x0d)
  112.               {
  113.                 local[i]=0;
  114.                 local[i-1]=0;
  115.                 if(strcmp(local,DD[0])==0) //AT
  116.                   {
  117.                  ASR_BT(x,y,p,dd,set);
  118.                    break;
  119.                     }                 
  120.                   }
  121.                }
  122.             }
  123.         }
  124.       else
  125.       break;
  126.     }
  127.    /* else if(digitalRead(button)==LOW)
  128.         {
  129.           delay(100);
  130.          if(digitalRead(button)==LOW)
  131.            {
  132.             ASR_BT(x,y,p,dd,set);
  133.             break;
  134.              }
  135.        }*/
  136.   }
  137. }  
复制代码
我在putty连接了ASR board再传送命令给它, 它只会显示error
求助!<(SKU:DFR0189)ASR Board for Arduino语音识别控制器>用不了...图2

求助!<(SKU:DFR0189)ASR Board for Arduino语音识别控制器>用不了...图1

它的d13的燈是開了
我想问一下是不是我的连接方法有问题, 我就是用普通android我手机线和Arduino Leonardo的线连接电脑, 是板子有问题还是我的问题?

求助!<(SKU:DFR0189)ASR Board for Arduino语音识别控制器>用不了...图3
我跟着官方的资料把<需要复制到SD卡中的AD4音频文件>上传到micro sd card, 再开了<语音识别模块.exe>​​, 然后连接ASR board(Com4), 但是我按了所有按键也没有反应, 再对它的mic说成都, 开灯, 关灯等的词语也没反应, 是我做错了什么步骤吗? 求大神解答..


Cain  初级技匠

发表于 2015-5-26 10:18:40

上传语音识别程序之前先要上传一边库里带的初始化程序asr_board_init.pde,然后使用的SD卡尽量小于2G,而且和SD卡的品质也有关
回复

使用道具 举报

philip2929  见习技师
 楼主|

发表于 2015-5-26 11:52:07

我用的sd卡是昨天买的8G, 是否一定要少于2G, 还有是因为卡的问题我不能给命令给它吗?
回复

使用道具 举报

Cain  初级技匠

发表于 2015-5-26 13:30:38

philip2929 发表于 2015-5-26 11:52
我用的sd卡是昨天买的8G, 是否一定要少于2G, 还有是因为卡的问题我不能给命令给它吗? ...

命令与sd卡无关,是否在上传语音识别程序之前先上传库里带的初始化程序asr_board_init.pde
回复

使用道具 举报

philip2929  见习技师
 楼主|

发表于 2015-5-26 15:46:17

本帖最后由 philip2929 于 2015-5-26 15:58 编辑

我换了1G卡再试一下, 可以听到.AD4, 可是我上传了asr_board_init.pde后, 再试一下,除了按<播放SD卡音頻文件>,<模擬MP3>和AT+TM=CT它會放音, 其他的也没什麼反应

求助!<(SKU:DFR0189)ASR Board for Arduino语音识别控制器>用不了...图1
  1. #include <EEPROM.h>
  2. byte value;
  3. void setup()
  4. {
  5.   Serial.begin(9600);
  6.   while (!Serial) {
  7.     ;
  8.   }
  9. }
  10. void loop()
  11. {
  12.     for (int i = 0; i < 512; i++)
  13.     EEPROM.write(i, 0);
  14.     delay(50);
  15.     EEPROM.write(2,78);
  16.     EEPROM.write(5, 3);
  17.     delay(50);
  18.     value = EEPROM.read(2);
  19.     Serial.print(value);
  20.     Serial.print("\t");
  21.     value = EEPROM.read(5);
  22.     Serial.println(value);
  23.     while(1);
  24. }
复制代码

可是我一开始试的时候先上传了library example>>ASRBled的code, 有影响吗?

  1. #include <ASRB.h>
  2. #include <EEPROM.h>
  3. #include <SPI.h>
  4. #define SUM 35//
  5. int set=0,vall,res;
  6. char sRecog[SUM][38]={"kai deng","guan deng","zhun bei"};//
  7. unsigned int fDigit[SUM]={252,253,254};//AD4
  8. void BT(int x,int y,char  (*p)[38],unsigned int dd[],int set);
  9. void PT(int x,int y,char  (*p)[38],unsigned int dd[],int set);
  10. void ASR_while(int x,int y,char  (*p)[38],unsigned int dd[],int set);
  11. void ASR_BT(int x,int y,char  (*p)[38],unsigned int dd[],int set);
  12. int button=3,led=4;
  13. void setup()
  14. {
  15. ASRB.Initialise(SUM,sRecog,fDigit);
  16. attachInterrupt(0,ExtInt0Handler,LOW);
  17. //pinMode(button,INPUT);
  18. pinMode(led,OUTPUT);
  19. digitalWrite(led,HIGH);
  20. }
  21. void loop()
  22. {
  23.    if(vall==111) PT(SUM,38,sRecog,fDigit,set);   //
  24.    else if(vall==112) BT(SUM,38,sRecog,fDigit,set);   //
  25.    else
  26.       {
  27.        while(1)
  28.          {  res=0;
  29.              res=ASRB.Asr(SUM,38,sRecog,fDigit,set);
  30.              ASR_monitor();
  31.               delay(10);
  32.              ASRB.Busy_SD();
  33.               if (Serial.available() > 0)  break;
  34.           }
  35.        } //
  36. ASRB.AT_command(SUM,38,sRecog,fDigit,set);//
  37.   delay(100);  
  38. }
  39. void ExtInt0Handler ()
  40. {
  41. ASRB.ProcessInt0();                                       
  42. }
  43. void ASR_while(int x,int y,char  (*p)[38],unsigned int dd[],int set)
  44. {
  45.   while(1)
  46.      {
  47.        res=0;
  48.        res=ASRB.Asr(x,y,p,dd,set);
  49.         ASR_monitor();
  50.         delay(10);
  51.         ASRB.Busy_SD();
  52.         if(res<255&&res>0) break;
  53.         if (Serial.available() > 0)  break;  
  54.      // else if(digitalRead(button)==LOW) break;
  55.      }
  56. }
  57. void ASR_BT(int x,int y,char  (*p)[38],unsigned int dd[],int set)
  58. {
  59.   ASRB.send_SD(260);
  60.   delay(50);
  61.   ASRB.Busy_SD();
  62.   ASR_while(x,y,p,dd,set);
  63. }
  64. /**************************************语音控制LED****************************/
  65. void ASR_monitor()
  66. {
  67. if(res==252) digitalWrite(led,LOW);
  68. else if(res==253) digitalWrite(led,HIGH);
  69. }
  70. /*******************************口令模式*************************************/
  71. void PT(int x,int y,char  (*p)[38],unsigned int dd[],int set)
  72. {
  73.    while(1)
  74.    {
  75.      set=1;
  76.    if (Serial.available() > 0)
  77.      {
  78.       set=0;
  79.        break;
  80.      }
  81. int h=ASRB.Asr(x,y,p,dd,set);
  82.   delay(50);
  83.   if(h==254)   //
  84.    {
  85.     set=0;  
  86.      ASRB.send_SD(260);
  87.      delay(50);
  88.     ASRB.Busy_SD();   
  89.      ASR_while(x,y,p,dd,set);     
  90.     }     
  91.   }
  92. }
  93. /*******************************按键模式**************************************/
  94. void BT(int x,int y,char  (*p)[38],unsigned int dd[],int set)
  95. {
  96. char local[10]={0};
  97. char DD[1][6]={"asrbt"};
  98. while(1)
  99. {
  100. if (Serial.available() > 0)
  101.   {
  102.     local[0]= Serial.read();  
  103.     delay(20);
  104.     if(local[0]!=0x41)   
  105.      {
  106.        for(int i=1;i<8;i++)
  107.          {   
  108.          local[i]= Serial.read();  
  109.           if( local[i]==0x0a)  //
  110.            {
  111.             if( local[i-1]==0x0d)
  112.               {
  113.                 local[i]=0;
  114.                 local[i-1]=0;
  115.                 if(strcmp(local,DD[0])==0) //AT
  116.                   {
  117.                  ASR_BT(x,y,p,dd,set);
  118.                    break;
  119.                     }                 
  120.                   }
  121.                }
  122.             }
  123.         }
  124.       else
  125.       break;
  126.     }
  127.    /* else if(digitalRead(button)==LOW)
  128.         {
  129.           delay(100);
  130.          if(digitalRead(button)==LOW)
  131.            {
  132.             ASR_BT(x,y,p,dd,set);
  133.             break;
  134.              }
  135.        }*/
  136.   }
  137. }  
复制代码



我看见send完之后图下面也是显示uploading... , 是正常吗?

板子的D8在播AD4的时候着了, 但D13依然没着
回复

使用道具 举报

Cain  初级技匠

发表于 2015-5-26 17:25:23

本帖最后由 Cain 于 2015-5-26 17:27 编辑

uploading说明没上传上去,先上传初始化程序是为了重置EEPROM,所以顺序是初始化程序—开关灯识别程序。每次上传语音识别程序之前都建议初始化一下,然后D13是程序里需要开关的灯,没亮说明没识别到你的话,可以多试几次,识别到是会有语音提示的
回复

使用道具 举报

philip2929  见习技师
 楼主|

发表于 2015-5-26 17:57:44

本帖最后由 philip2929 于 2015-5-26 18:00 编辑

救命呀!!我上传了好多次也是Uploading..., 可是它的loading bar已经完成, 但state还是Uploading而不是complete, 大神...求求告诉我怎么解决, 我花了好多时间在这里:'(

现在它的D13着了, 可是我说话也没反应, 我狂按加关键词也没用

还有想问一下如果成功传送AT, 在ASR board软件的接收区会不会显示什么?因为我传送了AT+PLAY=001(放AD4), 也听到板子播放对应的AD4, 可是接收区什么也没好显示
回复

使用道具 举报

philip2929  见习技师
 楼主|

发表于 2015-5-27 14:32:53

Arduino IDE狀態維持在Uploading...求助!<(SKU:DFR0189)ASR Board for Arduino语音识别控制器>用不了...图1


输入命令在它的software,但是在接收区没有回应
求助!<(SKU:DFR0189)ASR Board for Arduino语音识别控制器>用不了...图2


这是板子的图, D13是亮的, 可是因为输入不到命令, 我说关键词也不会有回应

求助!<(SKU:DFR0189)ASR Board for Arduino语音识别控制器>用不了...图3



回复

使用道具 举报

Holiday  初级技匠

发表于 2015-5-27 14:41:04

你把arduino IDE下面的提示栏拉开点,信息多显示一点
回复

使用道具 举报

philip2929  见习技师
 楼主|

发表于 2015-5-27 14:51:19

本帖最后由 philip2929 于 2015-5-27 16:15 编辑
  1. <blockquote>Sketch uses 4,932 bytes (17%) of program storage space. Maximum is 28,672 bytes.
复制代码

求助!<(SKU:DFR0189)ASR Board for Arduino语音识别控制器>用不了...图1谢谢提醒, 我看不见它有什么error, 可是它的状态就是一直维持Uploading...
还有我用我usb dirver是arduino leonardo的dirver, 就是../arduino1.xx/dirvers的那个, 会不会有什么问题
求助!<(SKU:DFR0189)ASR Board for Arduino语音识别控制器>用不了...图2
252,253,254的预设语音可以使用,问题就是用不了AT命令和上传arduino code




回复

使用道具 举报

Cain  初级技匠

发表于 2015-5-27 18:31:58

是否会是板子的bootloader没了?
回复

使用道具 举报

philip2929  见习技师
 楼主|

发表于 2015-5-27 21:57:25

那该怎么辨, 我还没有试过这情况
回复

使用道具 举报

philip2929  见习技师
 楼主|

发表于 2015-5-27 23:49:34


http://zhidao.baidu.com/link?url=wyfnwM-rsLd0STMCQ6fJ6tYAT8pfV1utuTpXf-dvzUQ_RZhDOzpPos6Yc0AFP_cTXSckj6MlfH2HuQYgm-OBiu3XEkURz1fY3AzABoxCJIi


我把這模板當做了Leonardo, 我在百度找到这个上传方法, 在arduino IDE快要上传前,按下复位键,是成功Upload了, 可是一使用模板的软件连接,软件就会hand了, 而且播放音频和接收252,253,254预设关键词的功能也没了,我现在真的搞不清状况, 究竟是什么问题呢
回复

使用道具 举报

Cain  初级技匠

发表于 2015-5-28 09:53:06

你可以看看板子插上后设备管理器是否有端口号,端口上是否有黄色问号。另外,程序下了没?初始化程序是为了清内存,还是需要下led那程序才能正常工作的
回复

使用道具 举报

philip2929  见习技师
 楼主|

发表于 2015-5-28 10:11:15

它在设备管理器的Com是正常的, 就写着Arduino Leonardo, 我就是下了它初始化的程序再下led那个, 就是不知道怎样才可以用它的At command
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

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

硬件清单

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

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

mail