如何更改我自己的esp32-beacon的TX功率?

时间:2019-07-12 21:45:35

标签: beacon esp32 eddystone

我正在用ESP32仿真信标,并且我想更改TX功率电平以达到不同的距离。我如何更改发射功率水平?

这是针对资产跟踪应用程序的,我正在尝试使用其他硬件,以了解硬件对系统的影响。

我已经尝试过估算信标,并且可以使用它们将TX功率级别从-18dbm更改为4dbm。但是我无法用ESP32芯片做到这一点。

我正在使用Eddystone协议,更具体地说是Eddystone-UID。

EddystoneUid::EddystoneUid(const std::string& nid, const std::string& bid) {
    frame.len16bitServiceUuidPart = 0x03;   // <- 1 (data type value) + 2 (16-bit Eddystone UUID)
    frame.type16bitServiceUuid = 0x03;      // 16-bit Service UUID
    frame.eddystoneUuid = EDDYSTONE_SERVICE_UUID;
    frame.lenServiceDataPart = 0x17;        // Eddystone-UID full length (23bytes)
    frame.typeServiceData = 0x16;           // Service Data
    frame._eddystoneUuid = EDDYSTONE_SERVICE_UUID;
    frame.frameType = EDDYSTONE_FRAME_TYPE_UID;
    frame.ranging = 0x00;                   // TODO: ranging data
    memset(frame.nid, 0, sizeof(frame.nid));
    memset(frame.bid, 0, sizeof(frame.bid));
    memset(frame.rfu, 0, sizeof(frame.rfu));
    setBeaconId(nid, bid);
}

该示例代码显示了配置eddystone-uid框架所需的参数,但我不知道如何更改TX功率水平。

该行中的

    frame.ranging = 0x00;                   // TODO: ranging data

这是为了将RSSI的水位更改为1米。在某些文档中,它称为TX功率电平,但这不是我想要的。

1 个答案:

答案 0 :(得分:0)

不幸的是,我认为无法更改ESP32上的发射机广告功能。

esp_ble_adv_params_t结构用于设置广告参数。尽管它可以让您配置广告间隔和调整频道,但没有记录的方法可以改变传输强度。

在此处查看详细信息:

https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/bluetooth/esp_gap_ble.html

您是正确的,某些平台确实允许这样做。它在Nordic NRF蓝牙芯片组上很常见,并且受Android和Linux BlueZ平台允许用于支持的芯片组。但是iOS和Mac也不允许这样做。