【问题标题】:Stop BLE when using WiFi使用 WiFi 时停止 BLE
【发布时间】:2021-09-19 20:32:00
【问题描述】:

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

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

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

【问题讨论】:

  • esp_bt_controller_disable() 应该可以解决问题。是什么让您认为 BLE 仍处于启用状态?
  • @MichaelKotzjan 感谢您的回复!我认为它仍然处于启用状态,因为我无法向 Firebase 或 Twilio 发出 HTTP 请求。有没有办法检查BLE是否仍然启用?
  • 如果您完全删除蓝牙代码,您尝试与 Firebase 通信的代码是否有效?我怀疑蓝牙可能不是问题。
  • @romkey 是的,当我不使用 BLE 时,我的代码工作正常并且成功地将数据推送到 Firebase。

标签: bluetooth-lowenergy wifi esp32 wifimanager arduino-esp32


【解决方案1】:

您目前缺少几个 deinit 调用

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

您可能还必须确保在启用 BLE 时未启动 Wi-Fi,您可以初始化,但启动可能会导致它开始尝试立即使用收音机

【讨论】:

    【解决方案2】:

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

     BLEDevice::deinit(true);
    

    【讨论】:

      猜你喜欢
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多