philip2929 发表于 2015-5-25 17:52:02

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

本帖最后由 philip2929 于 2015-5-26 01:45 编辑

刚买了这个语音模组,再把它连接了电脑, 因为我看见它有这个mgea32u4 microcontroller, 所以我用Arduino IDE上传了ASRB_2 library的code
#include <ASRB.h>
#include <EEPROM.h>
#include <SPI.h>
#define SUM 35//
int set=0,vall,res;
char sRecog={"kai deng","guan deng","zhun bei"};//
unsigned int fDigit={252,253,254};//AD4
void BT(int x,int y,char(*p),unsigned int dd[],int set);
void PT(int x,int y,char(*p),unsigned int dd[],int set);
void ASR_while(int x,int y,char(*p),unsigned int dd[],int set);
void ASR_BT(int x,int y,char(*p),unsigned int dd[],int set);

int button=3,led=4;
void setup()
{
ASRB.Initialise(SUM,sRecog,fDigit);
attachInterrupt(0,ExtInt0Handler,LOW);
//pinMode(button,INPUT);
pinMode(led,OUTPUT);
digitalWrite(led,HIGH);
}
void loop()
{
   if(vall==111) PT(SUM,38,sRecog,fDigit,set);   //
   else if(vall==112) BT(SUM,38,sRecog,fDigit,set);   //
   else
      {
       while(1)
         {res=0;
             res=ASRB.Asr(SUM,38,sRecog,fDigit,set);
             ASR_monitor();
            delay(10);
             ASRB.Busy_SD();
            if (Serial.available() > 0)break;
          }
       } //
ASRB.AT_command(SUM,38,sRecog,fDigit,set);//
delay(100);
}
void ExtInt0Handler ()
{
ASRB.ProcessInt0();                                       
}
void ASR_while(int x,int y,char(*p),unsigned int dd[],int set)
{
while(1)
   {
       res=0;
       res=ASRB.Asr(x,y,p,dd,set);
      ASR_monitor();
      delay(10);
      ASRB.Busy_SD();
      if(res<255&&res>0) break;
      if (Serial.available() > 0)break;
   // else if(digitalRead(button)==LOW) break;
   }
}
void ASR_BT(int x,int y,char(*p),unsigned int dd[],int set)
{
ASRB.send_SD(260);
delay(50);
ASRB.Busy_SD();
ASR_while(x,y,p,dd,set);
}
/**************************************语音控制LED****************************/
void ASR_monitor()
{
if(res==252) digitalWrite(led,LOW);
else if(res==253) digitalWrite(led,HIGH);
}
/*******************************口令模式*************************************/
void PT(int x,int y,char(*p),unsigned int dd[],int set)
{
   while(1)
   {
   set=1;
   if (Serial.available() > 0)
   {
      set=0;
       break;
   }
int h=ASRB.Asr(x,y,p,dd,set);
delay(50);
if(h==254)   //
   {
    set=0;
   ASRB.send_SD(260);
   delay(50);
    ASRB.Busy_SD();   
   ASR_while(x,y,p,dd,set);   
    }   
}
}
/*******************************按键模式**************************************/
void BT(int x,int y,char(*p),unsigned int dd[],int set)
{
char local={0};
char DD={"asrbt"};
while(1)
{
if (Serial.available() > 0)
{
    local= Serial.read();
    delay(20);
    if(local!=0x41)   
   {
       for(int i=1;i<8;i++)
         {   
         local= Serial.read();
          if( local==0x0a)//
         {
            if( local==0x0d)
            {
                local=0;
                local=0;
                if(strcmp(local,DD)==0) //AT
                  {
               ASR_BT(x,y,p,dd,set);
                   break;
                  }               
                  }
               }
            }
      }
      else
      break;
    }
   /* else if(digitalRead(button)==LOW)
      {
          delay(100);
         if(digitalRead(button)==LOW)
         {
            ASR_BT(x,y,p,dd,set);
            break;
             }
       }*/
}
}我在putty连接了ASR board再传送命令给它, 它只会显示error




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


我跟着官方的资料把<需要复制到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它會放音, 其他的也没什麼反应


#include <EEPROM.h>

byte value;

void setup()
{
Serial.begin(9600);
while (!Serial) {
    ;
}
}
void loop()
{
    for (int i = 0; i < 512; i++)
    EEPROM.write(i, 0);
    delay(50);
    EEPROM.write(2,78);
    EEPROM.write(5, 3);
    delay(50);
    value = EEPROM.read(2);
    Serial.print(value);
    Serial.print("\t");
    value = EEPROM.read(5);
    Serial.println(value);
    while(1);
}
可是我一开始试的时候先上传了library example>>ASRBled的code, 有影响吗?

