DIY语音控制家庭自动化与Arduino和蓝牙
扫描二维码
随时随地手机看文章
智能家居因其便利性和节能性而受到欢迎。一个正在实施的项目使用语音命令无线控制家用电器和灯光。Android应用程序执行语音到文本的转换,蓝牙与微控制器通信以执行命令。这消除了与设备进行物理交互的需要。智能家居可以通过自动化任务和跟踪能源使用情况来节省能源并减少碳足迹。家庭中的智能技术是一种使日常工作更容易的有效方式。智能家居设备还可以跟踪能源使用情况,并提供提高效率的见解。
在此之前,我们已经建立了一些物联网家庭自动化项目,以下是一些示例:
•基于物联网的人孔监控系统
•用Android Studio创建一个Android应用程序,使用NodeMCU通过WiFi控制LED
•家庭自动化与Node-RED和树莓派:控制灯和读取DHT11数据
组件的要求
•Arduino UNO
•HC-05蓝牙模块
•2路继电器模块(5v)
•2人
•2个灯泡
•带2针公插座的220v电线
•太阳板
•跳线
•螺母和螺栓
•还有智能手机
蓝牙模块HC-05
它是电子工程中广泛使用的无线通信模块。它使用串行UART通信进行数据传输。
模块可以在两种模式下工作:
1.主模式:可以与所有从机共享数据。
2.从模式:从主蓝牙接收数据。
在这里,我们的蓝牙模块是一个奴隶,而智能手机是一个主人。
hc05引脚
它由6个引脚组成,分别是STATE, RXD, TXD, GND, VCC和EN,如模块背面所述。
•STATE引脚:该引脚定义模块的状态,无论它是否与另一个设备配对。
•RxD引脚:该引脚使用串行UART通信。当模块处于命令模式时,该引脚用于发送AT命令。
•TxD引脚:该引脚使用串行UART通信。该引脚用于在模块处于命令模式时推出对AT命令的响应。
•Vcc引脚:该引脚用于为模块供电,使其工作。它通常连接到Arduino板上的5V引脚。其电压范围在3.6v到5v之间。
•GND引脚:该引脚用于将模块连接到Arduino板的接地。
•EN引脚:该引脚用于命令模式和数据模式之间的切换。如果此引脚设置为HIGH,则模块将处于命令模式。同样,如果该引脚设置为LOW,则模块将处于数据模式。
继电器
它是一种开关机电装置,可以切换高安培的交流-直流电源。
继电器引出线
该模块通常有四个引脚:
•Vcc引脚:用于上电继电器模块。它通常连接到5v。
•GND引脚:用于为继电器模块提供接地。
•IN1:用于控制模块内第一个继电器的输出。
•IN2:用于控制模块内第二继电器的输出。
此外,在每个继电器的高压端子侧还有三个引脚。它们是NC(常闭),COM(普通)和NO(常开)。
线路图
联系很简单,让我们开始吧。
蓝牙HC-05:为了建立Arduino与蓝牙HC-05模块之间的通信,Arduino的引脚3(代码中定义的Tx)连接到蓝牙模块的接收引脚(RxD)上,引脚2 (Rx)连接到发送引脚(TxD)上。蓝牙模块通过将其Vcc和GND引脚连接到Arduino各自的电源和接地引脚来供电。
继电器模块:Arduino引脚5连接到继电器模块的IN1,而引脚6连接到IN2。这些输入引脚是低电平,这意味着逻辑低电平激活继电器,逻辑高电平使继电器失活。
继电器模块有两个指示继电器状态的led。当继电器被激活时,相应的LED亮起。继电器模块通过将其Vcc和GND引脚连接到Arduino各自的电源和接地引脚来供电。
在继电器模块的高压侧,两个继电器的COM口都连接到交流电源上。每个继电器的NO端子分别连接到每个单独的灯泡上,中性线直接连接到两个灯泡上,如图所示。
设置语音命令Android应用程序
要使用该项目,首先需要从Playstore安装一个名为Arduino Bluetooth的应用程序。
•下载并安装应用程序。
•允许使用麦克风并启用蓝牙。
•启动您的项目并将您的设备与HC-05配对。
•在应用程序中切换到语音模式。
•点击麦克风图标开始发出语音命令。
•根据您的代码说出正确的命令。
•享受用语音提示控制你的设备。
Arduino代码说明
该程序通过串行通信读取蓝牙模块数据,并将其与定义的条件进行比较。如果任何条件为真,则该任务将执行。如果不满足任何条件,它将不做任何事情。
首先,我们必须包含成功执行代码所需的所有库。库只包括SoftwareSerial。此外,我们还定义了进一步编程所需的变量和对象。
•我们使用软件串行库定义到Arduino的Rx和Tx串行通信引脚。除此之外,我们可以直接使用Arduino引脚(0,1)用于Rx和Tx,但每当我们上传新代码时,它就会创建一个删除连接的喧嚣。
•这里我们将pin2定义为Rx, pin3定义为Tx,请记住蓝牙的RxD连接到Arduino的Tx,而TxD连接到Arduino的Rx。
在setup()函数中,启动串行通信。
•蓝牙模块只能以9600的波特率进行通信。因此,我们初始化BT模块。
•同样,我们定义了所有的Pinmodes。
在上面的循环部分,我们已经完成了所有的处理任务,如读取串行端口、比较文本和执行任务。
•串行端口上的可用数据被读取并存储在字符串变量“data”中。此外,将存储的数据与我们使用IF-Else条件实现的不同条件进行比较。
•您可以根据自己的喜好更改比较文本。此外,您还可以通过智能手机通过语音命令发送串行监视器,查看接收到的数据。
这都是关于代码的,只要上传代码。注意Rx和Tx引脚,不要忘记在串行监视器上将波特率设置为9600。
完整的代码将在下面的代码部分中找到。
项目运作
•使用上传的代码启动项目。
•打开应用程序并配对您的BT模块。
•开始发送代码中使用的语音命令来控制设备。
本文编译自iotdesignpro