语音芯片IC_MCU单片机语音方案,使用Arduino和蓝牙DIY语音控制家庭自动化案例,用语音命令无线控制家用电器和灯光

整理编辑:逐高电子技术开发部 / 日期:2024-9-15

 

Voice Controlled Home Automation using Arduino and Bluetooth

 

智能家居因其便利性和节能性而变得流行。一个实施的项目使用语音命令无线控制家用电器和灯光。Android 应用程序执行语音到文本的转换,蓝牙与微控制器通信以执行命令。这消除了与设备进行物理交互的需要。智能家居可以通过自动执行任务和跟踪能源使用情况来节省能源并减少碳足迹。家庭中的智能技术是一种让日常任务更轻松的有效方法。智能家居设备还可以跟踪能源使用情况并提供提高效率的见解。

在此之前,我们已经构建了一些 IoT 家庭自动化项目,以下是一些示例:

基于 IoT 的井盖监控系统
使用 Android Studio 创建 Android 应用,使用 NodeMCU 通过 WiFi 控制 LED
使用 Node-RED 和 Raspberry Pi 实现家庭自动化:控制灯光和读取 DHT11 数据

所需组件

Arduino UNO
HC-05 蓝牙模块
2 通道继电器模块 (5v)
2 个支架
2 个灯泡
220v 电线,带 2 针公插座
太阳能板
跳线
螺母和螺栓
和智能手机

蓝牙模块 HC-05

它是电子项目中广泛使用的无线通信模块。它使用串行 UART 通信进行数据传输。

该模块可以以两种模式工作:

主模式:它可以与所有从属设备共享数据。

从属模式:它从主蓝牙接收数据。

在这里,我们的蓝牙模块作为从属设备工作,而智能手机是主设备。

HC 05 引脚分布

HC-05 Bluetooth Module Pinout

 

它由 6 个引脚组成,分别是 STATE、RXD、TXD、GND、VCC 和 EN,如模块背面所述。

STATE 引脚:此引脚定义模块的状态,无论它是否与其他设备配对。
RxD 引脚:此引脚使用串行 UART 通信。当模块处于命令模式时,此引脚用于发送 AT 命令。
TxD 引脚:此引脚使用串行 UART 通信。当模块处于命令模式时,此引脚用于推送对 AT 命令的响应。
Vcc 引脚:此引脚用于为模块供电以使其工作。它通常连接到 Arduino 板上的 5V 引脚。其电压范围在 3.6v 到 5v 之间。
GND 引脚:此引脚用于将模块连接到 Arduino 板的地。
EN 引脚:此引脚用于在命令和数据模式之间切换。如果此引脚设置为 HIGH,模块将处于命令模式。同样,如果此引脚设置为低电平,模块将处于数据模式。

继电器

它是一种开关机电设备,可以切换高安培交流-直流电源。
继电器引脚分布

继电器模块引脚分布

 

Relay Module Pinout

 

该模块通常有四个引脚:

Vcc 引脚:用于为继电器模块供电。它通常连接到 5v。
GND 引脚:用于为继电器模块提供接地。
IN1:用于控制模块内第一个继电器的输出。
IN2:用于控制模块内第二个继电器的输出。

此外,每个继电器的高压端子侧还有三个引脚。这些是 NC(常闭)、COM(公共)和 NO(常开)。

 

home automation circuit diagram

 

连接非常简单,让我们开始吧。

蓝牙 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 端子连接到每个单独的灯泡,而中性线直接连接到两个灯泡,如电路图所示。

 

Arduino based Home Automation

 

设置语音命令 Android 应用程序

要使用该项目,首先您需要从 Playstore 安装一个名为 Arduino Bluetooth 的应用程序。

下载并安装该应用程序。
授予麦克风权限并启用蓝牙。
启动您的项目并将您的设备与 HC-05 配对。
在应用程序中切换到语音模式。

 

Home Automation App Setup

 

