把 ESP8266 天气时钟改成 ESP32-C3:屏幕、Web Serial 和 Wi‑Fi 保留
成果展示:240×240 屏幕实时显示 BTC/USD K 线,行情由电脑端桥接程序提供。
这块小屏最初跑的是 ESP8266 固件。换成 ESP32-C3 之后,Wi‑Fi 能连上,桥接程序也能收到状态,屏幕却一片黑。后来从侧面能看到背光一闪一闪,才确定主控并没有死机,问题集中在显示初始化和烧录流程。
现在固件、Mac / Windows 桥接程序和网页烧录器都放在 esp32ai 仓库里。已经有同款 ESP32-C3 小电视的话,可以直接在下面烧录,不需要安装 esptool,也不用先打开另一个网页。
用 Web Serial 直接烧录
浏览器要求:桌面版 Chrome / Edge。请勿使用 Safari。
- 退出正在占用串口的桥接 App,再连接 USB-C 数据线。
- 点击上方“用 Web Serial 烧录”按钮,在浏览器弹窗中选择
/dev/cu.usbmodem...对应的设备。 - 确认固件版本为
0.4.6-c3.11,然后开始安装。 - 日常升级不要勾选“抹除”,这样会保留 Wi‑Fi 凭据和 LittleFS 里的桌宠、亮度配置。
- 只有首次安装、Wi‑Fi 配置损坏或确实需要清空 LittleFS 时才选择“抹除”。
Web Serial 只能在 HTTPS 或 localhost 页面中使用。本站已经通过 HTTPS 提供烧录器,不需要再启动本地服务器。
为什么网页烧录后总要重新配 Wi‑Fi
第一版 Web Flasher 把 bootloader、分区表、boot_app0 和应用合成一个从 0x0 开始的文件。ESP32-C3 的 NVS 位于 0x9000 到 0xE000,这里保存 Wi‑Fi 凭据;合并文件在这段空洞里填的是 0xFF。浏览器即使没有执行全片擦除,写入这个文件时也会把 NVS 覆盖掉。
现在的 manifest 改成四个独立段:
{
"parts": [
{ "path": "...bootloader...bin", "offset": 0 },
{ "path": "...partitions...bin", "offset": 32768 },
{ "path": "...boot_app0...bin", "offset": 57344 },
{ "path": "...application...bin", "offset": 65536 }
]
}
正常升级不再触碰 NVS,也不会覆盖 LittleFS 里的桌宠和亮度配置。若设备之前已经刷过旧版合并固件,凭据可能已经丢了,需要在这次升级后重新配一次;之后就不必每次重填。
第一次配网现在直接看中文
TFT_eSPI 自带字体没有中文字形,直接 drawString("正在连接 WiFi") 只会留下空白。固件只把首次配网需要的少量汉字做成 16×16 点阵,显示内容包括:
- 正在连接 WiFi
- 手机连热点:
AI-Clock-Setup - 打开
192.168.4.1 - USB 连接电脑
- 无需 WiFi
Wi‑FiManager 的网页配置页也已经使用简体中文。字库只放这块页面需要的字,不会为了一个提示页塞进完整 CJK 字体。
固件和源码
- 源码:github.com/WhiteBalance2800K/esp32ai
- 固件:v0.4.6-c3.11 Release
- 备用独立烧录页:whitebalance2800k.github.io/esp32-flasher
Troubleshooting:屏幕与烧录故障排查
烧录器提示 Failed to initialize
先确认桥接 App 和串口监视器已经退出。仍然无法初始化时,按住板子的 BOOT,点按一次 RESET,松开 BOOT,再点击上方烧录按钮。这个操作只会让芯片进入下载模式,不会把设备刷成砖。
先把屏幕接线读对
这块板的屏幕是 1.54 英寸、240×240 的 ST7789 SPI 屏。原理图上的网络名和 ESP32-C3 的 GPIO 编号容易看混,最后确认的配置是:
| 屏幕信号 | ESP32-C3 |
|---|---|
| SCLK | GPIO3 |
| SDA / MOSI | GPIO5 |
| MISO | GPIO5(只作 SPI 初始化占位) |
| DC | GPIO2 |
| RESET | GPIO6 |
| 背光 BL | GPIO1,低电平点亮 |
| CS | 没有接到主控,固件使用 TFT_CS=-1 |
屏幕是只写设备,所以不要因为日志里出现 MISO 报错就给它硬接一根线。ESP32-C3 版本使用 ST7789_2_DRIVER,并显式调用 SPI.begin(3, 5, 5, -1),这是这块成品板能点亮的组合。
黑屏时,日志正常并不能说明显示正常
最容易误判的一次是:
[wifi] STA IP Address: 192.168.5.20
[web] admin server listening on http://192.168.5.20/
这些日志只能证明 CPU、Wi‑Fi 和 WebServer 在工作,不能证明 TFT 收到了正确的 DC、RESET 和 SPI 时序。屏幕一点光都没有时先检查背光;能看到微弱闪烁时,再检查引脚、驱动变体和初始化顺序。不要一上来改电路,先把固件中的 GPIO 和原理图逐项对上。
