有些家庭的日程安排很复杂:孩子们有学校和课后活动,您有想要记住的重要事件,每个人都有多个约会等等。虽然您可以使用手机和应用程序跟踪所有事情,但在家中使用大型低功耗显示器来显示您家庭的日历不是更好吗?认识一下 E Ink 日历!

(Javier Pena,CC BY-SA 4.0)
硬件
日历最初是一个节日项目,所以我尝试尽可能多地重复使用。这包括一块闲置太久的 Raspberry Pi 2。我没有 E Ink 显示器,所以我不得不购买它。幸运的是,我找到了一家供应商,为其 Raspberry Pi-ready 屏幕提供了 开源驱动程序和示例,该屏幕使用一些 GPIO 端口连接。
我的家人也想在不同的日历之间切换,这需要某种形式的输入。我没有添加 USB 键盘,而是选择了一个更简单的解决方案,并购买了一个 1x4 矩阵键盘,类似于 这篇文章 中描述的那种。这使我可以将键盘连接到 Raspberry Pi 中的一些 GPIO 端口。
最后,我需要一个相框来容纳整个装置。背面看起来有点乱,但它完成了工作。

(Javier Pena,CC BY-SA 4.0)
软件
我从一个 类似的项目 中获得灵感,并开始为我的项目编写 Python 代码。我需要从两个领域获取数据
- 天气数据,我从 OpenWeather API 获取
- 日历数据;我决定使用 CalDav 标准,这让我可以连接到在我家服务器上运行的日历
由于我不得不等待一些零件到货,我对输入和显示使用了模块化方法,以便我可以在没有硬件的情况下调试大部分代码。日历应用程序支持驱动程序,我编写了一个 Pygame 驱动程序,以便在台式 PC 上运行它。
编写代码最好的部分是能够重用现有的开源项目,因此访问不同的 API 非常容易。我可以专注于用户界面——拥有每个人的每周日历和每个人的每日日历,允许使用键盘选择日历——并且我有时间添加一些额外的润色,例如特殊日子的自定义屏幕保护程序。

(Javier Pena,CC BY-SA 4.0)
最后的集成步骤是确保我的日历应用程序在启动时运行并且能够抵抗错误。我使用了基本的 Raspberry Pi OS 镜像,并将应用程序作为 systemd 服务安装,以便它能够在故障和系统重启后幸存下来。
完成所有工作后,我将代码上传到 GitHub。因此,如果您想创建一个类似的日历,请随时查看并重用它!
结果
日历已成为我们厨房中的日常用品。它可以帮助我们记住日常活动,甚至我们的孩子也用它来在上学前查看他们的日程安排。
就我个人而言,这个项目帮助我体会到了开放的力量。如果没有开源驱动程序和库以及开放 API,我们仍然会用纸和笔来组织我们的日程安排。疯狂,不是吗?
评论已关闭。