ESP32蓝牙扫描无法扫描到附近的手机设备

2022-10-116666
AI 快速预览详细 收起
本文讨论了使用ESP32WROOM芯片板进行蓝牙扫描时无法找到手机设备的问题。文章提供了详细的代码示例,包括BLE模式、经典蓝牙模式和双模模式的配置。通过设置主动扫描、调整扫描间隔时间和窗口大小,可以优化扫描性能。此外,还介绍了扫描结果回调和扫描缓存释放的方法。
网上找过很多示例代码,也用过ESP32标配的示例代码,使用的是ESP32WROOM芯片板,用过BLE模式,也用过经典蓝牙模式,也用过双模模式,但仍然无法扫描到设备周围的手机的蓝牙地址,示例代码如下,请高手指点,谢谢!


/*
   Based on Neil Kolban example for IDF: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleScan.cpp
   Ported to Arduino ESP32 by Evandro Copercini
*/

#include <BLEDevice.h> // 蓝牙Ble设备库
#include <BLEUtils.h>
#include <BLEScan.h> // 蓝牙ble设备的扫描功能库 本篇重点
#include <BLEAdvertisedDevice.h> // 扫描到的蓝牙设备(广播状态)

int scanTime = 120; //In seconds  扫描时间
BLEScan* pBLEScan; // 扫描对象

// 扫描广播设备结果回调
class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {
    void onResult(BLEAdvertisedDevice advertisedDevice) {
      Serial.printf("Advertised Device: %s \n", advertisedDevice.toString().c_str());
      //Serial.printf("Advertised Device name: %s \n",advertisedDevice.getName().c_str());
      //Serial.printf("Advertised Address: %s \n",advertisedDevice.getAddress().toString().c_str());
    }
};

void setup() {
  Serial.begin(115200);
  Serial.println("Scanning...");

  BLEDevice::init("ESP32TEST"); // 蓝牙设备初始化,设置设备名字
  pBLEScan = BLEDevice::getScan(); // 创建一个新扫描入口,获取扫描对象
  
  pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());// 注册扫描结果回调
//BLE_ADDR_TYPE_PUBLIC
  pBLEScan->setActiveScan(true); //active scan uses more power, but get results faster // 配置主动扫描
  pBLEScan->setInterval(0x50); // 配置扫描间隔时间,ms为单位
  pBLEScan->setWindow(0x30);  // less or equal setInterval value // 设置扫描窗口大小,需要小于扫描间隔
}

void loop() {
  // put your main code here, to run repeatedly:

  //启动扫描
  BLEScanResults foundDevices = pBLEScan->start(scanTime, false);// 开始扫描 等待扫描结果
  Serial.print("Devices found: ");
  Serial.println(foundDevices.getCount());
  Serial.println("Scan done!");
  pBLEScan->clearResults();   // delete results fromBLEScan buffer to release memory,释放扫描缓存消耗
  delay(2000);
}

   

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(0)
- 没有更多了 -