一、创作背景:智能家居对残障人士的助力非常大,可以帮助他们更好地适应生活、提高生活质量、减轻家庭负担,同时也体现了社会对残障人士的关爱和尊重。过语音识别技术,残障人士可
以通过简单的语音命令控制智能家居设备,如打开空调、调节灯光亮度等,极大地提高了生活的便利性。
二、作品描述:本作品以“智能家居”为主题,设计了残障人士通过语音识别模块,分别控制风扇的开启、关闭和调整档位;控制LED灯的开启与关闭;读取室内温度,并通过microbit的LED屏显示出来,控制门的开启与关闭。
三、功能介绍
1、LED灯的开启与关闭:当唤醒语音识别模块后,说出“打开灯光”时,LED灯会亮起,同时microbit显示屏显示“√”符号;说出“关闭灯光”时,LED灯会熄灭,同时microbit显示屏显示“×”符号;
2、风扇的开启、关闭和调整档位:当唤醒语音识别模块后,说出“打开风扇”时,风扇通过PWM引脚以一定速度开启,说出“风速一档、风速二档、风速三档”时,风扇会不断加大风速,同时Microbit显示屏显示相应的数字显示当前风扇档位,当说出”关闭风扇“时,风扇关闭。
3、读取温度:当唤醒语音识别模块后,说出”读取温度“时,microbit主控板的温度模块会读取当前环境温度,并把温度数值显示在主控板的点阵屏上。
4、开关门:当唤醒语音识别模块后,说出”开门“时,舵机抬起,门打开;说出”关门“时,舵机落下,门关闭。
步骤1 利用乐高结构件搭建一个房间,并用打印机打印一张室内背景图。
步骤2 2、microbit主控板搭配DF扩展版,通过mind+编程测试语音识别模块效果
步骤3 3、用语音识别模块通过mind+程序控制风扇的开启、关闭和档位改变
步骤4 4、用语音识别模块通过mind+程序控制LED灯的开启与关闭
步骤5 5、用语音识别模块通过Mind+程序显示当前温度
步骤6 6、用语音识别模块通过Mind+程序控制舵机的角度变化,实现门的开启与关闭
步骤7 7、把开源硬件安装在房屋内,并调试程序。
/*!
* 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));
}
}
}
}
评论