ESP32 扫描蓝牙设备(编辑中)

最近更新于 2025-07-05 08:17

测试环境

Arduino IDE 2.3.6
esp32 3.2.1(开发板工具链)
ESP32-WROOM-32(硬件)

实现

基于 ESP32 的官方案例修改

扫描 BLE 低功耗蓝牙

#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEScan.h>
#include <BLEAdvertisedDevice.h>

int scanTime = 5;  // 扫描持续时间,单位为秒
BLEScan *pBLEScan;

class MyAdvertisedDeviceCallbacks : public BLEAdvertisedDeviceCallbacks
{
    void onResult(BLEAdvertisedDevice advertisedDevice)
    {
        Serial.printf("发现的设备: %s \n", advertisedDevice.toString().c_str());
    }
};

void setup()
{
    Serial.begin(115200);
    Serial.println("开始扫描...");

    BLEDevice::init("");
    pBLEScan = BLEDevice::getScan();  // 创建新的扫描对象
    pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks()); // 发现蓝牙设备时执行的操作(回调函数)
    pBLEScan->setActiveScan(true);  // 设置主动扫描(主动扫描会消耗更多电量,但结果返回更快)
    pBLEScan->setInterval(100); // 两次扫描间隔的时间
    pBLEScan->setWindow(99);  // 每次扫描持续的时间(小于或等于 setInterval 的值)
}

void loop()
{
    // 下面代码循环执行
    BLEScanResults *foundDevices = pBLEScan->start(scanTime, false);
    Serial.print("\n本轮扫描发现的设备数量: ");
    Serial.println(foundDevices->getCount());
    Serial.println("扫描完成!");
    pBLEScan->clearResults();  // 清除扫描结果,释放内存
    delay(2000);
}

file

扫描经典蓝牙

ESP32 扫描蓝牙设备(编辑中)
Scroll to top
打开目录