|
使用语音命令控制LED指示灯看上去似乎是一项难以实现的功能,但实际上它很容易,我们可以快速实现它。我们只需要一个Arduino UNO开发板与HC-06蓝牙模块进行串行通信,以及使用一台智能手机将语音命令发送到蓝牙模块HC-06。为了接收语音命令,我们使用“Arduino蓝牙语音控制器”的Android应用程序,您可以从Play商店下载(链接在文章下面给出)。
所需的材料
● Arduino UNO开发板 ● HC-06蓝牙模块 ● LED指示灯(红色和绿色) ● 电阻220欧姆(2个) ● Arduino蓝牙语音控制器(从Play商店下载) ● 面包板 ● 连接导线
HC-06蓝牙模块 蓝牙可以运行在以下两种模式: 1. AT指令设置模式 2. 工作模式
在AT指令设置模式下,我们可以配置蓝牙属性,如蓝牙信号的名称、密码、运行波特率等。工作模式是我们可以在PIC单片机和蓝牙模块之间发送和接收数据的一种模式。因此,在本教程中,我们将仅使用工作模式进行测试。AT指令设置模式保留为默认设置。设备名称将是HC-05,密码将为0000或1234,最重要的是所有蓝牙模块的默认波特率为9600。
该模块工作在5V电源,信号引脚工作在3.3V,所以模块内部安装有一个3.3V稳压器。因此我们不必担心。在六个引脚中工作模式只使用了四个引脚。引脚连接表如下所示 序号 | HC-05模块的引脚 | MCU的引脚 | PIC的引脚 | 1 | Vcc | Vdd | 第31脚 | 2 | Gnd | Gnd | 第32脚 | 3 | Tx | RC6 / Tx / CK | 第25脚 | 4 | Rx | RC7 / Rx / DT | 第26脚 | 5 | State | NC | NC | 6 | EN(Enable) | NC | NC |
电路原理图 该语音控制LED指示灯的电路图如下,在Arduino UNO中上传代码时,断开Rx和Tx引脚并在代码上传后重新连接。
代码和说明 语音控制LED指示灯的完整Arduino代码在本文的末尾处给出。这里我们简单介绍代码的几个部分。
在下面的代码中,我们定义了Rx和Tx的引脚。 - int TxD = 11;
- int RxD = 10;
复制代码
现在,将Arduino的引脚2和3设置为输出。 - pinMode(2, OUTPUT);
- pinMode(3, OUTPUT);
复制代码
在void loop()函数中,Arduino将持续检查输入值,并根据语音命令控制LED。根据给定的语音命令,Arduino将打开或关闭LED。我们将所有收到的命令保存在变量“Value”中。
如果该值为“all LED turn on”,则两个LED都打开,我们使用类似方式编写了用于打开或关闭单个LED的其他语音命令的代码。 - if (bluetooth.available())
- {
- value = bluetooth.readString();
- if (value == "all LED turn on"){
- digitalWrite(2, HIGH);
- digitalWrite(3, HIGH);
- }
- if (value == "all LED turn off"){
- digitalWrite(2, LOW);
- digitalWrite(3, LOW);
- }
- if (value == "turn on Red LED"){
- digitalWrite(2, HIGH);
- }
- if (value == "turn on green LED"){
- digitalWrite(3, HIGH);
- }
-
- if (value == "turn off red LED"){
- digitalWrite(2, LOW);
- }
- if (value == "turn off green LED"){
- digitalWrite(3, LOW);
- }
- }
复制代码
工作过程 语音控制LED指示灯的工作工程如下所示:
第1步: - 按照电路图连接所有组件;上传代码时断开Rx和Tx引脚。
第2步: - 在Play商店下载免费的“Arduino蓝牙语音控制器”应用程序。
第3步: - 打开应用程序,并按照下面的图像进行操作,首先点击“连接到蓝牙设备”并选择您的蓝牙模块,并检查它是否连接。然后点击麦克风图标发言并发送语音命令到HC-06模块。
注意:当您首次使用智能手机连接蓝牙模块时,它会询问密码,使用0000或1234。
第4步: - 设置好所有东西后,您只需使用应用程序发送语音命令,该应用程序将进一步发送至蓝牙模块HC-06,然后HC-06与Arduino UNO进行串行通信,然后执行任务根据命令。下面显示了命令和接收命令后要执行的动作: 序号 | 命令 | 动作 | 1 | all LED turn on
| 点亮红色和绿色LED指示灯 | 2 | all LED turn off | 熄灭红色和绿色LED指示灯 | 3 | turn on Red LED | 点亮红色LED指示灯 | 4 | turn on green LED | 点亮绿色LED指示灯 | 5 | turn off red LED | 熄灭红色LED指示灯 | 6 | turn off green LED | 熄灭绿色LED指示灯 |
代码 本篇文章使用的完整代码如下: - #include <SoftwareSerial.h>
- String value;
- int TxD = 11;
- int RxD = 10;
- int servoposition;
- SoftwareSerial bluetooth(TxD, RxD);
- void setup() {
- pinMode(2, OUTPUT);
- pinMode(3, OUTPUT);
- Serial.begin(9600); // start serial communication at 9600bps
- bluetooth.begin(9600);
- }
- void loop() {
- Serial.println(value);
- if (bluetooth.available())
- {
- value = bluetooth.readString();
- if (value == "all LED turn on"){
- digitalWrite(2, HIGH);
- digitalWrite(3, HIGH);
- }
- if (value == "all LED turn off"){
- digitalWrite(2, LOW);
- digitalWrite(3, LOW);
- }
- if (value == "turn on Red LED"){
- digitalWrite(2, HIGH);
- }
- if (value == "turn on green LED"){
- digitalWrite(3, HIGH);
- }
-
- if (value == "turn off red LED"){
- digitalWrite(2, LOW);
- }
- if (value == "turn off green LED"){
- digitalWrite(3, LOW);
- }
- }
- }
复制代码
|