所有关于电路

ESP32 Arduino蓝牙串行断开后不能重新连接

丽娜

螺纹启动器

丽娜

加入2019年10月29日
33.
你好,

基本ESP32 Arduino蓝牙序列示例对和按预期连接,但是一旦我断开蓝牙终端它根本停止响应新事件,

一旦我重置ESP32,它就开始再次使用相同的问题。(如果它保持成对并不匹配并不重要)

我用Windows蓝牙终端和蓝牙测试了它。(来自Windows商店)

我从GitHub下载了最新的ESP32-Arduino库,我仍然得到同样的问题。

我用几个ESP32模块测试了它,他们都以相同的问题回复。

所以这看起来像是库代码中的一个错误。

参见下面简单的Arduino示例代码:

c++:
#include "BluetoothSerial.h" #if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED) #error Bluetooth is not enabled!请运行' make menuconfig '并启用它#endif BluetoothSerial SerialBT;void setup() {Serial.begin(115200);SerialBT.begin(“ESP32test”);//蓝牙设备名称Serial。println(“设备已经启动,现在可以用蓝牙配对了!”);} void loop() {if (Serial.available()) {SerialBT.write(Serial.read());} if (SerialBT.available()) {SerialBT.read());}延迟(20);}
有谁知道另一个正在工作的蓝牙串行库?

谢谢你!
T.

Trebla.

加入2019年6月29日
310
我在您的代码示例中看到,要响应的事件只有与蓝牙绑定。如果您断开蓝牙终端,那么没有任何事件留下响应。
丽娜

螺纹启动器

丽娜

加入2019年10月29日
33.
嗨trebla,

正确的,

然而,问题是我根本无法重新连接或重对,
为了重新连接,我需要重置esp32

一旦我在终端按下断开,它将不会连接时,再按连接按钮。
ErnieM

ErnieM

2011年4月24日加入
8127年
您的程序如下所示:
代码:
connect_to_bt()循环:dosomestuff()端循环
什么东西少了?一个检查BT仍然在循环内部活动,如果连接丢弃,则某种方式重新连接它。

我的ESP32和wifi也有类似的问题。我不知道如何恢复丢失的wifi,所以我不得不发出一个重置。

有趣的部分重置为我所在的同一状态。
丽娜

螺纹启动器

丽娜

加入2019年10月29日
33.
出色地,
Arduino中的蓝牙和WiFi库应该继续工作一直对背景中的新事件做出反应,
它应该能够重新连接后断开!

如果它没有重新连接,这意味着它在某些时候停止工作,所以图书馆可能是一个错误!

我正在调试这个库,

我还找到了适用于ESP32的代码,(尚未用于Arduino),它在没有任何问题的情况下连接和断开连接和断开连接,因此我正在努力使它与Arduino编码样式和API兼容。

activerfid

加入了2020年5月30日
1
你好,

基本ESP32 Arduino蓝牙序列示例对和按预期连接,但是一旦我断开蓝牙终端它根本停止响应新事件,

一旦我重置ESP32,它就开始再次使用相同的问题。(如果它保持成对并不匹配并不重要)

我用Windows蓝牙终端和蓝牙测试了它。(来自Windows商店)

我从GitHub下载了最新的ESP32-Arduino库,我仍然得到同样的问题。

我用几个ESP32模块测试了它,他们都以相同的问题回复。

所以这看起来像是库代码中的一个错误。

参见下面简单的Arduino示例代码:

c++:
#include "BluetoothSerial.h" #if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED) #error Bluetooth is not enabled!请运行' make menuconfig '并启用它#endif BluetoothSerial SerialBT;void setup() {Serial.begin(115200);SerialBT.begin(“ESP32test”);//蓝牙设备名称Serial。println(“设备已经启动,现在可以用蓝牙配对了!”);} void loop() {if (Serial.available()) {SerialBT.write(Serial.read());} if (SerialBT.available()) {SerialBT.read());}延迟(20);}
有谁知道另一个正在工作的蓝牙串行库?

谢谢你!
在另一个基于ESP32的产品上的蓝牙丢失类似的问题。猜测我会说有一些蓝牙兼容性问题,可能与WiFi共存相关,这尚未正确实施。使用单独的蓝牙加密狗(到已经安装在我的W10 PC中的那个)改进了我看到的问题(配对,辍学,然后无法重复),但偶尔会丢失。

问候,拉尔夫
T.

Trebla.

加入2019年6月29日
310
Arduino中的蓝牙和WiFi库应该继续工作一直对背景中的新事件做出反应,
它应该能够重新连接后断开!
这将是很好的,但我不认为图书馆以这种方式工作。如果查看此基本源文件,则查找函数serialbt.available()只检查接收寄存器状态而不连接状态。您必须重写代码,以便它可以检测可能的错误并以预测的方式对其作出反应,或者您的系统将挂起或提供毫无意义的输出。
检测连接状态的一个示例在这儿。
R.

罗伊韦达

加入2019年7月29日
64.
尝试放置
serialbt.begin(“esp32test”);
在空隙循环下。一旦程序加载了定义和void设置,只读一次。空隙循环一遍又一遍地运行。如果WiFi断开连接,则必须重新启动电路板以再次看到连接,因为上面的代码行未激活。您可能必须设置询问WiFi是否处于活动状态的值。如果WiFi未激活,请执行此操作,否则erialbitt.begin(“esp32test”);
最佳