最近更新于 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);
}
扫描经典蓝牙
ESP32 扫描蓝牙设备(编辑中)