4078浏览
查看: 4078|回复: 2

[求助] 蓝牙模块、语音识别、语音合成使用问题

[复制链接]
本帖最后由 缘在自然 于 2021-4-6 08:42 编辑

各位大能们好!我用Arduino uno R3,我在使用DFRobot蓝牙(BluetoothV3)(用于手机APP控制)、离线语音识别、语音合成模块做个小设计时,发现一旦在setup()函数中加载ss.begin()、asr.begin(loop),蓝牙就不好使了,接收不到手机发来的指令字符'a',用//屏蔽掉ss.begin()、asr.begin(loop)蓝牙就能正常工作了。不知道是什么原因,语音识别和语音合成接的I2C口(用的DFRobot的Arduino Uno R3-EDU主控板),蓝牙模块接的是硬串口(换软串口也不行)。

不知哪位哪位大侠能指点迷津?我这先行谢谢了。

Forgotten  版主

发表于 2021-4-6 14:29:02

可以发一下程序,能用的和不能用的
回复

使用道具 举报

缘在自然  学徒
 楼主|

发表于 2021-4-6 14:47:39

Forgotten 发表于 2021-4-6 14:29
可以发一下程序,能用的和不能用的


#include "DFRobot_ASR.h"//加载语音识别库
#include "DFRobot_SpeechSynthesis.h"//加载语音合成播报库
//#include<SoftwareSerial.h>//加载软串口库
DFRobot_ASR  asr;//Automatic Speech Recognition,0x4F
//SoftwareSerial ssSerial1(2,3);//指定蓝牙软串口2为rx,3为tx
DFRobot_SpeechSynthesis_I2C ss;//0x80
char Instructions_val;//定义接收手机通过蓝牙发来的指令码变量
int Temperature_val;//定义温度传感器输入变量
int Temperature_dat;//定义计算得温度值变量
const int Power=4;//
const int Lock_relay=5;//
const int PTC_relay=6;//
const int Ultraviolet_relay=7;//
const int Fans_relay=8;//
const int Ill_detect=9;//
int Ill_State=0;//
const int Temperature_Pin = 0; //定义模拟接口A0连接LM35温度传感器
unsigned long t=10800000;//
unsigned long t_start;//开始计时时刻
unsigned long t_now;//当前时刻
unsigned long t_remain;//剩余时间
unsigned long hour_remain;//剩余小时
unsigned long minute_remain;//剩余分钟
unsigned long second_remain;//剩余秒
int result=0;//识别词条
int work_flag=0;//工作标识

void setup() {
  Serial.begin(9600);
  //ssSerial1.begin(9600);
  //ss.begin(ssSerial1);   
  pinMode(Power,OUTPUT);
  digitalWrite(Power,HIGH);
  pinMode(Lock_relay,OUTPUT);
  digitalWrite(Lock_relay,LOW);
  pinMode(PTC_relay,OUTPUT);
  digitalWrite(PTC_relay,LOW);
  pinMode(Ultraviolet_relay,OUTPUT);
  digitalWrite(Ultraviolet_relay,LOW);
  pinMode(Fans_relay,OUTPUT);
  digitalWrite(Fans_relay,LOW);  
  pinMode(Ill_detect,INPUT);

ss.begin();
asr.begin(PASSWORD);//语音识别模式:指令模式
asr.addCommand("xiao ke",0);//识别唤醒指令“小可”
asr.addCommand("hai xu yao duo chang shi jian",1);//询问“还需要多长时间”   
asr.start();//开始识别  
}

void loop() {
//接收手机指令
if(Serial.available()>0){
  char Instructions_val=Serial.read();
  if(Instructions_val=='a'){
    digitalWrite(Power,LOW);//   
    digitalWrite(Lock_relay,HIGH);//
    delay(1000);
    digitalWrite(PTC_relay,HIGH);//
    delay(1000);
    digitalWrite(Ultraviolet_relay,HIGH);//
    delay(1000);
    work_flag=1;//工作开始  
    t_start=millis();//开始计时
  }
  else if(Instructions_val=='b'){
    Close_set();   
  }
}

if(work_flag==1)           
{
  //监测温度
  Temperature_val=analogRead(0);// 读取传感器的模拟值并赋值给Temperature_val
  Temperature_dat=(125*Temperature_val)>>8;//计算出摄氏温度
  //Serial.println(Temperature_dat);
  if (Temperature_dat>80){
    digitalWrite(Fans_relay,HIGH);//
    delay(500);
  }
  else if(Temperature_dat<50){
    digitalWrite(Fans_relay,LOW);//
    delay(500);
  }

//语音识别及播报
  result=asr.read();//读取识别到的词条.
    if(result==1)
    {
      t_now=millis();
      Serial.println(t_now);
      t_remain=t-(t_now-t_start);//剩余毫秒
      Serial.println(t_remain);
      second_remain=(t_remain/1000)%60;//剩余秒
      minute_remain=(t_remain/60000)%60;//剩余分钟
      hour_remain=t_remain/3600000;//剩余小时
      String reHour=String(hour_remain);
      String reMinute=String(second_remain);
      String reSecond=String(minute_remain);
      ss.speak(F("您好,小可还需要工作"));
      ss.speak(reHour);
      ss.speak(F("小时"));
      ss.speak(reMinute);
      ss.speak(F("分钟"));
      ss.speak(reSecond);
      ss.speak(F("秒"));   
    }

  
  //检测非法状态
  Ill_State=digitalRead(Ill_detect);
  if(Ill_State==HIGH){
   //ss.speak(F("对不起,小可正在工作中,敬请谅解"));
    delay(5000);
    }
  }

}

void Close_set(){   
  digitalWrite(Lock_relay,LOW);  
  digitalWrite(PTC_relay,LOW);  
  digitalWrite(Ultraviolet_relay,LOW);  
  digitalWrite(Fans_relay,LOW);
  digitalWrite(Power,HIGH);
  work_flag=0;  
}
只要用//把 ss.begin();
asr.begin(PASSWORD);//语音识别模式:指令模式
屏蔽掉蓝牙控制就正常
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail