回到顶部 回到顶部
best-icon

基于语音识别的智能家居控制系统 简单

头像 孙洪尧1985 2024.02.07 122 0

一、创作背景:智能家居对残障人士的助力非常大,可以帮助他们更好地适应生活、提高生活质量、减轻家庭负担,同时也体现了社会对残障人士的关爱和尊重。过语音识别技术,残障人士可
以通过简单的语音命令控制智能家居设备,如打开空调、调节灯光亮度等,极大地提高了生活的便利性。

二、作品描述:本作品以“智能家居”为主题,设计了残障人士通过语音识别模块,分别控制风扇的开启、关闭和调整档位;控制LED灯的开启与关闭;读取室内温度,并通过microbit的LED屏显示出来,控制门的开启与关闭。

三、功能介绍

1、LED灯的开启与关闭:当唤醒语音识别模块后,说出“打开灯光”时,LED灯会亮起,同时microbit显示屏显示“√”符号;说出“关闭灯光”时,LED灯会熄灭,同时microbit显示屏显示“×”符号;

2、风扇的开启、关闭和调整档位:当唤醒语音识别模块后,说出“打开风扇”时,风扇通过PWM引脚以一定速度开启,说出“风速一档、风速二档、风速三档”时,风扇会不断加大风速,同时Microbit显示屏显示相应的数字显示当前风扇档位,当说出”关闭风扇“时,风扇关闭。

3、读取温度:当唤醒语音识别模块后,说出”读取温度“时,microbit主控板的温度模块会读取当前环境温度,并把温度数值显示在主控板的点阵屏上。

4、开关门:当唤醒语音识别模块后,说出”开门“时,舵机抬起,门打开;说出”关门“时,舵机落下,门关闭。微信图片_20240207112208.jpg微信图片_20240207112224.jpg微信图片_20240207112229.jpg微信图片_20240207112235.jpg微信图片_20240207112240.jpg微信图片_20240207112248.jpg

步骤1 利用乐高结构件搭建一个房间,并用打印机打印一张室内背景图。

步骤2 2、microbit主控板搭配DF扩展版,通过mind+编程测试语音识别模块效果

步骤3 3、用语音识别模块通过mind+程序控制风扇的开启、关闭和档位改变

步骤4 4、用语音识别模块通过mind+程序控制LED灯的开启与关闭

步骤5 5、用语音识别模块通过Mind+程序显示当前温度

步骤6 6、用语音识别模块通过Mind+程序控制舵机的角度变化,实现门的开启与关闭

步骤7 7、把开源硬件安装在房屋内,并调试程序。

材料清单

  • micro:bit X1 链接
  • micro:bit掌控I/O扩展板 X1 链接
  • Gravity: 语音识别模块 - I2C & UART X1 链接
  • Gravity: 130 直流电机风扇 X1 链接
  • Gravity: 数字白色LED发光模块 X1 链接
代码
/*!
 * MindPlus
 * microbit
 *
 */
#include <DFRobot_Servo.h>
#include <Microbit_Matrix.h>
#include "DFRobot_DF2301Q.h"
#include <Microbit_Sensors.h>
// 静态常量
const uint8_t bbcBitmap[][5] = {
	{B01111,B01001,B01001,B11011,B11011},
	{B01110,B10001,B10001,B10001,B01110},
	{B00100,B01100,B10100,B00100,B11111},
	{B01110,B10001,B00110,B01000,B11111},
	{B01110,B10001,B00010,B10001,B01110},
	{B00000,B00001,B00010,B10100,B01000},
	{B10001,B01010,B00100,B01010,B10001}
};
// 创建对象
Servo               servo_8;
DFRobot_DF2301Q_I2C asrDF2301Q;


// 主程序开始
void setup() {
	Serial.begin(9600);
	servo_8.attach(8);
	servo_8.angle(abs(15));
	while (!(asrDF2301Q.begin())) {delay(3000);}
	asrDF2301Q.setVolume(20);
	asrDF2301Q.setMuteMode(0);
	asrDF2301Q.setWakeTime(20);
	Serial.println(asrDF2301Q.getWakeTime());
}
void loop() {
	if ((2==2)) {
		int asrDF2301Q_CMDID = asrDF2301Q.getCMDID();
		Serial.println("-------");
		if ((not asrDF2301Q_CMDID==0)) {
			if (((asrDF2301Q_CMDID)==85)) {
				analogWrite(14, 100);
				MMatrix.show(bbcBitmap[0]);
			}
			if (((asrDF2301Q_CMDID)==86)) {
				analogWrite(14, 0);
				MMatrix.show(bbcBitmap[1]);
			}
			if (((asrDF2301Q_CMDID)==87)) {
				analogWrite(14, 337);
				MMatrix.show(bbcBitmap[2]);
			}
			if (((asrDF2301Q_CMDID)==88)) {
				analogWrite(14, 705);
				MMatrix.show(bbcBitmap[3]);
			}
			if (((asrDF2301Q_CMDID)==89)) {
				analogWrite(14, 1023);
				MMatrix.show(bbcBitmap[4]);
			}
			if (((asrDF2301Q_CMDID)==117)) {
				digitalWrite(12, HIGH);
				MMatrix.show(bbcBitmap[5]);
			}
			if (((asrDF2301Q_CMDID)==118)) {
				digitalWrite(12, LOW);
				MMatrix.show(bbcBitmap[6]);
			}
			if (((asrDF2301Q_CMDID)==74)) {
				MMatrix.print((Sensors.temperature()));
				delay(1000);
			}
			if (((asrDF2301Q_CMDID)==155)) {
				servo_8.angle(abs(90));
			}
			if (((asrDF2301Q_CMDID)==156)) {
				servo_8.angle(abs(15));
			}
		}
	}
}

评论

user-avatar