查看: 7798|回复: 9

DFRobot Arduino Smart Home kit智能家居语音识别系统 待机久死机

[复制链接]
前段时间购得一套DFRobot Arduino Smart Home kit智能家居语音识别系统


测试使用下来,发现待机久了便会死机。绿色LED灯常亮,口令无任何反应。需要从启动,恢复正常,但闲置待机过久超过半小时上,便又挂掉死机。不知用过的朋友是否遇到同样问题,原配USB线供电 ,外置DC供电,均出现该问题。

Youyou  初级技匠

发表于 2014-6-16 14:47:34

本帖最后由 Youyou 于 2014-6-18 12:07 编辑

亲,可以试试我更新过的代码,测试了一上午,没有发现死机现象。之前在旺旺上也联系过你,我等着你的反馈。关于这套系统,语音播放完后再进行识别有一比较长的延迟,有空我看看能不能优化下。下载程序时要把扩展板的三档开关拨到PROG处,否则不能下载程序,下载完后,要拨到xbee处,否则不能进行发音。
相关库下载:语音识别:http://www.dfrobot.com.cn/image/data/DFR0177/Voice_1.0.rar
语音合成:http://www.dfrobot.com.cn/image/data/SEN0117/Syn6288_1.0.rar
DHT11:http://www.dfrobot.com.cn/image/data/DFR0067/dht11.zip
程序已经更新,加入了状态指示灯。

voice3.ino

6.53 KB, 下载次数: 745

回复

使用道具 举报

lauren  高级技师

发表于 2014-6-11 15:36:59

这种类似的问题很有可能是有软件造成的呢,一般硬件很难说死机,像arduino这种控制器也都是使用工业控制器做的。
容易发生死机说明,软件不是很完善。

能尝试在你的源码当中插入一些数据推送的点,去发现,卡死在哪个步骤上面?
回复

使用道具 举报

bigbird  初级技师
 楼主|

发表于 2014-6-12 10:58:18

本帖最后由 Ricky 于 2014-6-12 11:18 编辑
lauren 发表于 2014-6-11 15:36
这种类似的问题很有可能是有软件造成的呢,一般硬件很难说死机,像arduino这种控制器也都是使用工业控制器 ...

