微雪 ESP32-S3-Touch-AMOLED-1.75C 圆屏桌面伴侣的固件。设备经 USB 串口(USB-Serial-JTAG)接收 PC 客户端推送的监控数据,在 1.75" 466×466 圆形 AMOLED 上显示。
配套 Windows 客户端:PC-monitor-plugin(.NET 8 WinForms,另一个仓库)。
- 待机页:大时钟(SNTP 校时)、天气(Open-Meteo,图标 + 温度)、电池弧 + 充电图标、重力感应倾斜动效、页面指示点
- GAME 页:FPS、帧生成时间、CPU/GPU 温度·频率·功耗·电压、内存占用
- WEB 页:浏览器累计使用时长(电脑开机周期内累计、持久化)
- MUSIC 页:媒体信息 + 播放/暂停/上一曲/下一曲(按键回传 PC 执行)
- 电源管理:
- 深睡眠省电:息屏 + 电池供电 10s 后入睡(<1mA),点屏/按 BOOT 唤醒
- 低电量保护:电量 ≤15% 且未充电时自动关机(AXP2101)
- 插 USB 时永不深睡(链路保持 + 充电)
- 联网:WiFi 凭据、天气地区(城市)均由 PC 客户端串口下发,存 NVS,重启保留
| 器件 | 说明 |
|---|---|
| MCU | ESP32-S3R8(16MB QSPI Flash XM25QH128D + 8MB Octal PSRAM) |
| 屏幕 | 1.75" 466×466 QSPI AMOLED(CO5300),CST9217 触摸 |
| 电源 | AXP2101(电池充电/电量计/多轨输出) |
| 传感器 | QMI8658 IMU(倾斜动效) |
| 音频 | ES8311 + ES7210 |
需要 ESP-IDF v6.x(组件要求 idf >= 5.5):
idf.py set-target esp32s3
idf.py build
idf.py -p COMx flash monitor- LVGL 9.4 / CO5300 / CST9217 / QMI8658 等组件由
main/idf_component.yml自动下载(版本锁定在dependencies.lock) components/XPowersLib为内置组件(AXP2101 驱动,随仓库提交)- 关键配置(Octal PSRAM、16MB QIO Flash、USB-Serial-JTAG 控制台、TLS/WiFi 缓冲走 PSRAM)见
sdkconfig.defaults - 烧录使用 Type-C 直连(USB-Serial-JTAG),无需外部串口
115200 波特率,JSON 行协议(一行一条,\n 结尾)。
PC → 设备:
| 消息 | 说明 |
|---|---|
{"t":"g","fps":..,"ft":..,"cpu":..,...} |
游戏数据(温度/频率/功耗/电压/内存) |
{"t":"m","title":..,"artist":..,"pl":0/1,...} |
音乐状态 |
{"t":"w","up":s,...} |
浏览器累计使用时长 |
{"t":"wifi","ssid":..,"pass":..} |
下发 WiFi 凭据(存 NVS) |
{"t":"wx","lat":..,"lon":..} |
下发天气地区(存 NVS,立即重取) |
{"t":"getwifi"} |
查询联网状态/天气地区/设备时间 |
设备 → PC:
| 消息 | 说明 |
|---|---|
{"t":"ctrl","a":"play/pause/prev/next"} |
媒体控制(设备按键触发) |
{"t":"wx","ok":true} |
天气地区下发确认 |
main/ 固件源码
app_main.c 入口 + 深睡/低电关机策略
wifi_app.c WiFi STA + SNTP + Open-Meteo 天气
pc_link.c 串口 JSON 协议
ui_*.c LVGL 界面(待机/游戏/网页/音乐)
bsp_*.c 板级驱动(屏幕/电源/IMU)
fonts/ LVGL 字体(时钟/天气图标等)
components/XPowersLib AXP2101 驱动(内置)
tools/ 串口调试脚本(Python)
docs/ 原理图