风筝
发表于: 2019-3-24 21:03:32 | 显示全部楼层

在本篇文章中,我们将主要介绍如何使用HC05蓝牙模块和Arduino开发板通过蓝牙进行通信和发送数据。在本文结束时,您将学习到:

●    有关蓝牙协议的基础信息

●    如何使用蓝牙发送数据

●    如何将AT-Command发送到HC05

hc05-bluetooth-module-teaser-.jpg


蓝牙通信与协议简介

有几种无线通信方式,如NRF、ZigBee、Wi-Fi和蓝牙。


蓝牙协议: PAN网络中一种经济实惠的通信方法,最大数据速率为1Mb / S,使用2.4G频率工作在100米的标称范围内是一种常见的无线通信方式。


HC05模块是使用串行通信的蓝牙模块,主要用于电子项目。

HC05蓝牙模块重要规格参数:

●    工作电压:3.6V  -  5V

●    内置天线:是的

●    自动连接到最后一个设备:是的


通过蓝牙向Arduino发送数据

HC05模块具有内部3.3v稳压器,这就是为什么可以将其连接到5v电压的原因。但我们强烈建议使用3.3V电压,因为HC05串行通信引脚的逻辑电压为3.3V。向模块提供5V可能会导致模块损坏。


为防止模块损坏并使其正常工作,应在arduino TX引脚和模块RX引脚之间使用电阻分压电路(5v至3.3v)。


连接主设备和从设备时,板上的蓝色和红色LED每2秒闪烁一次。如果它们未连接,则每2秒仅蓝色闪烁一次。


电路

hc05-bluetooth-module-cuircuit-.jpg

hc05-bluetooth-module-circuit-2.jpg


代码

要使用蓝牙与HC05通信,您需要在手机上安装蓝牙终端应用程序。你可以用这个。

现在开始传输数据,在Arduino上传此代码,并使用刚安装的应用程序连接HC05。通讯名称为HC05,密码为1234或0000,默认传输波特率为9600。

  1. /*   
  2. HC05 - Bluetooth AT-Command mode  
  3. modified on 10 Feb 2019
  4. by Saeed Hosseini
  5. */
  6. #include <SoftwareSerial.h>
  7. SoftwareSerial MyBlue(2, 3); // RX | TX
  8. int flag = 0;
  9. int LED = 8;
  10. void setup()
  11. {   
  12.   Serial.begin(9600);
  13.   MyBlue.begin(9600);
  14.   pinMode(LED, OUTPUT);
  15.   Serial.println("Ready to connect\nDefualt password is 1234 or 000");
  16. }
  17. void loop()
  18. {
  19.   if (MyBlue.available())
  20.     flag = MyBlue.read();
  21.   if (flag == 1)
  22.   {
  23.     digitalWrite(LED, HIGH);
  24.     Serial.println("LED On");
  25.   }
  26.   else if (flag == 0)
  27.   {
  28.     digitalWrite(LED, HIGH);
  29.     Serial.println("LED Off");
  30.   }
  31. }  
复制代码

让我们深入研究一下代码,看看每行的含义:

  1. #include "SoftwareSerial.h"
复制代码

首您需要包含进行软件串行通信的库。您可以在这里下载。

  1. SoftwareSerial MyBlue(2, 3); 
复制代码

串行引脚的软件定义; RX2和TX3

  1. MyBlue.begin(9600);  
复制代码

配置软件串口波特率为9600

  1. void loop()
  2. {
  3.   if (MyBlue.available())
  4.     flag = MyBlue.read();

  5.   if (flag == 1)
  6.   {
  7.     digitalWrite(LED, HIGH);
  8.     Serial.println("LED On");
  9.   }
  10.   else if (flag == 0)
  11.   {
  12.     digitalWrite(LED, HIGH);
复制代码

读取串行数据并相应地打开/关闭LED。


将AT-Commands发送到HC05蓝牙模块并更改其设置

通过按住按钮,模块将切换到AT命令模式。否则,它在通信模式下工作。

有些模块的包装中有一个按钮,不再需要添加按钮。

进入命令模式的默认波特率是38400.现在在电路板上上传此代码并使用串行监视器设置命令。

  1. /*
  2. HC05 - Bluetooth AT-Command mode
  3. modified on 10 Feb 2019
  4. by Saeed Hosseini
  5. */
  6. #include "SoftwareSerial.h"
  7. SoftwareSerial MyBlue(2, 3); // RX | TX
  8. void setup()
  9. {
  10.   Serial.begin(9600);
  11.   MyBlue.begin(38400);  //Baud Rate for AT-command Mode.  
  12.   Serial.println("***AT commands mode***");
  13. }
  14. void loop()
  15. {
  16.   //from bluetooth to Terminal.
  17.   if (MyBlue.available())
  18.     Serial.write(MyBlue.read());
  19.   //from termial to bluetooth
  20.   if (Serial.available())
  21.     MyBlue.write(Serial.read());
  22. }
复制代码

您将通过向模块发送COMMAND来收到RESPONSE。

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1480



手机版|

GMT+8, 2024-4-20 10:02 , Processed in 0.159004 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

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

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