我正在用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功率电平,但这不是我想要的。
答案 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也不允许这样做。