ESP32开发日志

本文最后更新于 2024年7月14日 下午

2024年6月14日 ESP8266无法连接ESP32S3的wifi

问题描述

如附件所示图片,我在esp32s3使用espidf烧写了在esp-idf/examples/wifi/getting_started/softAP这个例程序,esp8266使用AT指令,经过多次尝试无法在esp8266上连接esp32s3的wifi,并且monitor没有任何信息输出

尝试

我作出了以下尝试

  1. 切换esp32s3开发版,我在不同的两块esp32s3开发板上进行过尝试,没有解决
  2. 切换esp8266模块没有解决
  3. 切换了wifi的ssid和密码没有解决
  4. 更改了esp32s3的信道没有解决
  5. 使用手机连接esp32s3的热点,可以正常连接,并且monitor可以显示连接信息
  6. esp8266可以连接我路由器的wifi热点,正常连
  7. 切换到esp32c3的开发板依旧无法连接,现在开始怀疑是否是esp8266的问题
  8. 修改了加密协议如下图,没有解决

烧录正点原子的程序可以正常连接

震惊,这说明硬件是没有问题的,那就是软件初始化部分出现了一些问题

我将正点原子的wifi初始化程序替换掉官方的初始化程序,也能正常连接,这进一步排除掉硬件的问题
我详细的对比了他们之间的程序,基本上来说都是一样的,但是有一些小的细节问题,可能就是这些细节导致了esp8266无法正常连接

找到问题

如上图所展示,这个问题出现的原因主要是在这两个wifi加密方式的原因,只要当.authmode = WIFI_AUTH_WPA2_PSK,这个加密方式存在时,esp8266可以连接
,但是如果只有.sae_pwe_h2e = WPA3_SAE_PWE_BOTH,时,不可以连接,

1
2
.authmode = WIFI_AUTH_WPA2_PSK,
.sae_pwe_h2e = WPA3_SAE_PWE_BOTH,

这时候再看原来的程序中是这么进行加密方式的设置的

1
2
3
4
5
6
7
8
9
#ifdef CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT //通过判断这个宏定义来进行wifi加密方式的设置,默认是定义的,值为1

.sae_pwe_h2e = WPA3_SAE_PWE_BOTH, //默认进行这个设置
#else /* CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT */
.authmode = WIFI_AUTH_WPA3_PSK, //需要这个设置3
#endif
.pmf_cfg = {
.required = true,
},

解决方法

ESP8266的AT固件不支持WPA3加密方式,只支持WPA2的加密认证,这个PWE是WPA3的一个参数,如果有.sae_pwe_h2e = WPA3_SAE_PWE_BOTH,就
应该默认使用了WPA3,所以ESP8266就无法连接了。

为了更好的适应性,应该配置ESP32的wifi加密模式更加推荐为WAP2和WPA3的混合模式

我需要详细的了解wifi加密方式和espidf的配置,详见esp-idf中wifi配置 {wifi加密方式}


ESP32开发日志
http://shishengmi.com/2024/06/14/2024/06/ESP32开发日志/
作者
shishengmi
发布于
2024年6月14日
许可协议