嵌入式固件 / 实体交互
翻转番茄钟 · StickS3 固件
把设备的横竖方向,直接变成 5 分钟与 25 分钟的实体选择
- 项目
- 嵌入式固件 / 实体交互
- 角色
- 交互设计、固件实现、真机调试
- 状态
- 运行中

项目概览
我为 M5Stack StickS3 写了一版已经在真机运行的番茄钟固件:竖放自动开始 5 分钟,横放自动开始 25 分钟,四个方向都能正向阅读;暂停、继续与重开收进正面按键。
为什么做
常见番茄钟需要在屏幕里选择专注或休息,再确认时长。对于只有一块小屏和少量按键的设备,这些步骤会让一个本来很轻的动作变得像在设置工具。
我想把选择时间变成一个看得见、摸得着的动作:竖放表示短时段,横放表示长时段。设备的姿态就是当前设置,不需要额外菜单,也更接近无屏实体番茄钟拿起、翻转、开始的使用感。
核心交互
用方向选择时长
固件读取 StickS3 的 BMI270 六轴 IMU,并在方向稳定约半秒后确认姿态:
| 设备姿态 | 倒计时 | 适合的场景 |
|---|---|---|
| 正竖或倒竖 | 5 分钟 | 短休息、快速处理一件小事 |
| 左横或右横 | 25 分钟 | 一轮标准专注时间 |
四个方向都有对应的画面旋转,数字始终朝向使用者。正竖与倒竖共享 5 分钟,左右横放共享 25 分钟;180° 翻转只校正显示方向,不会重置正在进行的倒计时。
放下就开始
进入番茄钟后不再设置单独的“开始”动作。设备检测到稳定方向便自动开始;竖横切换时,开始对应时长的新一轮计时。这样,翻转设备本身就同时完成了“选时长”和“开始”两个动作。
把按键留给中途控制
倒计时运行时,正面按键短按暂停,再按继续;一轮结束后短按可重开,长按则回到固件主页。侧键在番茄钟页不承担操作,避免在小设备上同时记忆两套控制。
为小屏幕收敛信息
StickS3 使用 135 × 240 的 1.14 英寸屏幕。最初页面带有标题栏和较长的中文提示,实际显示后占用了过多空间,部分点阵字也挤在一起。
真机调试中,我去掉了番茄钟页的 Header,把倒计时数字放大并居中;状态文字缩成“正面键暂停 / 继续 / 重开”和“长按返回”,中文菜单则改用更清晰的 14px 常规点阵字。页面不再解释它是番茄钟,只保留当前需要看到的时间与动作。
当前进展
第一版已完成编译、写入和真机校准,目前在 StickS3 上运行。已经验证四个放置方向、5/25 分钟自动切换、画面旋转、暂停继续、重新计时和返回主页。
固件主页还为六爻、流麻和电脑连接后的额度显示预留了入口,目前番茄钟是其中已经可用的完整功能。后续继续扩展时,仍会保留这一页的离线运行与单动作交互,不让其他模块增加它的使用负担。
硬件平台为 M5Stack StickS3(K150),使用 ESP32-S3、BMI270 IMU 与 135 × 240 LCD。具体规格可查看 M5Stack 官方硬件资料。