点击麦克风图标开始发出语音命令。
根据您的代码说出正确的命令。
享受通过语音提示控制您的设备的乐趣。

 

Voice Controlled Home Automation App Setup

 

Arduino 代码说明

程序通过串行通信读取蓝牙模块数据并将其与定义的条件进行比较。如果任何条件为真,则将执行该任务。如果任何条件不满足,它将不执行任何操作。

首先,我们必须包含所有必要的库才能成功执行代码。库仅包括 SoftwareSerial。此外,我们还定义了进一步编程所需的变量和对象。

#include
// Define 2 channel relay pins
const int Light1 = 6; // Relay pin 1 (IN1)
const int Light2 = 5;   // Relay pin 2 (IN2)
/* Create object named bt of the class SoftwareSerial */
SoftwareSerial bt(2, 3); /* (Rx,Tx) */

 

我们使用软件串行库来定义 Arduino 的 Rx 和 Tx 串行通信引脚。除此之外,我们可以直接使用 Arduino 引脚 (0,1) 作为 Rx 和 Tx,但每当我们上传新代码时,都会产生断开连接的麻烦。
在这里,我们将 pin2 定义为 Rx,将 pin3 定义为 Tx。始终记住,蓝牙的 RxD 连接到 Arduino 的 Tx,而 TxD 连接到 Arduino 的 Rx。

void setup() {
bt.begin(9600); /* 定义软件串行通信的波特率 */
Serial.begin(9600); /* 定义串行通信的波特率 */
// 将继电器引脚设置为 OUTPUT
pinMode(Light1, OUTPUT);
pinMode(Light2, OUTPUT);
digitalWrite(Light1, HIGH);
digitalWrite(Light2, HIGH);
}

在 setup() 函数中,启动串行通信。

蓝牙模块只能以波特率 9600 进行通信。因此,我们初始化 BT 模块。
此外,我们定义所有 Pinmode。

void loop() {
String data="";
char ch;
while (bt.available()) /* 如果串行端口上有数据 */
{ ch = bt.read(); /* 将收到的字符打印到串行监视器上 */
data=data+ch;
}
Serial.print(data);
// 使用语音命令控制设备
if ((data == "打开灯 1")||(data == "打开灯 1")) // 打开 Device1
{
digitalWrite(Light1, LOW);
delay(200);
}
else if ((data == "关闭灯 1")||(data == "关闭灯 1")) // 关闭 Device1
{
digitalWrite(Light1, HIGH);
delay(200);
}
// 使用语音命令控制设备
else if ((data == "打开灯二")||(data == "打开灯至")||(data == "打开灯 2")) // 打开设备 2
{
digitalWrite(Light2, LOW);
delay(200);
}
else if ((data== "关闭灯二")||(data == "关闭灯至")||(data == "关闭灯 2")) // 关闭设备 2
{
digitalWrite(Light2, HIGH);
delay(200);
}
}


在上面的循环部分,我们完成了所有处理任务,如读取串行端口、比较文本和执行任务。

读取串行端口上的可用数据并将其存储在字符串变量“data”中。此外,将存储的数据与我们使用 IF-Else 条件实现的不同条件进行比较。
您可以根据自己的方便更改比较文本。此外,您还可以在串行监视器上检查通过智能手机的语音命令发送的接收数据。

这就是代码的全部内容,只需上传代码即可。请注意 Rx 和 Tx 引脚,不要忘记在串行监视器上将波特率设置为 9600。

您将在下面的代码部分找到完整的代码。

项目运作

Home Automation using Arduino

使用上传的代码启动您的项目。
打开应用程序并配对您的 BT 模块。
开始发送代码中使用的语音命令来控制设备。

Arduino Home Automation

#include

// DeUfine 2 channel relay pins

const int Light1 = 6; // Relay pin 1 (IN1)

const int Light2 = 5; // Relay pin 2 (IN2)

/* Create object named bt of the class SoftwareSerial */

