0

我已经让 BLE 用于配置和设置 nano IoT,并且 WIFI 用于将传感器数据发送到云数据库。

我在 Arduino 论坛上找到了一个可能的解决方案它 https://forum.arduino.cc/t/coexistence-of-wifi-and-ble-in-arduino-nano-33-iot/676169

但是我有一个内存泄漏问题:每次我切换回 BLE 时,它都会消耗大约 500 字节的内存。这意味着所有内存在一小时左右内耗尽,Nano IoT 崩溃

在此处输入图像描述

有没有人把这两个想法合并了。Nano 33 IoT 是否同时连接了 Wifi 和 BLE?

我知道 BLE 和 Wifi 不能在这块板上并行工作,但你能在两者之间轻松快速地切换吗?

4

1 回答 1

0

与此同时,我在 ArduinoBLE 库上找到了内存泄漏问题的答案:

看起来问题来自以下文件:

.\libraries\ArduinoBLE\src\utility\GATT.cpp

void GATTClass::begin()a 中,一些对象是用 new 创建的。但是它们不会在 中删除void GATTClass::end()

所以方法需要更新如下:

void GATTClass::end()
{
  delete( _genericAccessService );
  delete( _deviceNameCharacteristic );
  delete( _appearanceCharacteristic );
  delete( _genericAttributeService );
  delete( _servicesChangedCharacteristic );
 _attributes.clear();
}

GitHub上有一个未解决的问题 https://github.com/arduino-libraries/ArduinoBLE/issues/192

现在回到BLE和WiFi之间切换的部分。这是如何做到的:

//Start Wifi
  wiFiDrv.wifiDriverDeinit();
  wiFiDrv.wifiDriverInit();
  status = WiFi.begin(ssid, pass);
  server.begin();

//...

// End Wifi    

  WiFi.end()     

//...

//Start BLE
    BLE.begin();
    BLE.scan(); 

//...

// End BLE
   BLE.stopAdvertise();   //don't think this is needed as I am reading other BLE devices
   BLE.stopScan();
   BLE.end();

BLEservice并在代码部分BLEcharacteristics完成。setup()

于 2021-09-01T08:38:35.960 回答