ESP32-C3 AI Clock 成果展示

成果展示:240×240 屏幕实时显示 BTC/USD K 线,行情由电脑端桥接程序提供。

这块小屏最初跑的是 ESP8266 固件。换成 ESP32-C3 之后,Wi‑Fi 能连上,桥接程序也能收到状态,屏幕却一片黑。后来从侧面能看到背光一闪一闪,才确定主控并没有死机,问题集中在显示初始化和烧录流程。

现在固件、Mac / Windows 桥接程序和网页烧录器都放在 esp32ai 仓库里。已经有同款 ESP32-C3 小电视的话,可以直接在下面烧录,不需要安装 esptool,也不用先打开另一个网页。

用 Web Serial 直接烧录

ESP32-C3 · v0.4.6-c3.11 USB 连接后,点一次就开始
当前浏览器不支持 Web Serial,请改用桌面版 Chrome 或 Edge。 浏览器阻止了串口访问,请确认正在通过 HTTPS 打开本站。

浏览器要求:桌面版 Chrome / Edge。请勿使用 Safari。

  1. 退出正在占用串口的桥接 App,再连接 USB-C 数据线
  2. 点击上方“用 Web Serial 烧录”按钮,在浏览器弹窗中选择 /dev/cu.usbmodem... 对应的设备。
  3. 确认固件版本为 0.4.6-c3.11,然后开始安装。
  4. 日常升级不要勾选“抹除”,这样会保留 Wi‑Fi 凭据和 LittleFS 里的桌宠、亮度配置。
  5. 只有首次安装、Wi‑Fi 配置损坏或确实需要清空 LittleFS 时才选择“抹除”。

Web Serial 只能在 HTTPS 或 localhost 页面中使用。本站已经通过 HTTPS 提供烧录器,不需要再启动本地服务器。

为什么网页烧录后总要重新配 Wi‑Fi

第一版 Web Flasher 把 bootloader、分区表、boot_app0 和应用合成一个从 0x0 开始的文件。ESP32-C3 的 NVS 位于 0x90000xE000,这里保存 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 字体。

固件和源码

Troubleshooting:屏幕与烧录故障排查

烧录器提示 Failed to initialize

先确认桥接 App 和串口监视器已经退出。仍然无法初始化时,按住板子的 BOOT,点按一次 RESET,松开 BOOT,再点击上方烧录按钮。这个操作只会让芯片进入下载模式,不会把设备刷成砖。

先把屏幕接线读对

这块板的屏幕是 1.54 英寸、240×240 的 ST7789 SPI 屏。原理图上的网络名和 ESP32-C3 的 GPIO 编号容易看混,最后确认的配置是:

屏幕信号ESP32-C3
SCLKGPIO3
SDA / MOSIGPIO5
MISOGPIO5(只作 SPI 初始化占位)
DCGPIO2
RESETGPIO6
背光 BLGPIO1,低电平点亮
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 和原理图逐项对上。