构建一款小巧的电子纸桌面伴侣
我拖延,而有时这也没关系。
与其再开发一个生产力设备,我决定打造“借口猫”——一款小巧的电子纸桌面伴侣,能根据猫咪表情的变化和特殊模式生成借口。所有内容均本地存储,无需Wi-Fi、API或云服务即可运行。
这个初版也是我的学习项目。在ChatGPT的帮助下,我开发并优化了Arduino代码,并对现有外壳设计进行了一些小调整,以适配硬件。
借口猫的功能:
借口猫有三种主要页面状态:
- 启动页,等待用户按下按钮;
- 正常页面,显示随机选择的借口及对应的猫咪表情;
- 五种特殊页面,在这些页面中,猫咪会暂时停止生成借口,转而执行其他操作。
按下KEY2键,即可生成新的借口并更换猫咪的表情。特殊模式以单色位图头文件形式存储,显示猫咪在睡觉、追逐球、寻找食物、发出嘶嘶声或进入Cheems模式。
如果设备静置60秒以上,将返回启动页面。
硬件与软件
硬件
•Seeed Studio XIAO电子纸显示屏EE05
•4.26英寸单色电子纸显示屏,分辨率为800 × 480
•USB-C数据线
•3D打印外壳
•安装了Arduino IDE的电脑
EE05由XIAO ESP32-S3 Plus供电,并配备三个可编程用户按钮。此版本通过USB-C供电,而内置的JST连接器可在后续版本中预留空间,用于添加3.7V锂电池。
软件
•Arduino IDE
•Seeed Studio 维基中的官方 EE05 指南
•Excuse Cat 源代码
所有项目文件均可在 GitHub 仓库中获取。
1:连接硬件
首先,我使用 FPC 数据线将 4.26 英寸的电子纸显示屏连接到 EE05。然后通过 USB-C 将板子连接到电脑,用于编程和供电。
2:运行第一个显示测试
在开始开发 Excuse Cat 接口之前,我按照官方的 EE05 Arduino 指南,先进行一个简单的“Hello World”测试。
这一步帮助我完成了 ESP32 板子包的设置、安装所需的电子纸库、选择正确的 driver.h 文件,并确认了板子能够与显示屏正常通信。
上传示例代码后,文本成功显示在电子纸上,这证明了 Arduino 环境、串口、FPC 连接以及显示屏驱动都已正确工作。
在确认硬件和 Arduino 环境无误后,我便可以着手构建 Excuse Cat 的界面及交互逻辑。
3:设计交互逻辑并编写代码
当显示测试成功后,我开始为 Excuse Cat 设计交互逻辑。我仍在学习编程,因此借助ChatGPT编写了Arduino代码。我描述了想要实现的行为,将每个版本在实际硬件上进行测试,然后当结果与预期交互不一致时,就调整代码。
该程序仅使用KEY2作为输入,并跟踪多个页面状态和计时器:
•在启动页面时,首次按下按钮会打开正常借口页面。
•在正常模式下,每次按下按钮都会从本地存储的列表中选择一个借口,并更新猫咪的表情。
•在相同十秒内连续多次按下按钮,会增加快速按压计数器。
•前四次快速按压会正常生成借口。
•从第五次快速按压开始,程序进入五种特殊猫咪模式之一。
•如果没有再次按下按钮连续十秒,快速按压计数器将被重置。
•没有发生任何交互连续六十秒后,设备将返回到启动页面。
这些特殊模式以单色位图头文件形式存储,显示猫咪在睡觉、追逐球、寻找食物、发出嘶声,或变成Cheems模式。
借口列表、交互逻辑和位图资源均直接存储在Arduino项目中,使设备完全离线运行。
收集借口
我希望这些借口听起来像是真正的创作者可能会说的,而不是泛泛而谈的占位文本。
我在 r/maker 社区发帖,邀请大家分享他们放弃项目时最有趣的理由。我挑选并改编了一些自己最喜欢的回复,再结合了关于天气、调试、动力不足、零食以及日常制作人常见问题的其他借口。
例如:
“松鼠!”
“昨天就完成了。”
“世界还没准备好接受我的天才之作。”
“我觉得我的项目还需要多花点时间胡思乱想。”
“现在是打扫房间的时候。”
4:上传并测试项目到 Arduino IDE
当交互逻辑正常运行后,我将项目文件整理成一个单一的 Arduino 代码文件夹,并准备好了上传代码。
Arduino 代码文件夹中包含主程序、显示配置,以及用于特殊猫咪页面的位图文件:
所有这些文件都应保留在同一个代码文件夹中。
在 Arduino IDE 中,我选择了正确的 ESP32-S3 板和串口,编译了项目,并将其上传到了 EE05。上传草图后,我在设备上测试了完整的交互功能,包括页面切换、随机借口选择、猫表情变化、特殊模式触发以及60秒倒计时返回功能。
我还根据这些测试结果,调整了按钮去抖时间、文字位置和位图的位置。
5:修改3D打印外壳
软件运行正常后,我开始着手制作外壳。
该外壳基于bOoStEr在MakerWorld上分享的“E Ink(电子纸)数字板外壳”。我保留了大部分原始设计,并对本次制作进行了少量修改。
我裁剪了原设计前部开口的一部分,并调整了模型位置,以确保USB-C接口和KEY2键均可使用。保持USB-C接口外露尤为重要,因为此版本首次通过USB供电,而非电池供电。
6:组装设备
最终组装相对简单。
我将电子纸显示屏和EE05电路板放入改装后的外壳内,将屏幕与前部开口对齐,并确认USB-C接口和KEY2键仍可操作。
组装仅需少量螺丝和双面胶即可完成。螺丝将外壳固定在一起,而胶带则防止内部组件移动。
关闭外壳后,我连接了USB-C数据线,并再次测试设备,以确保外壳不会遮挡按钮或对显示屏施加压力。
如何使用Excuse Cat
1. 通过USB-C连接设备,然后等待启动页面。
2. 按 KEY2 键生成借口并改变猫咪的表情。
3. 继续按 KEY2 以生成更多借口。
4. 在十秒内反复按压 KEY2,即可进入特殊模式。
5. 请将设备静置60秒,然后返回启动页面。
结论
Excuse Cat 还是一个规模较小、尚不完善的初版。其借口库有限,交互和界面还有很大的发展空间。
然而,作为我从最初构想到完成一个实际物理设备的首个项目,对我来说,完成它比追求每个细节的完美更为重要。
在开发过程中,我逐渐意识到,对我而言,拖延并不总是可以通过其他生产力工具解决的问题。有时我只是不想去做某项任务;有时我会感到疲惫、卡住,或对自己要求过高。
本文编译自hackster.io





