使用 WiFi 时停止 BLE

问题描述

我正在尝试在 ESP32 上使用 BLE 和 WiFi。正如我所见,它们不能同时使用,所以我试图找出一种方法来停止从 BLE 服务器接收数据。这是我迄今为止尝试过的停止 BLE 的方法

btStop();
esp_bt_controller_disable();
esp_bluedroid_disable();

然而,似乎没有任何工作。 ESP32 应该连接到 WiFi(使用 WiFiManager),但是当我尝试连接到 Firebase 或 Twilio 时,连接被拒绝。在尝试连接到 Firebase 之前,我有 35000 个空闲堆和 80000 个 twilio。那么,有没有办法检查 BLE 扫描/连接是否已停止?有没有其他命令可以关闭它? 可能是因为我的堆用完了,所以我无法连接到 Firebase?

解决方法

您目前缺少几个 deinit 调用

esp_bluedroid_disable();
esp_bluedroid_deinit();  //**
esp_bt_controller_disable();
esp_bt_controller_deinit(); //**

您可能还必须确保在启用 BLE 时没有启动 Wi-Fi,您可以init,但是启动可能会导致它开始尝试的问题立即使用收音机

,

如果您使用的是 BLEDevice 库,请尝试以下操作:

 BLEDevice::deinit(true);