SoftwareSerial bt(2, 3); /* (Rx,Tx) */

void setup() {

bt.begin(9600); /* Define baud rate for software serial communication */

Serial.begin(9600); /* Define baud rate for serial communication */

// Set Relay pins as OUTPUT

pinMode(Light1, OUTPUT);

pinMode(Light2, OUTPUT);

digitalWrite(Light1, HIGH);

digitalWrite(Light2, HIGH);

}

void loop() {

String data="";

char ch;

while (bt.available()) /* If data is available on serial port */

{ ch = bt.read(); /* Print character received on to the serial monitor */

data=data+ch;

}

Serial.print(data);

// Control the devices using voice command

if ((data == "turn on light one")||(data == "turn on light 1")) // turn on Device1

{

digitalWrite(Light1, LOW);

delay(200);

}

else if ((data == "turn off light one")||(data == "turn off light 1")) // turn off Device1

{

digitalWrite(Light1, HIGH);

delay(200);

}

// Control the devices using voice command

else if ((data == "turn on light two")||(data == "turn on light to")||(data == "turn on light 2")) // turn on Device2

{

digitalWrite(Light2, LOW);

delay(200);

}

else if ((data== "turn off light two")||(data == "turn off light to")||(data == "turn off light 2")) // turn off Device2

{

digitalWrite(Light2, HIGH);

delay(200);

}

}


希望你喜欢这篇文章并从中学到一些有用的东西。如果你有任何问题请联系逐高电子开发部应广单片机选型表

台湾应广科技语音IC作为一款高性能、低成本、易用的单片机芯片,在智能家居、智能安防、智能工业等领域具有广泛的应用前景。其高效的语音识别功能、语音提示与回放功能以及高性能的ADC和OTP烧录特性,使得该芯片在各类应用中都能发挥出色的性能。逐高电子专注于智能语音技术的研发和应用,致力于为客户提供高性能、低功耗的语音芯片解决方案。

应广单片机技术资料

  • 台湾应广单片机官网
  • 应广单片机例程
  • 应广单片机编程指南
  • 应广单片机定时器
  • 技术开发工具
  • 应广单片机IDE&仿真器
  • 应广单片机烧录器
  • 代码生成器
应广触摸单片机 PMS161 触摸功能内含一个触摸检测电路,用户可通过寄存器 ESOCR配置触摸模块电源

应广触摸单片机 PMS161 触摸功能内含一个触摸检测电路,用户可通过寄存器 ESOCR配置触摸模块电源


应广科技 PMB183 8 位 OTP 型单片机带充电,内置一个硬件充电器,此充电器为完全恒流/恒压线性充电,可用于单节锂离子电池充电管理

应广科技 PMB183 8 位 OTP 型单片机带充电,内置一个硬件充电器,此充电器为完全恒流/恒压线性充电,可用于单节锂离子电池充电管理


低功耗高效能语音控制IC,为您的设备赋予语音交互能力,应广科技语音单片机芯片打造极致语音控制体验的IC选择

低功耗高效能语音控制IC,为您的设备赋予语音交互能力,应广科技语音单片机芯片打造极致语音控制体验的IC选择


PMB180应广单片机8 位 OTP 型单片机带充电,内置一个硬件充电器。此充电器为完全恒流/恒压线性充电,可用于单节锂离子电池充电管理

PMB180应广单片机8 位 OTP 型单片机带充电,内置一个硬件充电器。此充电器为完全恒流/恒压线性充电,可用于单节锂离子电池充电管理


PMC-APN002 过电压保护应用需知,IO 输入电压高过 VDD 或低于 GND,都可能造成应广单片机损伤,或是因内部电流引发单片机不正常工作

PMC-APN002 过电压保护应用需知,IO 输入电压高过 VDD 或低于 GND,都可能造成应广单片机损伤,或是因内部电流引发单片机不正常工作


