ESP32 ESP-NOW单向通信无法添加Peer求助
排查ESP32 ESP-NOW无法添加Peer的问题
核对Peer的MAC地址准确性
接收端的MAC地址必须完全正确,格式为XX:XX:XX:XX:XX:XX,大小写和字符不能出错。可在接收端运行以下代码获取精确MAC:#include <WiFi.h> void setup(){ Serial.begin(115200); Serial.println(WiFi.macAddress()); } void loop(){}确保两端WiFi信道一致
ESP-NOW要求发送端与接收端处于同一WiFi信道,建议手动指定相同信道,比如在两端代码中添加:WiFi.mode(WIFI_STA); WiFi.begin(); WiFi.setChannel(6); // 两端统一使用同一信道,比如6、11等验证ESP-NOW初始化状态
在发送端代码中添加初始化结果打印,确认ESP-NOW是否正常启动:if (esp_now_init() != ESP_OK) { Serial.println("ESP-NOW初始化失败"); return; }检查添加Peer的代码逻辑
确认添加Peer的结构体参数配置正确,示例代码如下:esp_now_peer_info_t peerInfo; uint8_t receiverMac[] = {0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX}; // 替换为接收端MAC memcpy(peerInfo.peer_addr, receiverMac, 6); peerInfo.channel = 0; // 0表示自动匹配信道,或手动指定与接收端一致的信道 peerInfo.encrypt = false; // 未加密通信模式 if (esp_now_add_peer(&peerInfo) != ESP_OK){ Serial.println("添加Peer失败"); return; }硬件与环境排查
- 两个ESP32之间避免信号遮挡,控制通信距离;
- 更换ESP32模块排除硬件故障;
- 使用稳定版本的ESP32板包,避免测试版兼容性问题。
若上述排查均无效,请附上发送端与接收端的完整代码,以便进一步定位问题。
内容的提问来源于stack exchange,提问作者kurek
相关产品推荐
相关产品推荐