你好,程序上全部是官方下载的源码,只修改过口令这一栏,烦请查看

  1. #include <Wire.h>
  2. #include <Voice.h>
  3. #include "Syn6288.h"
  4. Syn6288 syn;
  5. #define SUM 10
  6. #define DHT11_PIN 0      //ģ���?
  7. byte dht11_dat[5];
  8. uint8  nAsrStatus=0;
  9. char sRecog[SUM][80] = {"dong gua","wen du zen me yang","kai deng","guan deng","yao kai deng ma","dong","gua","wen du","kai","guan"};//С���������¶���ô���ƣ��صƣ���Ҫ������С�ף�С
  10. uint8_t text1[]={0xD2,0xBB,0xB6,0xFE,0xC8,0xFD,0xCB,0xC4,0xCE,0xE5,0xC1,0xF9,0xC6,0xDF,0xB0,0xCB,0xBE,0xC5,0xCA,0xAE,0xC1,0xE3};//һ�����������߰˾�ʮ��
  11. uint8_t text2[]={0xC4,0xFA,0xBA,0xC3};// ���?
  12. uint8_t text3[]={0xB5,0xB1,0xC7,0xB0,0xCE,0xC2,0xB6,0xC8,0xCE,0xAA};//��ǰ�¶�Ϊ
  13. uint8_t text4[]={0xCA,0xAA,0xB6,0xC8,0xCE,0xAA,0xB0,0xD9,0xB7,0xD6,0xD6,0xAE};//ʪ��Ϊ�ٷ�֮
  14. uint8_t text5[]={0xC9,0xE3,0xCA,0xCF,0xB6,0xC8};//���϶�
  15. uint8_t text6[]="soundn";//������
  16. uint8_t text7[]={0xC7,0xEB,0xD7,0xA2,0xD2,0xE2,0xA3,0xAC,0xD3,0xD0,0xCE,0xA3,0xCF,0xD5,0xC6,0xF8,0xCC,0xE5,0xD0,0xB9,0xC2,0xA9};//��ע�⣬��Σ������й©
  17. uint8_t text8[]={0xD5,0xFD,0xD4,0xDA,0xBF,0xAA,0xB5,0xC6};//���ڿ���
  18. uint8_t text9[]={0xD5,0xFD,0xD4,0xDA,0xB9,0xD8,0xB5,0xC6};//���ڹص�
  19. uint8_t text10[]={0xC7,0xEB,0xCE,0xCA,0xC4,0xE3,0xD4,0xDA,0xCB,0xB5,0xCA,0xB2,0xC3,0xB4,0xA3,0xBF};//��������˵ʲô��
  20. uint8_t text11[]={0xB9,0xE2,0xCF,0xDF,0xB2,0xBB,0xD7,0xE3,0x20,0xA3,0xAC,0xD5,0xFD,0xD4,0xDA,0xBF,0xAA,0xB5,0xC6};//���߲��㣬���ڿ���
  21. uint8_t text12[]={0xCF,0xD6,0xD4,0xDA,0xB9,0xE2,0xCF,0xDF,0xC3,0xF7,0xC1,0xC1,0xA3,0xAC,0xB2,0xBB,0xD0,0xE8,0xD2,0xAA,0xBF,0xAA,0xB5,0xC6};//���ڹ�������������Ҫ����
  22. uint8_t text13[]={0xB5,0xC6,0xD2,0xD1,0xB4,0xF2,0xBF,0xAA};//���Ѵ�
  23. uint8_t text14[]={0xB5,0xC6,0xD2,0xD1,0xB9,0xD8,0xB1,0xD5};//���ѹر�
  24. uint8_t text15[]={0xB9,0xE2,0xCF,0xDF,0xB2,0xBB,0xD7,0xE3,0x20,0xA3,0xAC,0xB5,0xC6,0xD2,0xD1,0xB4,0xF2,0xBF,0xAA};//���߲��㣬���Ѵ�
  25. uint8_t text[2];
  26. uint8_t textt[2];
  27. int gas,shine;
  28. int dat1,dat2;
  29. int flag,sign;
  30. int led=8;
  31. int pig1,pig2,pig3,pig4;
  32. void DHT11()
  33. {
  34.     byte i;
  35.         byte dht11_in;
  36.   PORTC &= ~_BV(DHT11_PIN);
  37.     delay(18);
  38.     PORTC |= _BV(DHT11_PIN);
  39.     delayMicroseconds(40);

  40.     DDRC &= ~_BV(DHT11_PIN);
  41.     delayMicroseconds(40);

  42.     dht11_in = PINC & _BV(DHT11_PIN);

  43.     if(dht11_in){
  44.       Serial.println("dht11 start condition 1 not met");
  45.       return;
  46.     }
  47.     delayMicroseconds(80);

  48.     dht11_in = PINC & _BV(DHT11_PIN);

  49.     if(!dht11_in){
  50.       Serial.println("dht11 start condition 2 not met");
  51.       return;
  52.     }
  53.     delayMicroseconds(80);
  54.     for (i=0; i<5; i++)
  55.       dht11_dat<i> = read_dht11_dat();

  56.     DDRC |= _BV(DHT11_PIN);
  57.     PORTC |= _BV(DHT11_PIN);

  58.     byte dht11_check_sum = dht11_dat[0]+dht11_dat[1]+dht11_dat[2]+dht11_dat[3];
  59.     // check check_sum
  60.     if(dht11_dat[4]!= dht11_check_sum)
  61.     {
  62.      Serial.println("DHT11 checksum error");
  63.     }
  64.     dat1=dht11_dat[2];
  65.     dat2=dht11_dat[0];
  66. }

  67. byte read_dht11_dat()
  68. {
  69.   byte i = 0;
  70.   byte result=0;
  71.   for(i=0; i< 8; i++){


  72.     while(!(PINC & _BV(DHT11_PIN)));  // wait for 50us
  73.     delayMicroseconds(30);

  74.     if(PINC & _BV(DHT11_PIN))
  75.       result |=(1<<(7-i));
  76.     while((PINC & _BV(DHT11_PIN)));  // wait '1' finish               
  77.   }
  78.   return result;
  79. }
  80. void finally (unsigned char n)
  81. {
  82. switch(n)
  83.         {
  84.         case 0: syn.play(text2,sizeof(text2),0);flag=1;break;
  85.         case 1:
  86.              if(flag==1)
  87.              {
  88.              pig1=dat1/10;
  89.              pig2=dat1%10;
  90.              pig3=dat2/10;
  91.              pig4=dat2%10;
  92.              syn.play(text3,sizeof(text3),0);
  93.              if(pig1>0)
  94.               {
  95.                text[0]=text1[pig1*2-2];
  96.                text[1]=text1[pig1*2-1];
  97.                syn.play(text,sizeof(text),0);
  98.                text[0]=text1[18];
  99.                text[1]=text1[19];
  100.                syn.play(text,sizeof(text),0);
  101.               }
  102.               if(pig2>0)
  103.               {
  104.                 text[0]=text1[pig2*2-2];
  105.                 text[1]=text1[pig2*2-1];
  106.                 syn.play(text,sizeof(text),0);
  107.               }
  108.               syn.play(text5,sizeof(text5),0);
  109.               syn.play(text4,sizeof(text4),0);
  110.                   if(pig3>0)
  111.               {
  112.                textt[0]=text1[pig3*2-2];
  113.                textt[1]=text1[pig3*2-1];
  114.                syn.play(textt,sizeof(textt),0);
  115.                textt[0]=text1[18];
  116.                textt[1]=text1[19];
  117.                syn.play(textt,sizeof(textt),0);
  118.               }
  119.               if(pig4>0)
  120.               {
  121.                 textt[0]=text1[pig4*2-2];
  122.                 textt[1]=text1[pig4*2-1];
  123.                 syn.play(textt,sizeof(textt),0);
  124.               }
  125.               flag=0;
  126.              }
  127.                 break;
  128.         case 2:
  129.                if(flag==1)
  130.                {
  131.                  if(sign==0)
  132.                  {
  133.                syn.play(text8,sizeof(text8),0);
  134.                digitalWrite(led,HIGH);
  135.                sign=1;
  136.                  }
  137.                  else syn.play(text13,sizeof(text13),0);
  138.                 flag=0;  
  139.              }
  140.                 break;        
  141.         case 3:
  142.                if(flag==1)
  143.                {
  144.                  if(sign==1)
  145.                  {
  146.                 syn.play(text9,sizeof(text9),0);
  147.                 digitalWrite(led,LOW);
  148.                  sign=0;
  149.                  }
  150.                  else syn.play(text14,sizeof(text14),0);
  151.                 flag=0;
  152.                 }
  153.                 break;
  154.          case 4:if(flag==1)
  155.                  {
  156.                   shine=analogRead(2);
  157.                   if(shine>700) //���ߴ�������ֵ
  158.                   {
  159.                    if(sign==0)
  160.                     {     
  161.                     syn.play(text11,sizeof(text11),0);
  162.                     digitalWrite(led,HIGH);
  163.                     sign=1;
  164.                     }
  165.                     else syn.play(text15,sizeof(text15),0);
  166.                   }
  167.                   else
  168.                   {
  169.                    syn.play(text12,sizeof(text12),0);
  170.                    digitalWrite(led,LOW);
  171.                    sign=0;
  172.                   }
  173.                   flag=0;
  174.                  }
  175.                  break;
  176.         default:
  177.                 if(flag==1)
  178.                 {
  179.                 syn.play(text10,sizeof(text10),0);
  180.                 flag=0;
  181.                 }
  182.                 break;      
  183.         }
  184. }

  185. void ExtInt0Handler ()
  186. {
  187.   Voice.ProcessInt0();        //оƬ�ͳ��ж��ź�
  188.                                 
  189. }
  190. void setup()
  191. {
  192.   Wire.begin();
  193.   Serial.begin(9600);
  194.   Voice.Initialise(MIC,VoiceRecognitionV1);//Initialise mode MIC or MONO,default is MIC
  195.                                            //VoiceRecognitionV1 is VoiceRecognitionV1.0 shield
  196.                                            //VoiceRecognitionV2 is VoiceRecognitionV2.1 module
  197.   attachInterrupt(0,ExtInt0Handler,LOW);
  198.    DDRC |= _BV(DHT11_PIN);
  199.   PORTC |= _BV(DHT11_PIN);
  200.   pinMode(led,OUTPUT);
  201.   pinMode(7,OUTPUT); //������ʾ��ʶ��״̬������ʱ��ʶ��
  202. }
  203. void loop()
  204. {  
  205.         uint8 nAsrRes;
  206.         nAsrStatus = LD_ASR_NONE;
  207.       // DHT11();   
  208.         while(1)
  209.         {
  210.           DHT11();
  211.            gas=analogRead(1);
  212.            if(gas>700)
  213.        {
  214.         syn.play(text6,sizeof(text6),0);
  215.         syn.play(text7,sizeof(text7),0);
  216.        }
  217.            delay(100);
  218.                 switch(nAsrStatus)
  219.                 {
  220.                         case LD_ASR_RUNING:
  221.                         case LD_ASR_ERROR:               
  222.                                 break;
  223.                         case LD_ASR_NONE:
  224.                         {
  225.                                 nAsrStatus=LD_ASR_RUNING;
  226.                             if (Voice.RunASR(SUM,80,sRecog)==0)
  227.                                 {
  228.                                         nAsrStatus= LD_ASR_ERROR;
  229.                                          Serial.println( "ASR_ERROR");
  230.                                 }

  231.                               Serial.println( "ASR_RUNING.....");
  232.                               digitalWrite(7,HIGH);
  233.                                 break;
  234.                         }
  235.                         case LD_ASR_FOUNDOK:
  236.                         {
  237.                                  digitalWrite(7,LOW);
  238.                                 nAsrRes =Voice. LD_GetResult();//        һ��ASRʶ�����̽���ȥȡASRʶ����        
  239.                           
  240.                 finally(nAsrRes);
  241.                                 nAsrStatus = LD_ASR_NONE;
  242.                                 break;
  243.                         }
  244.                         case LD_ASR_FOUNDZERO:
  245.                         default:
  246.                         {        
  247.                                  digitalWrite(7,LOW);
  248.                                 nAsrStatus = LD_ASR_NONE;
  249.                                 break;
  250.                         }
  251.                  }// switch
  252.               delay(500);
  253.         }// while
  254. }</i>
