|
在本篇文章中,我们将主要介绍如何使用HC05蓝牙模块和Arduino开发板通过蓝牙进行通信和发送数据。在本文结束时,您将学习到: ● 有关蓝牙协议的基础信息 ● 如何使用蓝牙发送数据 ● 如何将AT-Command发送到HC05
蓝牙通信与协议简介 有几种无线通信方式,如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通信,您需要在手机上安装蓝牙终端应用程序。你可以用这个。 现在开始传输数据,在Arduino上传此代码,并使用刚安装的应用程序连接HC05。通讯名称为HC05,密码为1234或0000,默认传输波特率为9600。 - /*
- HC05 - Bluetooth AT-Command mode
- modified on 10 Feb 2019
- by Saeed Hosseini
- */
- #include <SoftwareSerial.h>
- SoftwareSerial MyBlue(2, 3); // RX | TX
- int flag = 0;
- int LED = 8;
- void setup()
- {
- Serial.begin(9600);
- MyBlue.begin(9600);
- pinMode(LED, OUTPUT);
- Serial.println("Ready to connect\nDefualt password is 1234 or 000");
- }
- void loop()
- {
- if (MyBlue.available())
- flag = MyBlue.read();
- if (flag == 1)
- {
- digitalWrite(LED, HIGH);
- Serial.println("LED On");
- }
- else if (flag == 0)
- {
- digitalWrite(LED, HIGH);
- Serial.println("LED Off");
- }
- }
复制代码
让我们深入研究一下代码,看看每行的含义: - #include "SoftwareSerial.h"
复制代码首您需要包含进行软件串行通信的库。您可以在这里下载。 - SoftwareSerial MyBlue(2, 3);
复制代码串行引脚的软件定义; RX2和TX3 配置软件串口波特率为9600 - void loop()
- {
- if (MyBlue.available())
- flag = MyBlue.read();
-
- if (flag == 1)
- {
- digitalWrite(LED, HIGH);
- Serial.println("LED On");
- }
- else if (flag == 0)
- {
- digitalWrite(LED, HIGH);
复制代码读取串行数据并相应地打开/关闭LED。
将AT-Commands发送到HC05蓝牙模块并更改其设置 通过按住按钮,模块将切换到AT命令模式。否则,它在通信模式下工作。 有些模块的包装中有一个按钮,不再需要添加按钮。 进入命令模式的默认波特率是38400.现在在电路板上上传此代码并使用串行监视器设置命令。 - /*
- HC05 - Bluetooth AT-Command mode
- modified on 10 Feb 2019
- by Saeed Hosseini
- */
- #include "SoftwareSerial.h"
- SoftwareSerial MyBlue(2, 3); // RX | TX
- void setup()
- {
- Serial.begin(9600);
- MyBlue.begin(38400); //Baud Rate for AT-command Mode.
- Serial.println("***AT commands mode***");
- }
- void loop()
- {
- //from bluetooth to Terminal.
- if (MyBlue.available())
- Serial.write(MyBlue.read());
- //from termial to bluetooth
- if (Serial.available())
- MyBlue.write(Serial.read());
- }
复制代码
您将通过向模块发送COMMAND来收到RESPONSE。 |