概述
最近有在折腾ESP32-S3来测量脉冲信号,自从知道了ESPHOME,感觉就不想用arduino来写程序了,但在安装好了ESPhome后,往往不能顺利配置WIFI,会出错,如果你不是买的官网的开发板,大概率都会出现这个情况。
我也是搜索了很久,主要看这篇文章 ESP32、ESP32-C3接入ESPHome出现Improv Wi-Fi Serial not detected等问题的解决方法
引发原因
主要原因也就清楚了,因为开发板品牌太多,鱼龙混杂,ESPhome默认的识别型号和你手里的型号不匹配导致的。
但作者算是幸运的,他那个开发板好歹有个官网说明,但实际中,我们在淘宝上买的开发板,老板都懒得搭理你,什么信息都没有,这可怎么办,如何确认手里的开发板应该选择哪个厂家?总不能一个个去试吧。
偶然发现
我也不知道怎么解决时,忽然发现我本地有个ESPhome的文件夹,里面有下面这些文件
时间太久了,我完全没印象,搞不清楚有啥作用,上传代码问了一下AI,才知道,可以编译后烧录到ESP32中,其中要在secrets.yaml中配置WIFI信息。
用法:
🔧 1. 准备工作
你需要:
- 一台电脑(Windows / macOS / Linux)
- 一根 USB 线,能传数据(不是只能充电的)
- 安装好 Python(如果不是用 Docker)
- 安装好
esphome
命令行工具(如果还没安装,可以用下面的命令)
pip install esphome
确认安装成功:
esphome version
能输出版本号就成功了。
🏗 2. 编译固件
在项目目录里运行:
esphome compile esphome-web-de7c4c.yaml
这一步会调用 .esphome
里的 PlatformIO 编译环境,把 .yaml
文件转换为固件(.bin
)。
🔌 3. 连接 ESP32-S3
- 用 USB 线把 ESP32-S3 开发板插到电脑
- 电脑会识别一个串口设备:
- Windows 下通常是
COM3
、COM4
- macOS/Linux 下是
/dev/ttyUSB0
或/dev/ttyACM0
可以先拔掉,再插上,确认新出现的端口号。
🚀 4. 烧录固件
直接运行:
esphome upload esphome-web-de7c4c.yaml
ESPHOME 会自动:
- 找到你的 ESP32-S3 串口
- 调用
esptool.py
擦除 & 烧录 - 烧完后自动复位
如果要手动指定串口:
esphome upload esphome-web-de7c4c.yaml --device COM3
(把 COM3
改成你实际的串口)
📡 5. 后续 OTA 更新
第一次刷写成功后,ESP32-S3 会连上 WiFi(在 secrets.yaml
里配置),之后你可以直接通过无线更新:
esphome upload esphome-web-de7c4c.yaml
它会自动发现局域网的 ESP32-S3,然后用 OTA 刷写。
🧠 注意事项
- 如果烧录失败,可能需要按住开发板上的 BOOT 键,再按一下 RESET,让芯片进入下载模式。
- Windows 用户可能要装 CH340/CP210x 驱动,取决于你的开发板 USB 芯片。
- 如果
esptool.py
是空文件,可以手动安装官方工具:
pip install esptool
然后再试一次。
2️⃣ 继续刷写 ESP32-S3
既然编译已经完成,现在就可以刷写了:
esphome upload esphome-web-de7c4c.yaml
- 第一次最好通过 USB 线连接,确保能成功烧录。
- 烧录完成后,后续就可以用 OTA(无线升级)了。
🛜 1. 确认设备已经联网
- 刷写成功后,ESP32-S3 会自动重启,并尝试连接
secrets.yaml
中配置的 WiFi。 - 你可以通过查看串口日志确认:
esphome logs esphome-web-de7c4c.yaml
如果显示 Connected to WiFi
和 IP address: 192.168.x.x
,说明联网成功。
🌐 2. 打开 ESPHome Dashboard
- 在浏览器里访问你搭建的 ESPHome 服务,比如:
http://<你的NAS或服务器IP>:6052
(如果是 Docker 部署,就是你容器映射的端口)
- 你会看到之前创建的所有设备。
➕ 3. 添加新设备
有两种方法:
🔎 方法 1:自动发现
ESPHome 支持 mDNS(局域网广播),Dashboard 一般会自动发现新设备,显示“新设备可用”。
- 在 Dashboard 右上角,点击 “New Device” 或 “Adopt”。
- 按提示导入配置,它会把你本地的
esphome-web-de7c4c.yaml
同步到 Dashboard 里。
⚠️ 前提:你的 ESPHome 容器和 ESP32-S3 在同一个局域网,且能互相访问。
📄 方法 2:手动添加
如果没有自动发现:
- 在 Dashboard 里点击 “New Device” → “Continue”
- 选择 “ESP32” 作为平台
- 填写一个设备名(可以和本地的 yaml 名称相同)
- 选择“Import existing configuration”,把你本地的
esphome-web-de7c4c.yaml
上传进去 - 保存后,Dashboard 会把配置文件放到服务器的
.esphome
文件夹里 - 点击 Install,选择 OTA 上传,就可以无线更新固件了。
🔧 4. 后续操作
- 以后修改
yaml
配置,可以直接在 Dashboard 编辑,然后点击“Install → OTA” - 如果设备不再出现在 Dashboard,可以手动用 IP 访问它的 Web 界面(固件里自带):
http://<设备IP>
可以看到实时日志、开关状态、控制按钮。
总结
按照上面的操作,竟然跳过了WIFI配置,其实就是本地烧录进去了,成功了。
其中,这里面最关键的信息是:
esp32:
board: esp32-s3-devkitc-1 这个兼容性最好,大多数产品都可以通用
framework:
type: arduino 框架必须是arduino才有可能成功。
如果按照互联网搜索的方法不能解决问题时,可以试试我这个方案。
附件
我的文件夹,可以直接编译烧录