espressif / esp-idf

Espressif IoT Development Framework. Official development framework for Espressif SoCs.
Apache License 2.0
13.67k stars 7.29k forks source link

如何使用ESP32C3扫描蓝牙信标发射的125kbs的广播信息 (IDFGH-8388) #9857

Closed qqqq29 closed 8 months ago

qqqq29 commented 2 years ago

我目前使用的使ESP32C3开发板,请问技术专家有没有相关案例可以支持ESP32C3作为主机扫描其他设备发送的125kbs速率的蓝牙广播?

esp-cjh commented 2 years ago

可以使用 extended scan,将 scan PHY 设置为 LE Coded PHY,开启扫描,然后在 ESP_GAP_BLE_EXT_ADV_REPORT_EVT 事件中可以获取广播信息。

具体代码可以参考:examples/bluetooth/bluedroid/ble_50/ble50_security_client

qqqq29 commented 2 years ago

可以使用 extended scan,将 scan PHY 设置为 LE Coded PHY,开启扫描,然后在 ESP_GAP_BLE_EXT_ADV_REPORT_EVT 事件中可以获取广播信息。

具体代码可以参考:examples/bluetooth/bluedroid/ble_50/ble50_security_client

工程师你好,我用仔细阅读了examples/bluetooth/bluedroid/ble_50/ble50_security_client下的mian文件源代码,请问具体该修改哪一个函数的参数才能将PHY设置成LE Coded PHY。 我目前只能看到esp_ble_gap_conn_params_t phy_coded_conn_params 函数与phy有关,但是不会设置。请工程师帮助解答。谢谢,感谢您的耐心解答。

esp-cjh commented 2 years ago

目前的代码已经支持 Coded PHY 扫描,PHY 的设置是这里: image

如果想只在 Coded PHY 上扫描,可以设置为

static esp_ble_ext_scan_params_t ext_scan_params = {
    .own_addr_type = BLE_ADDR_TYPE_PUBLIC,
    .filter_policy = BLE_SCAN_FILTER_ALLOW_ALL,
    .scan_duplicate = BLE_SCAN_DUPLICATE_DISABLE,
    .cfg_mask = ESP_BLE_GAP_EXT_SCAN_CFG_CODE_MASK,
    .coded_cfg = {BLE_SCAN_TYPE_ACTIVE, 40, 40},
};
qqqq29 commented 2 years ago

目前的代码已经支持 Coded PHY 扫描,PHY 的设置是这里: image

如果想只在 Coded PHY 上扫描,可以设置为

static esp_ble_ext_scan_params_t ext_scan_params = {
    .own_addr_type = BLE_ADDR_TYPE_PUBLIC,
    .filter_policy = BLE_SCAN_FILTER_ALLOW_ALL,
    .scan_duplicate = BLE_SCAN_DUPLICATE_DISABLE,
    .cfg_mask = ESP_BLE_GAP_EXT_SCAN_CFG_CODE_MASK,
    .coded_cfg = {BLE_SCAN_TYPE_ACTIVE, 40, 40},
};

工程师你好,按照你的操作教程,我已经将板子运行在Coded PHY上,并使用监视器监视模块的运行日志。日志如下:

截屏2022-09-28 13 19 41

遇到的问题是:模块并没有输出Coded PHY扫描的情况,我目前能够保证我在模块接收范围内有125k的设备正在发送广播包(使用频谱仪可以看到发射)。请问这种情况是需要修改ESP_GAP_BLE_EXT_ADV_REPORT_EVT中的代码吗?如果需要修改请工程师指明。 若无需修改代码的话请问工程师是哪里有问题,该如何尝试更改?

esp-cjh commented 2 years ago

我这边先试试扫 125k 的包。

esp-cjh commented 2 years ago

我用 ESP32C3 发 125K 广播包,ESP32C3 进行扫描,是可以扫到的: image

你可以试一下用 nRF connect app 进行扫描,如果你的设备正确发出了广播包,在 app 上是可以看到的。

qqqq29 commented 2 years ago

我用 ESP32C3 发 125K 广播包,ESP32C3 进行扫描,是可以扫到的: image

你可以试一下用 nRF connect app 进行扫描,如果你的设备正确发出了广播包,在 app 上是可以看到的。

谢谢你的解答,能否给一份你用的来发射125k广播包的程序案例。

esp-cjh commented 2 years ago

这是我测试时做的改动,发广播用的是 ble50_security_server,扫描用的是 ble50_security_client。 0001-debug-for-coded-phy-adv.zip

Alvin1Zhang commented 8 months ago

Thanks for reporting, will close due to short of feedback, feel free to reopen with more updates.