回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

智能家居—离线语音控制 简单

头像 于恺 2023.10.12 997 0

好久没有玩arduino了,参加成长记活动拿起封尘好多年的arduino,接上电脑,打开MIND+发现好多的惊喜,arduino支持的传感器好多,很多都没体验过。这个项目就用arduino配上离线语音识别板搞起来,选择语音控制门、快递柜、衣架、风扇、灯等执行器,获取温湿度传感器并实现语音播报室内温度、湿度。

QQ截图20231012142531.png

材料清单

QQ截图20231012181648.png

语音识别采用Gravity Voice Recognition I2C UART模块:该模块采用了全新的离线语音识别芯片。内置150条常用的固定命令词条,新增命令词自学习功能,自学习命令词可以不是一段语音,可以是一段口哨、一个响指、一声猫叫等,支持17条自学习命令词。采用双麦克风收音使模块有更好的抗噪音能力和更远的识别距离。

设计唤醒词和自定义词

唤醒词:小爱同学
定义1:开灯
定义2:关灯
定义3:当前温度
定义4:当前湿度
定义5:开递柜
定义6:关递柜
定义7:通风
定义8:关通风
定义9:晾衣服
定义10:收衣服
原始定义:开门和关门

代码如图screenshots-语音控制.mp-1697105988658.png

代码
/*!
 * MindPlus
 * uno
 *
 */
#include <DFRobot_DHT.h>
#include <DFRobot_Servo.h>
#include "DFRobot_DF2301Q.h"
#include <DFRobot_SpeechSynthesis_M.h>
// 创建对象
DFRobot_SpeechSynthesis_I2C sstts;
DFRobot_DF2301Q_I2C         asrDF2301Q;
Servo                       servo_8;
Servo                       servo_10;
Servo                       servo_12;
DFRobot_DHT                 dht11_5;


// 主程序开始
void setup() {
	Serial.begin(9600);
	servo_8.attach(8);
	servo_10.attach(10);
	servo_12.attach(12);
	dht11_5.begin(5, DHT11);
	sstts.begin(sstts.eV2);
	sstts.setVolume(8);
	sstts.setSpeed(5);
	sstts.setSoundType(sstts.eMale1);
	sstts.setTone(5);
	sstts.speak("初始化完成");
	while (!(asrDF2301Q.begin())) {delay(3000);}
	asrDF2301Q.setVolume(5);
	asrDF2301Q.setMuteMode(0);
	asrDF2301Q.setWakeTime(20);
	asrDF2301Q.playByCMDID(23);
	// 8为快递柜舵机
	// 10为晾衣架舵机
	// 12为门口舵机
	servo_8.angle(abs(0));
	servo_10.angle(abs(0));
	servo_12.angle(abs(0));
}
void loop() {
	int asrDF2301Q_CMDID = asrDF2301Q.getCMDID();
	if ((not asrDF2301Q_CMDID==0)) {
		Serial.println((asrDF2301Q_CMDID));
		if (((asrDF2301Q_CMDID)==5)) {
			digitalWrite(13, HIGH);
		}
		if (((asrDF2301Q_CMDID)==6)) {
			digitalWrite(13, LOW);
		}
		if (((asrDF2301Q_CMDID)==7)) {
			sstts.speak((String("当前温度为") + String((String((String(dht11_5.getTemperature()).toInt())) + String("摄氏度")))));
		}
		if (((asrDF2301Q_CMDID)==8)) {
			sstts.speak((String("当前湿度为百分之") + String((String(dht11_5.getHumidity()).toInt()))));
		}
		if (((asrDF2301Q_CMDID)==9)) {
			servo_8.angle(abs(90));
		}
		if (((asrDF2301Q_CMDID)==10)) {
			servo_8.angle(abs(0));
		}
	}
	if (((asrDF2301Q_CMDID)==11)) {
		digitalWrite(3, HIGH);
		digitalWrite(2, LOW);
	}
	if (((asrDF2301Q_CMDID)==12)) {
		digitalWrite(3, LOW);
		digitalWrite(2, LOW);
	}
	if (((asrDF2301Q_CMDID)==13)) {
		servo_10.angle(abs(150));
	}
	if (((asrDF2301Q_CMDID)==14)) {
		servo_10.angle(abs(0));
	}
	if (((asrDF2301Q_CMDID)==155)) {
		servo_12.angle(abs(90));
	}
	if (((asrDF2301Q_CMDID)==156)) {
		servo_12.angle(abs(0));
	}
}

评论

user-avatar