首页

声控家庭自动化

家庭自动化的概念越来越受欢迎,因为它有助于减少人类的努力和错误,从而提高效率。在家庭自动化系统的帮助下,我们可以控制不同的电器,如灯,风扇,电视,空调等。此外,家庭自动化系统还可以提供其他功能,如安全、报警、应急系统等可以集成。

有许多类型的家庭自动化系统,如蓝牙控制,互联网控制,射频控制,远程控制(IR远程)等。每种类型都有其优缺点。在这个项目中,我们设计了一个声控家庭自动化系统,通过发送语音指令来控制不同的家电。

声控家庭自动化项目是通过Arduino UNO、蓝牙和智能手机实现的。进一步的部分将解释电路图,所需的组件和工作的项目。

线路图

声控家庭自动化电路 组件的要求

  • Arduino UNO - 1
  • 蓝牙模块HC - 05
  • 智能手机或平板电脑- 1
  • NPN晶体管- 4
  • 12V继电器- 4
  • 1 KΩ电阻- 4
  • PN结二极管
  • 电力供应
  • 连接电线
  • 案板(原型)
  • 蓝牙传输语音的应用程序

组件描述

蓝牙HC - 05:在无线通信方面,我们采用了蓝牙技术,使用的模块是HC - 05。该模块可以接口使用UART协议具有广泛的可编程波特率范围,但默认波特率为9600bps。HC - 05蓝牙模块可以配置为主从模式,而另一个模块HC - 06只能工作在从模式。

下图是本项目中使用的HC - 05蓝牙模块。在这个模块中,有VCC (5V), GND, TX和RX的引脚。

HC - 05蓝牙模块

BT语音控制Arduino:这个应用程序是由SimpleLabsIN为基于语音的Arduino项目开发的。这款安卓应用程序将使用手机的语音识别功能,将语音命令转换为文本,并通过蓝牙传输字符串。

该应用程序可以从这里下载BT语音控制Arduino

如果你熟悉其他类似的应用程序,你总是可以使用它。

中继板(4通道):继电器用于将小电流晶体管电路连接到大电流交流电路。在这个项目中,我们使用了一个预建的4通道中继板。

继电器板

请注意:使用交流电源中继板时要小心。

电路设计

现在我们将看到声控家庭自动化电路的设计。首先,我们将蓝牙模块连接到Arduino。由于蓝牙使用UART协议,我们需要使用Arduino的RX和TX引脚。我们将使用" SoftwareSerial "库来定义我们自己的RX和TX引脚(引脚2是RX,引脚3是TX)。

注意:我们省略了蓝牙的RX和Arduino的TX连接,因为它没有被使用。如果你面临一个问题,连接电压分压器转换Arduino TX的5V信号到蓝牙RX的3.3V。

接下来,我们将把继电器连接到Arduino上。因为我们使用的是一个有4通道的现成中继板,我们所需要做的就是将每个中继的输入连接到Arduino。电阻器、晶体管、二极管、继电器等详细连接请参见电路图。

注意:我们没有连接任何负载到继电器,但你总是可以连接一些小负载,并检查功能。在使用带中继板的交流电源时要格外小心。

所有必要的连接都在电路图中说明了。

项目的运作情况

本课题设计了一个简单的声控家庭自动化系统。语音命令用于控制不同的设备。现在我们将看到项目的工作情况。所有的连接都按照上面的电路图进行。

在完成必要的连接后,我们必须接通电路的电源。现在,我们需要配对手机的蓝牙到HC - 05蓝牙模块。在此之前,我们需要在手机里安装上面提到的App。应用程序的主屏幕看起来像这样。

截图1

下一步是将手机与蓝牙模块连接。为此,选择“连接机器人”选项,并选择合适的蓝牙设备。如果设备之前没有配对,我们现在需要使用HC - 05蓝牙模块的引脚配对它们。

截图2

连接成功后,设备就可以进行数据传输。为此,请按下应用程序上的按下麦克风图标,并开始发出语音命令。

请注意:确保手机已启用语音识别功能(这通常与谷歌应用程序相关联)。

例如,如果我们按下麦克风图标并说“开灯”,应用程序将识别该命令并将其传输到蓝牙模块。此外,命令会显示在屏幕上供我们参考。

截图3

当字符串“turn on light”被应用检测到时,它将以“*turn on light#”的形式发送该字符串。因此,蓝牙模块实际接收到的消息格式为“* message #”。在字符串的起始和末尾填充' * '和' # '的原因是为了标识消息的开始和结束。

我们可以从字符串中删除' # ',但省略' * ',以标识字符串的开头。接收到的消息将与一些预定义的字符串进行比较,如果消息与其中任何一个字符串匹配,则执行相应的操作,如打开或关闭加载。

