ESP32调用WiFi.begin后ESP-NOW失效,能否同时使用二者?
ESP32同时使用WiFi与ESP-NOW的解决方案
可以同时使用WiFi与ESP-NOW,你的问题源于WiFi连接后的配置冲突,以下是具体修复步骤:
- 调整初始化顺序:先执行
WiFi.begin(ssid,password),等待WiFi连接成功(通过WiFi.status() == WL_CONNECTED判断)后,再初始化ESP-NOW。ESP-NOW支持WiFi Station模式,无需切换到其他模式。 - 统一WiFi信道:ESP-NOW与WiFi共享同一信道,必须保证发送端和接收端处于同一信道。
- 发送端连接WiFi后,通过
int channel = WiFi.channel();获取当前信道。 - 接收端即使不需要连网,也要设置为WiFi STA模式,并切换到对应信道:
WiFi.mode(WIFI_STA); WiFi.disconnect(); // 无需实际连网 WiFi.setChannel(channel); // channel为发送端获取的信道值
- 发送端连接WiFi后,通过
- 校验配对MAC地址:确认接收端ESP32的MAC地址已正确添加到发送端的ESP-NOW配对列表中,MAC地址格式要准确(无多余字符、大小写一致)。
- 检查ESP-NOW回调与初始化:确保发送端注册了正确的发送状态回调函数,便于排查传输失败原因:
初始化ESP-NOW时,绑定该回调函数:void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) { Serial.print("发送状态:"); Serial.println(status == ESP_NOW_SEND_SUCCESS ? "成功" : "失败"); }esp_now_register_send_cb(OnDataSent); - 保证供电稳定:WiFi与ESP-NOW同时工作会增加功耗,建议使用5V/2A的电源适配器为ESP32供电,避免因供电不足导致通信异常。
在你的RFID门禁场景中,第一块ESP32作为WiFi Station联网查询UID合法性,同时作为ESP-NOW发送端;第二块ESP32保持WiFi STA模式(无需连网)并匹配信道,作为ESP-NOW接收端,即可实现两种功能同时运行。
内容的提问来源于stack exchange,提问作者Emily Li
相关产品推荐
相关产品推荐

