ESP32 SerialBluetooth отключается в течение секунды после подключения, но не BLEDevice/BLEServer

Код, использующий BluetoothSerial api, отключается сразу после установления соединения с моим ноутбуком под управлением Ubuntu 18.04. Если вместо BluetoothSerial используется api BLEDevice, соединение остается подключенным. См.Минимальные примеры ниже. Еще одно странное наблюдение заключается в том, что соединение с моим телефоном Android стабильно при запуске примера BluetoothSerial ниже.

Как правильно подключить BT как к телефону, так и к ноутбуку? Чип, на котором работает код,-esp32-wroom-32d.

Минимальный код с отключением BT от ноутбука Ubuntu 18.04 примерно через секунду (из примераSerialToSerialBT):

#include "BluetoothSerial.h"

BluetoothSerial SerialBT;

void setup() {
  SerialBT.begin("ESP32 SerialBT");
}

void loop() {
} 

Минимальный код со стабильным BT-соединением (из примераBLE_notify):

#include <BLEDevice.h>
#include <BLEServer.h>

BLEServer* pServer = NULL;

void setup() {
  BLEDevice::init("ESP32");

  pServer = BLEDevice::createServer();
  pServer->setCallbacks(new BLEServerCallbacks());

  BLEDevice::startAdvertising();
}

void loop() {   
}

ОБНОВЛЕНИЕ:

  • Обновление Ubuntu до 20.04 не помогло.

, 👍1


1 ответ


1

Я знаю, что это старый, но у меня была такая же проблема с использованием bluetoothserial.h. Но с помощью rfcomm

rfcomm bind 0 <bluetooth MAC ADDRESS>

а затем мой пример команды отправляется в serialBT

echo -ne ">LOOOCR" > /dev/rfcomm0

/dev/rfcomm0-это устройство, созданное с помощью привязки. Он даже по-прежнему отображается как отключенный в графическом интерфейсе Bluetooth Ubunutu 20.04. Как бы то ни было, я думаю, что это одно и то же на всех устройствах. Пока вы не подключитесь к последовательному порту BT, он будет только сопряжен. Но кто-то с большими знаниями, чем я, может объяснить.

,