#include <ASRB.h>
#include <EEPROM.h>
#include <SPI.h>
#define SUM 35//
int set=0,vall,res;
char sRecog={"kai deng","guan deng","zhun bei"};//
unsigned int fDigit={252,253,254};//AD4
void BT(int x,int y,char(*p),unsigned int dd[],int set);
void PT(int x,int y,char(*p),unsigned int dd[],int set);
void ASR_while(int x,int y,char(*p),unsigned int dd[],int set);
void ASR_BT(int x,int y,char(*p),unsigned int dd[],int set);

int button=3,led=4;
void setup()
{
ASRB.Initialise(SUM,sRecog,fDigit);
attachInterrupt(0,ExtInt0Handler,LOW);
//pinMode(button,INPUT);
pinMode(led,OUTPUT);
digitalWrite(led,HIGH);
}
void loop()
{
   if(vall==111) PT(SUM,38,sRecog,fDigit,set);   //
   else if(vall==112) BT(SUM,38,sRecog,fDigit,set);   //
   else
      {
       while(1)
         {res=0;
             res=ASRB.Asr(SUM,38,sRecog,fDigit,set);
             ASR_monitor();
            delay(10);
             ASRB.Busy_SD();
            if (Serial.available() > 0)break;
          }
       } //
ASRB.AT_command(SUM,38,sRecog,fDigit,set);//
delay(100);
}
void ExtInt0Handler ()
{
ASRB.ProcessInt0();                                       
}
void ASR_while(int x,int y,char(*p),unsigned int dd[],int set)
{
while(1)
   {
       res=0;
       res=ASRB.Asr(x,y,p,dd,set);
      ASR_monitor();
      delay(10);
      ASRB.Busy_SD();
      if(res<255&&res>0) break;
      if (Serial.available() > 0)break;
   // else if(digitalRead(button)==LOW) break;
   }
}
void ASR_BT(int x,int y,char(*p),unsigned int dd[],int set)
{
ASRB.send_SD(260);
delay(50);
ASRB.Busy_SD();
ASR_while(x,y,p,dd,set);
}
/**************************************语音控制LED****************************/
void ASR_monitor()
{
if(res==252) digitalWrite(led,LOW);
else if(res==253) digitalWrite(led,HIGH);
}
/*******************************口令模式*************************************/
void PT(int x,int y,char(*p),unsigned int dd[],int set)
{
   while(1)
   {
   set=1;
   if (Serial.available() > 0)
   {
      set=0;
       break;
   }
int h=ASRB.Asr(x,y,p,dd,set);
delay(50);
if(h==254)   //
   {
    set=0;
   ASRB.send_SD(260);
   delay(50);
    ASRB.Busy_SD();   
   ASR_while(x,y,p,dd,set);   
    }   
}
}
/*******************************按键模式**************************************/
void BT(int x,int y,char(*p),unsigned int dd[],int set)
{
char local={0};
char DD={"asrbt"};
while(1)
{
if (Serial.available() > 0)
{
    local= Serial.read();
    delay(20);
    if(local!=0x41)   
   {
       for(int i=1;i<8;i++)
         {   
         local= Serial.read();
          if( local==0x0a)//
         {
            if( local==0x0d)
            {
                local=0;
                local=0;
                if(strcmp(local,DD)==0) //AT
                  {
               ASR_BT(x,y,p,dd,set);
                   break;
                  }               
                  }
               }
            }
      }
      else
      break;
    }
   /* else if(digitalRead(button)==LOW)
      {
          delay(100);
         if(digitalRead(button)==LOW)
         {
            ASR_BT(x,y,p,dd,set);
            break;
             }
       }*/
}
}


我看见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...


输入命令在它的software,但是在接收区没有回应



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





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

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

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

本帖最后由 philip2929 于 2015-5-27 16:15 编辑

<blockquote>Sketch uses 4,932 bytes (17%) of program storage space. Maximum is 28,672 bytes.
谢谢提醒, 我看不见它有什么error, 可是它的状态就是一直维持Uploading...
还有我用我usb dirver是arduino leonardo的dirver, 就是../arduino1.xx/dirvers的那个, 会不会有什么问题

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
页: [1]
查看完整版本: 求助!<(SKU:DFR0189)ASR Board for Arduino语音识别控制器>用不了...