复制代码

回复

使用道具 举报

lauren  高级技师

发表于 2014-6-12 12:33:46

bigbird 发表于 2014-6-12 10:58
你好,程序上全部是官方下载的源码,只修改过口令这一栏,烦请查看

不知道你想要实现的效果是什么样的?或许我们面向你要的效果来看程序怎么开发是更为合适一点。样例程序中貌似包含了比较杂的功能,温湿度采集,语音识别,环境气体数据采集,语音播放。貌似都有写,但是针对具体应用场景的软件开发才有意义。这个样例应该是纯展示功能的。

方便介绍下你想做的东西吗?这样能更好地帮你的
回复

使用道具 举报

bigbird  初级技师
 楼主|

发表于 2014-6-13 20:58:58

lauren 发表于 2014-6-12 12:33
不知道你想要实现的效果是什么样的?或许我们面向你要的效果来看程序怎么开发是更为合适一点。样例程序中 ...

我做一个智能灯,要用到这套系统里的功能,只要能正常工作没就行,现在两个主要问题,1》待机久死机  2》环境光传感器不起作用
回复

使用道具 举报

Youyou  初级技匠

发表于 2014-6-16 14:58:04

环境光传感器,建议单独用代码测试下正不正常,然后根据观察到的值,取一个适当的阀值。
回复

使用道具 举报

bigbird  初级技师
 楼主|

发表于 2014-6-18 11:19:56

你好,昨天试过了,试用了 voice2.ino 版本的程序,反应似乎比以前快,目前没有发现死机现象,但是出现新的问题
1> 原LED指示灯配件无任何反应
回复

使用道具 举报

Youyou  初级技匠

发表于 2014-6-23 14:58:38

最新版的程序,加入了看门狗功能,可以有效的防止死机。 vr.ino (6.54 KB, 下载次数: 715)
回复

使用道具 举报

bigbird  初级技师
 楼主|

发表于 2014-6-24 16:22:26

收到了,非常感谢
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail