您是否注意到当我们购买带有蓝牙的设备并且信号以品牌或设备的名称命名时是多么有趣?
我说这个,因为我一直很好奇它是如何工作的,并用我自己的项目名称来命名模块。
这很简单,但在两点上有区别:配对时识别模块以及使用设备名称自定义原型。
我想你有这个问题,或者至少,很想知道如何在你的原型模块中实现这个功能。
虽然很简单,但我想教你如何做你的,不会有任何问题。
要了解此配置,您将在本阅读中了解以下几点:
哇!我愿意给你多少信息。请放心,一切都井井有条,我将尽可能简单地交付一切。
我想首先告诉您了解蓝牙模块及其与 Arduino 的连接过程的重要性。购买时,您会发现模块 HC-05 和 HC-06。
这是 Arduino 社区广泛使用的两个模块。这些模块之间的主要区别在于 HC-05 模块可以作为主机或从机。
因此,从模式允许它与另一个设备启动通信,而主模式允许蓝牙模块启动与任何其他蓝牙设备的通信。
最后,HC-06蓝牙模块仅作为从模式工作。
现在,我想向您介绍可用于将蓝牙模块与 Arduino 通信的基本结构。
实际上有两种方法,但我将解释为什么这种方法对您的项目有用。
我选择在下图中向您展示这个模型,因为我们将使用 TX 和 RX 引脚进行串行通信。因此,他们会很忙,我们将无法与蓝牙通信共享相同的引脚。
为了避免这个问题,我们将使用 SoftwareSerial 库来模拟Arduino的端口 10 和 11 上的其他串行引脚,如下图所示。
从上面的组装图中,我们将看到如何配置我们自己的设备。
AT 一词来自 ATtention 一词。这些命令是用于操作蓝牙模块的指令。在此命令结构中,任何和所有指令都必须以前缀 AT 开头,例如 AT+COMMAND。
因此,我们将通过这些命令配置我们的蓝牙模块。要知道要使用哪些命令,访问蓝牙模块的数据表很重要。
在那里,您将找到可用于配置模块的所有说明。
现在,我将开始配置 HC-06 模块并提供访问蓝牙手册 HC-05 和 HC-06 的链接。
现在,要配置蓝牙模块,我们需要一个代码来发送 AT 命令。
为蓝牙模块发送 AT 命令的代码
下面的代码用于通过 Arduino 串口发送 AT 指令并发送到蓝牙模块。
#include
SoftwareSerial mySerial(10, 11); // RX, TX
String command = ""; // Stores response of bluetooth device
// which simply allows \n between each
// response.
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(115200);
Serial.println("Type AT commands!");
// SoftwareSerial "com port" data rate. JY-MCU v1.03 defaults to 9600.
mySerial.begin(9600);
}
void loop()
{
// Read device output if available.
if (mySerial.available())
{
while(mySerial.available())
{ // While there is more to be read, keep reading.
command += (char)mySerial.read();
}
Serial.println(command);
command = ""; // No repeats
}
// Read user input if available.
if (Serial.available())
{
delay(10); // The DELAY!
mySerial.write(Serial.read());
}
}
上面的代码用于接收由 Arduino IDE 发送的 AT 命令。从 IDE 接收到的命令,它们将被发送到蓝牙模块以配置其功能。
毕竟,如何知道模块是否正在工作并响应 Arduino 发送的命令?
这是许多人在数据传输或接收出现问题时提出的问题之一。许多人认为模块已损坏并且不了解如何分析这些问题。
这就是为什么我总是说重复,了解模块的控制和配置功能。他们将帮助您解释您的应用程序中可能存在的不当行为。
我讲这个是因为我想跟大家讲讲AT功能,如下图所示。
这个函数负责测试你的Arduino和你的模块之间的通信。因此,每次执行 AT 命令时,模块必须向 Arduino IDE 的串行监视器发送消息 OK。
这个 OK 消息帮助我们得出结论,我们的模块正在工作并且正在与 Arduino 正确通信。
在此命令之后,我们需要准备模块以与Arduino相同的串行通信速度工作。
我们如何配置蓝牙模块的通信速度?
我经常说这是很多人忽略的要点之一。他们在 Arduino 上选择了串行通信速度,但是蓝牙模块的传输速度设置为另一个值。
很明显,这会出现通信问题,而且很多时候,人们不知道如何检测这些问题,因为他们不了解如何使用 AT 命令配置模块。
这样做的结果是用户指出模块的功能存在问题,但事实是模块的配置方式不适合应用程序。
为避免此问题,请从 AT 命令执行测试并使用 AT+BAUDX 配置命令设置蓝牙模块的波特率。
X 值代表配置的速度参数,如下图所示。
首先,检查用于串行通信的速度并将模块的速度调整为相同的传输速率。因此,如果您使用命令行 AT+BAUD8,您的蓝牙模块将被配置为 115200bps 的波特率。
这样,您就可以完全控制通信速度并避免模块和 Arduino 之间的通信错误。
除了速度,我们还要配置两个非常重要的参数:模块名和密码。这些参数对于在设备和蓝牙模块之间建立通信至关重要。
毕竟这两个参数怎么配置呢?
首先,为您的模块命名是基于两点的基础:在列表中识别您的设备,其次,在模块本身中插入您的设备/品牌的名称。
要执行此过程,请使用以下 AT+NAME 语句。从那里,使用以下指令:AT + NAMEsilicioslab,如图 4 所示,
执行此命令后,模块将命名为 silicioslab。
除了更改名称之外,为用户设置密码也很重要。密码由以下指令 AT+PINXXXX 定义。
在此指令中,您必须选择一个 4 位密码并执行以下命令,例如:AT + PIN4444。
执行该命令后,访问模块的新密码为 4444。
因此,通过上述步骤,可以配置整个蓝牙模块并确保您与 Arduino 的通信安全进行。
此信息得到保证,因为通过 AT 配置指令可以:
这样就可以理解掌握器件的说明书和datasheet的重要性了。
除了控制设置之外,我们还可以保证我们的应用程序中的模块结构能够充分发挥作用。
因此,学习掌握功能并使用蓝牙模块在您的项目中创建安全的应用程序。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !