乐鑫技术交流
直播中

王秀兰

8年用户 1471经验值
私信 关注
[问答]

可以在运行ESP的从机上获得RSSI值吗?

我正在使用带有两个 ESP8266 的 ESP Now。一个是主人,一个是奴隶。从机等待来自主机的传输,并在收到时调用回调。有什么方法可以指示来自主机的传输信号强度(可能是 RSSI)?由于主从之间的连接非常短暂(可能每 10 分钟 20 毫秒,我知道我在等待回调时不能使用 WiFi.RSSI(),对吗?我正在使用 esp_now_register_recv_cb(
)

回帖(1)

张亮

2023-9-19 14:32:17
函数来注册回调函数,该函数只会在接收到数据包时调用。在回调函数中,您可以使用 esp_now_peer_info_t 结构来获取 RSSI 值。下面是一个简单的例子:

```c
void myCallback(const uint8_t *mac_addr, const uint8_t *data, int data_len) {
  esp_now_peer_info_t peerInfo;
  if (esp_now_get_peer_info(mac_addr, &peerInfo) == ESP_OK) {
    int rssi = peerInfo.rssi;
    Serial.println("Received data with RSSI: " + String(rssi));
  }
}

void setup() {
  // Register callback function
  esp_now_register_recv_cb(myCallback);
}
```

使用上述代码,您可以在从机上获取 RSSI 值并进行处理。请注意,每次接收到数据包时都会调用回调函数,因此如果您只需要获取最后一次传输的 RSSI 值,则需要在回调函数中保存最新值。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分