在 MacBook 上连接 Wemos D1 R2 Arduino 并尝试上传代码时不断出现错误。
错误内容如下所示。
A fatal esptool-py error occurred: Failed to connect to ESP8266: Timed out waiting for packet headerUser
查看终端时,不断显示之前上传的代码输出。

可能由于某些问题,我写的代码无法上传到 Arduino。
多次询问 ChatGPT 也无法得出准确的原因,经过搜索和再次询问,终于找到了问题所在。
1. 是 CH340 芯片驱动程序的问题?
根据搜索得出的多数问题解决方案是安装 CH340 芯片驱动程序。
从找到的官方网站信息如下。

文章称,MacBook 从 Mojave 版本开始无需另行安装芯片驱动程序。
由于苹果提供了自带驱动程序,安装其他驱动可能导致冲突问题。
经过搜索,最终确定了问题所在。
2. 错误的原因
错误的原因在于 USB 集线器。
由于 MacBook 的 USB 端口不足或没有 A 类型 USB 端口,使用了集线器。
我也是通过如下方式使用 USB 集线器连接 Arduino。

这样可能导致 发送到 Arduino 的闪存信号时序微妙变化,板子无法自动进入闪存模式。
对此问题的 GitHub 上也有故障排除内容。
这种问题在从 USB-C 类型转为 USB-A 类型连接时尤为明显。

3. 解决方法
如果使用 USB 端口连接 Arduino,则只能强制 Arduino 进入闪存模式。
首先连接板子的 GPIO0(D3) 引脚和接地(GND) 引脚。
然后按下板子的重置按钮。

这样板子会进入闪存模式。
在进入闪存模式之前不要拔掉引脚。
然后尝试从 Arduino 上传文件....

上传成功。
上传完成后即可拔掉引脚。
4. 体会
昨天尝试使用 Arduino 时因为这个问题浪费了总共 5 小时。
不过通过这样的摸索和思考,学到的东西能维持很长时间。
下次如果周围有人遇到同样问题,应该可以帮忙解决。
昨晚开始苦恼,现在心情舒畅多了。
解决问题后的喜悦总是令人愉悦的。

댓글을 불러오는 중...