我一直在尝试将两个HC-05蓝牙模块连接在一起作为主设备和从设备。我知道要做到这一点,我需要使用AT命令模式建立一个作为从设备,另一个作为主设备。我在每个模块中都使用了arduino nano,我使用的电路如下所示:
Vcc -----> 5V
GND ----> GND
Rx ------> Rx
Tx ------> Tx我遵循了各种在线教程,并使用了以下代码:
include SoftwareSerial.h
SoftwareSerial BTSerial(0, 1); // RX | TX
void setup()
{
Serial.begin(9600);
BTSerial.begin(9600); // HC-05 default speed in AT command more
Serial.println("Enter AT commands:");
}
void loop()
{
// Keep reading from HC-05 and send to Arduino Serial Monitor
if (BTSerial.available()){
Serial.write(BTSerial.read());
}
// Keep reading from Arduino Serial Monitor and send to HC-05
if (Serial.available()){
BTSerial.write(Serial.read());
}
} 使用模块上的按钮或通过将EN引脚设置为高电平,我可以将模块置于AT模式,如LED每2秒闪烁所显示的那样。但是,在使用串行监视器向模块发送命令后,当我应该收到命令的确认时,没有收到任何响应。
你知道我哪里错了吗?
发布于 2020-03-31 01:25:45
这是最终对我起作用的解决方案:我使用了这个带有分压器的电路:
我最终不得不买了一台Uno才能工作,我想我的Nano在某种程度上是有问题的。然后我使用了以下代码:
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(2, 3); // RX | TX
void setup()
{
Serial.begin(9600);
BTSerial.begin(38400); // HC-05 default speed in AT command more
Serial.println("Enter AT commands:");
}
void loop()
{
// Keep reading from HC-05 and send to Arduino Serial Monitor
if (BTSerial.available()){
Serial.write(BTSerial.read());
}
// Keep reading from Arduino Serial Monitor and send to HC-05
if (Serial.available()){
BTSerial.write(Serial.read());
}
}这使我可以进入AT模式并接收响应。
其中一个问题是,我正在使用Tx和Rx引脚,这两个引脚也用于与计算机通信,因此无法与HC-05同时使用。
另一个问题是波特率:每次通信我在9600和38400之间轮换,直到我找到一个有效的组合,并在串行监视器中调整速度,使其有意义。
然后我就可以正常地使用命令模式了。
https://stackoverflow.com/questions/60878679
复制相似问题