求助!<(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说成都, 开灯, 关灯等的词语也没反应, 是我做错了什么步骤吗? 求大神解答..
上传语音识别程序之前先要上传一边库里带的初始化程序asr_board_init.pde,然后使用的SD卡尽量小于2G,而且和SD卡的品质也有关 我用的sd卡是昨天买的8G, 是否一定要少于2G, 还有是因为卡的问题我不能给命令给它吗? philip2929 发表于 2015-5-26 11:52
我用的sd卡是昨天买的8G, 是否一定要少于2G, 还有是因为卡的问题我不能给命令给它吗? ...
命令与sd卡无关,是否在上传语音识别程序之前先上传库里带的初始化程序asr_board_init.pde 本帖最后由 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:27 编辑
uploading说明没上传上去,先上传初始化程序是为了重置EEPROM,所以顺序是初始化程序—开关灯识别程序。每次上传语音识别程序之前都建议初始化一下,然后D13是程序里需要开关的灯,没亮说明没识别到你的话,可以多试几次,识别到是会有语音提示的 本帖最后由 philip2929 于 2015-5-26 18:00 编辑
救命呀!!我上传了好多次也是Uploading..., 可是它的loading bar已经完成, 但state还是Uploading而不是complete, 大神...求求告诉我怎么解决, 我花了好多时间在这里:'(
现在它的D13着了, 可是我说话也没反应, 我狂按加关键词也没用
还有想问一下如果成功传送AT, 在ASR board软件的接收区会不会显示什么?因为我传送了AT+PLAY=001(放AD4), 也听到板子播放对应的AD4, 可是接收区什么也没好显示 Arduino IDE狀態維持在Uploading...
输入命令在它的software,但是在接收区没有回应
这是板子的图, D13是亮的, 可是因为输入不到命令, 我说关键词也不会有回应
你把arduino IDE下面的提示栏拉开点,信息多显示一点 本帖最后由 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
是否会是板子的bootloader没了? 那该怎么辨, 我还没有试过这情况
http://zhidao.baidu.com/link?url=wyfnwM-rsLd0STMCQ6fJ6tYAT8pfV1utuTpXf-dvzUQ_RZhDOzpPos6Yc0AFP_cTXSckj6MlfH2HuQYgm-OBiu3XEkURz1fY3AzABoxCJIi
我把這模板當做了Leonardo, 我在百度找到这个上传方法, 在arduino IDE快要上传前,按下复位键,是成功Upload了, 可是一使用模板的软件连接,软件就会hand了, 而且播放音频和接收252,253,254预设关键词的功能也没了,我现在真的搞不清状况, 究竟是什么问题呢
你可以看看板子插上后设备管理器是否有端口号,端口上是否有黄色问号。另外,程序下了没?初始化程序是为了清内存,还是需要下led那程序才能正常工作的 它在设备管理器的Com是正常的, 就写着Arduino Leonardo, 我就是下了它初始化的程序再下led那个, 就是不知道怎样才可以用它的At command
页:
[1]