风筝
发表于: 2018-6-10 07:14:02 | 显示全部楼层

使用语音命令控制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引脚并在代码上传后重新连接。

Voice-Controlled-LEDs-Circuit-diagram-using-Arduino-and-Bluetooth.png


代码和说明

语音控制LED指示灯的完整Arduino代码在本文的末尾处给出。这里我们简单介绍代码的几个部分。


在下面的代码中,我们定义了Rx和Tx的引脚。

  1. int TxD = 11;
  2. int RxD = 10;
复制代码

现在,将Arduino的引脚2和3设置为输出。

  1. pinMode(2, OUTPUT);
  2. pinMode(3, OUTPUT);
复制代码

void loop()函数中,Arduino将持续检查输入值,并根据语音命令控制LED。根据给定的语音命令,Arduino将打开或关闭LED。我们将所有收到的命令保存在变量“Value”中。

如果该值为“all LED turn on”,则两个LED都打开,我们使用类似方式编写了用于打开或关闭单个LED的其他语音命令的代码。

  1. if (bluetooth.available())
  2.    {
  3.     value = bluetooth.readString();

  4.     if (value == "all LED turn on"){
  5.     digitalWrite(2, HIGH);
  6.     digitalWrite(3, HIGH);
  7.       }

  8.     if (value == "all LED turn off"){
  9.       digitalWrite(2, LOW);
  10.       digitalWrite(3, LOW);      
  11.       }

  12.     if (value == "turn on Red LED"){
  13.     digitalWrite(2, HIGH);
  14.       }

  15.     if (value == "turn on green LED"){
  16.       digitalWrite(3, HIGH);      
  17.       }
  18.      
  19.     if (value == "turn off red LED"){
  20.     digitalWrite(2, LOW);
  21.       }

  22.     if (value == "turn off green LED"){
  23.       digitalWrite(3, LOW);      
  24.       }
  25. }
复制代码

工作过程

语音控制LED指示灯的工作工程如下所示:

Voice-Controlled-LEDs-in-action.jpg


第1步: - 按照电路图连接所有组件;上传代码时断开Rx和Tx引脚。

第2步: - 在Play商店下载免费的“Arduino蓝牙语音控制器”应用程序。

第3步: - 打开应用程序,并按照下面的图像进行操作,首先点击“连接到蓝牙设备”并选择您的蓝牙模块,并检查它是否连接。然后点击麦克风图标发言并发送语音命令到HC-06模块。

Arduino-Bluetooth-Voice-Controller-abdroid-app-instruction.gif

注意:当您首次使用智能手机连接蓝牙模块时,它会询问密码,使用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指示灯

代码

本篇文章使用的完整代码如下:

  1. #include <SoftwareSerial.h>
  2. String value;
  3. int TxD = 11;
  4. int RxD = 10;
  5. int servoposition;
  6. SoftwareSerial bluetooth(TxD, RxD);

  7. void setup() {
  8.   pinMode(2, OUTPUT);
  9.   pinMode(3, OUTPUT);
  10.   Serial.begin(9600);       // start serial communication at 9600bps
  11.   bluetooth.begin(9600);
  12. }

  13. void loop() {
  14.   Serial.println(value);
  15. if (bluetooth.available())
  16.    {
  17.     value = bluetooth.readString();

  18.     if (value == "all LED turn on"){
  19.     digitalWrite(2, HIGH);
  20.     digitalWrite(3, HIGH);  
  21.       }

  22.     if (value == "all LED turn off"){
  23.       digitalWrite(2, LOW);
  24.       digitalWrite(3, LOW);      
  25.       }

  26.     if (value == "turn on Red LED"){
  27.     digitalWrite(2, HIGH);
  28.       }

  29.     if (value == "turn on green LED"){
  30.       digitalWrite(3, HIGH);      
  31.       }
  32.       
  33.     if (value == "turn off red LED"){
  34.     digitalWrite(2, LOW);
  35.       }

  36.     if (value == "turn off green LED"){
  37.       digitalWrite(3, LOW);      
  38.       }

  39. }

  40. }
复制代码

跳转到指定楼层
ldy
发表于: 2018-11-20 18:59:42 | 显示全部楼层

蓝牙连接上了但是不能语音
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1480



手机版|

GMT+8, 2024-4-19 11:55 , Processed in 0.137670 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表