记一次硬件 Debug:ESP32 连接 Wi-Fi 报 Auth Expired 错误

起因

前段时间准备把家里的空气质量检测节点更新一下,从原来的万用板升级为 PCB,并且将主控 MCU 从 ESP8266 升级为 ESP32,这样可以单个节点支持更多传感器,同时把固件从 ESPEasy 换成 ESPHome。

经过

在完成 PCB 打样测试后,就上淘宝采购了一批 ESP32 开发板,其中一批是 USB Type-C 接口的 NodeMCU-32S,最开始测试的时候只买了一块,使用下来并没有什么问题,但是在一次接错 VCC 和 GND 导致温度模式损坏之后,再次使用这块 ESP32 开发板时,发现它无法连接到之前已经配置好的 Wi-Fi 上。

这时还以为是由于之前温度模块损坏关联导致的,因此重新购买了几块同样型号的 ESP32 开发板,但是在完成固件烧录,完成固件配置之后,第二次运行时,同样发现了无法连接 Wi-Fi 的错误,日志中显示连接失败的原因为 Auth Expired:

[23:50:02][I][wifi:248]: WiFi Connecting to 'HOUSE_IOT'...
[23:50:03][W][wifi_esp32:495]: Event: Disconnected ssid='HOUSE_IOT' bssid=xx:xx:xx:xx:xx:xx reason='Auth Expired'
[23:50:03][W][wifi:536]: Error while connecting to network.

这就很奇怪了,毕竟是新买的模块,并且也没有再次经历接错线的问题,不应该碰到同样的问题,于是上网搜索了一下,发现 ESPHome 的 Issues 里面已经有人提到了:ESP32 cannot connect to WiFi reason="Auth Expired" #1371

但是在 ESPHome 的 Issue 中,只是说可以修改 Unifi AP 的设置来解决,这就比较奇怪,毕竟另外买的使用 Micro-USB 接口的 ESP32 开发板并没有这个问题。在这个 Issue 的最后,有人提到了乐鑫官方 Arduino 框架仓库也有人提了同样的问题,并且很好地解决了。

在乐鑫仓库的这个 Issue 中(Wifi not connected to the esp32 module. #2144),我看到另外一个可能的原因导致 ESP32 无法连接 Wi-Fi,就是 ESP32 的 GPIO 可能使用了 5V 电平而不是官方要求的 3.3V。

结果

于是拿出万用表测试一看,果然,新买的这个开发板,USB 转串口芯片使用了 CH340C,然后 CH340C 的供电是直接连接到了 USB 的 5V 供电引脚,由于CH340C 本身是兼容 5V 以及 3.3V 供电的,所以直接使用 5V 给它供电并没有什么问题,但是由于 CH340C 会根据供电的电压决定输出 DTR、RTS 等信号的电平,所以会导致在启动完成后,连接到 GPIO 上高电平也是 5V,从而导致 ESP32 连接 Wi-Fi 失败。

知道原因就好办了,将 PCB 上连接 CH340C 和 USB 5V 的线切断,防止 CH340C 继续从 USB 5V 获得供电:

esp32-fix-wifi-back

再从 LDO 3.3V 输出飞一根线到 CH340C 的 VCC:

esp32-fix-wifi-front

重新上电测试,完美解决。

参考资料

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>