首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Arduino nano IoT上切换Wifi和BLE?

如何在Arduino nano IoT上切换Wifi和BLE?
EN

Stack Overflow用户
提问于 2021-08-31 17:39:23
回答 1查看 141关注 0票数 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是否同时支持无线和BLE功能?

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

EN

回答 1

Stack Overflow用户

发布于 2021-09-01 08:38:36

同时,我在ArduinoBLE库上找到了内存泄漏问题的解决方案:

该问题似乎来自以下文件:

代码语言:javascript
复制
.\libraries\ArduinoBLE\src\utility\GATT.cpp

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

因此,该方法需要进行如下更新:

代码语言:javascript
复制
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之间切换的部分。下面是如何做的:

代码语言:javascript
复制
//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();

BLEserviceBLEcharacteristics是在代码的setup()部分完成的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69003153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档