PMS154C单片机8位PWM计数器/比较器使用,选择 PA3 为负输入和 Vinternal R 为正输入,Vinternal R 的电压为(18/32)*VDD,AC 阻容降压供电

PMS154C单片机8位PWM计数器/比较器使用,选择 PA3 为负输入和 Vinternal R 为正输入,Vinternal R 的电压为(18/32)*VDD,AC 阻容降压供电


语音控制IC应广单片机(MCU)如何设计声控灯应用解决方案?将介绍设计过程中的关键阶段,包括组件选择、电路设计、电源、编程和测试

语音控制IC应广单片机(MCU)如何设计声控灯应用解决方案?将介绍设计过程中的关键阶段,包括组件选择、电路设计、电源、编程和测试


语音控制IC低功耗微控制器(MCU)的语音控制,什么构成了良好的语音控制解决方案,语音用户界面 (VUI) 使人类能够使用语音与机器通信

语音控制IC低功耗微控制器(MCU)的语音控制,什么构成了良好的语音控制解决方案,语音用户界面 (VUI) 使人类能够使用语音与机器通信


PFC232 应广单片机,工业级- 8 位 MTP 型单片机(FPPATM)带 12 位增强型 ADC,自于内部bandgap参考电压或0.25*VDD,89条高效的指令

PFC232 应广单片机,工业级- 8 位 MTP 型单片机(FPPATM)带 12 位增强型 ADC,自于内部bandgap参考电压或0.25*VDD,89条高效的指令


应广科技Mini-C语言开发PMS150G,Mini-C语言是台湾应广公司推出的自家单片机开发语言,兼容C语言,实现Mini C的代码产生器

应广科技Mini-C语言开发PMS150G,Mini-C语言是台湾应广公司推出的自家单片机开发语言,兼容C语言,实现Mini C的代码产生器


应广科技PMC-APN001 ADC 模拟信号源输出阻抗应用需知,所有带 ADC 单片,ADC 取样周期为 2us,信号源对于芯片内部充放电

应广科技PMC-APN001 ADC 模拟信号源输出阻抗应用需知,所有带 ADC 单片,ADC 取样周期为 2us,信号源对于芯片内部充放电


PMB183 8位OTP型应广单片机带充电应用方案,3连套11位SuLED (Super LED) PWM生成器,充电模式待机功耗57uA(VCC)

PMB183 8位OTP型应广单片机带充电应用方案,3连套11位SuLED (Super LED) PWM生成器,充电模式待机功耗57uA(VCC)


Padauk应广科技单片机PFS154超低功耗LED闪光灯,尽可能长时间地用一块电池的电量让LED闪烁的挑战又如何呢

Padauk应广科技单片机PFS154超低功耗LED闪光灯,尽可能长时间地用一块电池的电量让LED闪烁的挑战又如何呢


PMS150应广科技8位单片机(MCU),价格美丽,性价比高mini-c好用,适用于消费电子开发,经典PMS150C的点灯程序代码

PMS150应广科技8位单片机(MCU),价格美丽,性价比高mini-c好用,适用于消费电子开发,经典PMS150C的点灯程序代码


应广单片机8位单片机PWM呼吸灯代码, 利用PWM计数器分别为 TM2\TM3\T16单片机嵌入式硬件开发

应广单片机8位单片机PWM呼吸灯代码, 利用PWM计数器分别为 TM2\TM3\T16单片机嵌入式硬件开发


开发实力

专业资深的软硬件开发工程师团队,熟悉行业客户产品硬件技术平台解决方案

全球渠道

为客户提供高性价比的产品和服务,满足客户及时快速的电子生产制造需求

品质保证

专业的测试保证团队,保证每批方案的稳定性,兼容性,和抗干扰性

售后服务

专业的技术服务团队,24小时为客户提供各种软硬件的技术支持和售后服务

服务热线

0755-88364040
18902464556

义隆代理

烧录开发

技术支持

申请样品

扫描微信二维码