我们已经使用了以下命令:“打开空调”,“关闭空调”,“打开灯”,“关闭灯”,“打开电视”,“关闭电视”,“打开风扇”,“关闭风扇”,“打开所有”和“关闭所有”。

代码

应用程序

  • 声控家庭自动化系统将帮助我们用简单的语音命令控制不同的负载(电器)。
  • 这种系统对残疾人非常有用。
  • 此外,该项目还可以通过添加不同的传感器(光、烟雾等)进行扩展。

制作和输出视频

37的反应

  1. 你好,我做了这个项目,只有一个引脚11,我使用了一个HC-06而不是一个5模块。我修改了你的代码,并能够让应用程序与我的UNO一起工作。唯一的问题是我无法让我的LED闪烁。你能告诉我我的代码有什么问题吗?

    # include

    const int rxPin = 0;
    txPin = 1;
    SoftwareSerial mySerial (rxPin txPin);

    Int light = 11;
    字符串数据;

    无效的设置()

    Serial.begin (9600);
    mySerial.begin (9600);

    pinMode(光、输出);

    digitalWrite(光、低);

    无效循环()

    int i = 0;
    char ch = 0;
    数据= " ";
    而(1)

    而(mySerial.available () < = 0);
    ch = mySerial.read ();
    如果(ch = = ' # ')
    打破;
    数据+ = ch;

    以(数据);

    如果(数据= =“*打开光”)

    digitalWrite(光、高);
    系列。println(“光”);

    Else if(data=="*关灯")

    digitalWrite(光、低);
    系列。println(“灯”);

  2. 为什么空调和电视不能用?
    只有光和扇的工作。
    我使用光耦继电器高/低电平触发。
    是因为继电器吗?

  3. # include

    const int rxPin = 2;

    const int txPin = 3;

    SoftwareSerial mySerial (rxPin txPin);

    字符串的声音;
    int
    led1 = 5, //连接LED 1到引脚#5
    led2 = 6, //连接LED 2到引脚#6
    led3 = 7;//连接LED 3到引脚#7

    //————————– 调用一个函数 ——————————-//
    空白allon () {
    digitalWrite (led1、高);
    digitalWrite (led2、高);
    digitalWrite (led3、高);


    空白alloff () {
    digitalWrite (led1、低);
    digitalWrite (led2、低);
    digitalWrite (led3、低);


    //———————————————————————–//
    无效的设置(){
    Serial.begin (9600);

    pinMode (led1、输出);
    pinMode (led2、输出);
    pinMode (led3、输出);


    //———————————————————————–//
    无效循环(){
    while (Serial.available()){//检查是否有可用的字节可以读取
    延迟(10);//添加延迟使事情稳定
    char c = Serial.read();//执行串行读取
    if (c == ' # ') {break;} //在单词后面检测到#时退出循环
    声音+ = c;// voice的简写= voice + c

    If (voice.length() > 0) {
    以(声音);
    //———————————————————————–//
    //——控制多个引脚/ led——//
    If (voice == " *开关"){allon();以(声音);} //关闭所有引脚(调用函数)

    Else if(voice == " *关闭"){alloff();以(声音);} //打开所有引脚(调用函数)

    / /——一个一个打开——/ /
    else if(voice == " *TV on ") {digitalWrite(led1, HIGH);}
    else if(voice == " *fan on ") {digitalWrite(led2, HIGH);}
    else if(voice == " *计算机上"){digitalWrite(led3, HIGH);}

    / /——一个一个关掉——/ /
    else if(voice == " *TV off ") {digitalWrite(led1, LOW);}
    else if(voice == " *风扇关闭"){digitalWrite(led2, LOW);}
    else if(voice == " *计算机关闭"){digitalWrite(led3, LOW);}

    //———————————————————————–//
    }} //初始化后重置变量

    这是我正在使用的代码。我用led代替了继电器,所以修改了代码
    请仔细检查并告诉我哪里做错了。

  4. 请告诉我为什么当我给它任何命令,如“打开灯”,它被应用程序识别,并显示打开灯在屏幕底部,但什么都没有发生,没有灯打开,似乎继电器没有接收到命令。
    请告诉故障原因。

  5. 我能把小版本的风扇和灯连接起来,让它看起来像一个房子吗?它还能工作吗?
    如果可以,我该怎么做?我基本上想要小灯泡和排气风扇连接到上面的电路安装到一个房子,将使它看起来真的很酷。

  6. 这段代码是真的还是垃圾。我没有做这个电路,但这能行吗。请问如何下载这个代码。

留下一个回复

您的电邮地址将不会公布。

Electronicshub图标
Baidu
map