QuoteImage 用手机把普通图片处理成黑白电子纸画面,并通过 Bluetooth Low Energy(BLE)发送到 MindReset Quote/0。项目包含 Android/iOS Flutter 应用、 ESP32-C3 ESP-IDF/FreeRTOS 固件、UC8251D 显示驱动和一套带认证、校验及进度反馈的 BLE 应用协议。
| 文档 | 适合谁 | 内容 |
|---|---|---|
| 用户指南 | QuoteImage 使用者 | 首次配对、图片处理、发送、设备管理、故障排查 |
| 开发者指南 | 开发、测试和维护人员 | 项目结构、架构、环境、开发流程、测试、部署和发布 |
| BLE 协议规范 | 客户端/固件开发者 | GATT、配对认证、帧传输和状态码的字节级约定 |
| 移动端说明 | Flutter 开发者 | 移动端常用命令与实现摘要 |
| 固件说明 | 固件开发者 | ESP-IDF 构建、引脚、部署、迁移和配对恢复 |
手机图片
-> 解码与 EXIF 方向校正
-> 旋转、缩放/裁切、灰度与抖动
-> 152 x 296、1 bit、5624 字节帧
-> BLE 认证、分块传输与 CRC32 校验
-> Quote/0 刷新电子纸并进入深度睡眠
图片处理全部在手机后台 isolate 中完成,微控制器只接收最终帧。预览图和发送帧 由同一个像素循环生成,因此应用中的黑白预览就是设备将收到的内容。
开发环境需要 Flutter 3.41 或更高版本、Python 3、CMake/Ninja,以及已经安装并 激活的 ESP-IDF 5.5.x。连接真机后运行:
make bootstrap
make check
make mobile-run向 Quote/0 构建并部署 ESP-IDF 固件:
make device-install PORT=/dev/cu.usbmodemXXXX从旧 MicroPython 固件首次迁移需改用 make device-migrate PORT=...,该操作会整片
擦除并要求重新配对;后续 device-install 会保留 NVS 中的名称和凭证。完整环境准备、
真机运行和恢复流程见开发者指南。
- 主控:ESP32-C3
- 屏幕:UC8251D,152 x 296 单色电子纸
- 帧格式:逐行、MSB-first,
0为黑、1为白,共 5624 字节 - 连接:BLE,自定义 GATT 服务,标准 Battery Service
- 完整性:协议版本、帧长度、连续偏移和 CRC32 均在刷新前校验
- 持久化:设备只持久化名称和一个授权凭证;传输中的图片仅保存在 RAM
make check该命令会运行 C 宿主机测试、ESP-IDF 完整构建、legacy MicroPython 测试,以及 Flutter 静态分析和测试。它不覆盖真实射频环境、硬件引脚、屏幕 BUSY 时序和电子纸 波形,这些仍需在 Quote/0 真机上验证。