自制圆形LCD时钟教程
速览
本文介绍了如何制作一个圆形LCD时钟,包括硬件选材、电路连接和编程步骤。该项目适合电子爱好者学习嵌入式开发与显示驱动。不涉及人工智能或算法内容。
AI 深度解读
背景
在智能家居和DIY电子制作领域,将废弃或闲置的硬件改造为实用装饰品一直是个热门话题。作者在自家厨房中,唯一能显示时间的设备是烤箱,这让他感到不便。于是,他利用一块圆形LCD屏幕和树莓派(Raspberry Pi)构建了一款个性化壁钟,不仅可以显示任意表盘,还能通过编程实现交互功能。这篇教程来源于作者的个人博客,并在Hacker News上分享,展示了如何从硬件选择、系统安装、组装到远程控制及表盘定制全流程。
核心内容
硬件需求
- Waveshare 7寸圆形LCD屏幕:分辨率1080×1080像素,直径约18厘米,支持多点触控,对比度和亮度良好。作者曾考虑更大尺寸,但因价格过高而放弃。
- 树莓派(Raspberry Pi 3-5):作为迷你计算机驱动时钟。Pi 3B+足以渲染简单动画;Pi Zero 2因512MB RAM不足无法运行现代浏览器;Pi 4被认为是性能与价格的平衡点。
- microSD卡(至少16GB):用于存储操作系统。
- microSD读卡器:用于烧录系统镜像。
- 高质量的USB-C电源:普通手机充电器可能导致电压不足,使CPU降频。可使用
vcgencmd get_throttled命令检查电压状态,官方树莓派电源可解决问题。 - 白色USB-A转USB-C线:连接树莓派与屏幕,传输电源和触摸信号,也可通过软件调节亮度(见下文)。白色线缆配合白墙使黑色屏幕更突出。
- 白色HDMI转micro HDMI线:从二手平台(Ebay)找到可拆卸HDMI插头后部体积的线缆,使屏幕更贴近墙壁。
- USB鼠标:用于初始设置。
操作系统
使用树莓派官方操作系统(Raspberry Pi OS),借助Raspberry Pi Imager工具烧录到SD卡。
组装
屏幕附带螺丝和连接器可将树莓派固定在屏幕背面,但总厚度约4厘米。作者改为将树莓派放在架子上,通过USB-C和HDMI线连接屏幕。注意:连接时使用标有“Touch”的USB端口(该端口同时供电),标有“Power”的端口可不用。
远程控制
启动系统后,在Preferences → Control Centre → Interfaces → VNC中启用内置VNC服务器,然后使用TigerVNC等客户端连接。作者编写了一个Bash脚本clock(同时Pi的主机名设为clock)来快速打开VNC连接:
#!/usr/bin/env bash
set -eu -o pipefail
export VNC_USERNAME=<username>
export VNC_PASSWORD=<password>
vncviewer clock.local
触摸手势
- 如果多点触控在树莓派3上异常(例如手指选择文本而非滚动页面),需进入Preferences → Control Centre → Screen,右键点击屏幕,检查触摸输入是否配置为多点触控(而非模拟鼠标)。
- 屏幕本身没有“返回”或“菜单”按钮,推荐在Firefox中使用Touchscreen Swipe Navigation扩展:左右滑动可前进/后退历史记录,下拉刷新。
- 屏幕背面的“Touch”按钮可将触摸输入旋转90度,可能需要按多次才能正确对齐。
亮度控制
- 屏幕背面的“ON/OFF”按钮长按可循环切换5种亮度模式。在厨房中最暗模式通常足够。
- 夜间调暗需求:
- 树莓派3:可使用
gammastep(redshift的Wayland分支)实现软件调光,命令示例:gammastep -b 1:0.3 -l <纬度>:<经度>,夜间亮度降为30%,白天100%。注意这是软件层面的调光,背光不变。 - 树莓派4/5:固件不支持
gammastep。作者向Waveshare技术支持求助,对方提供了一个Python脚本,直接与屏幕的USB接口通信,将亮度设置为0-100之间的数值。作者对脚本进行了优化,并添加了根据时间自动调光功能,代码已公开。
- 树莓派3:可使用
表盘定制
最简单的方式是在树莓派上打开浏览器并全屏显示。作者自己构建了多个表盘,汇总在clocks.blinry.org页面,该页面也是“主屏幕”——点击表盘即可激活,使用前述滑动手势返回。
瑞士铁路时钟
实现了瑞士铁路钟的分钟停顿效果(感谢@Fluyar提示)。另有一个由Draemmli实现的版本,指针动画非常流畅。
极简时间刻度
受Jürgen的博客启发,作者实现了自己的版本:显示所有12小时标记,但放大视图,单个指针即可提供很高精度,每两个“刻度”之间间隔10分钟。
卡通风格
灵感来源于作者喜欢的一款智能手表表盘。Modak字体承担了不少视觉效果。
方块风格
基于Alina为Pebble设备设计的Squared 4.0,但完全重写。代码包含多种过渡类型,甚至有一个显示秒数的模式。
关键要点
- 硬件选择:Waveshare 7寸圆形LCD与树莓派3-5的组合,兼顾成本、显示效果与性能;官方电源可避免电压不足;白色线缆提升美观。
- 系统与组装:使用Raspberry Pi OS,通过VNC远程控制,无需额外键鼠;树莓派与屏幕分离放置(使用线缆连接)可减小整体厚度。
- 亮度调节:树莓派3可用
gammastep软件调光;树莓派4/5需直接通过USB控制屏幕,Waveshare提供的Python脚本可实现自动调光。 - 触摸交互:正确配置多点触控模式;利用浏览器手势扩展实现返回/刷新;屏幕背面按钮可调整触摸方向。
- 表盘定制:基于Web技术(浏览器全屏)显示任意表盘;作者已公开多种风格(瑞士铁路、极简、卡通、方块等),可从
clocks.blinry.org访问。 - 开源与可扩展:作者优化并公开了自动调光脚本,并鼓励用户自行编码表盘。
意义与影响
该项目展示了如何利用现成的开源硬件和软件,将一块商用圆形LCD屏幕改造成功能丰富、可高度定制的桌面/厨房时钟。相比市售的智能时钟,其优势在于:
- 完全自定义:用户可编写或下载任何表盘样式,甚至集成天气、日历等信息。
- 交互性:多点触控支持手势导航,可通过浏览器扩展实现类似手机的操作。
- 低成本:总成本远低于同等尺寸的商用圆形触摸屏时钟,且可复用已有树莓派硬件。
- 教育价值:整个过程涉及硬件选型、操作系统配置、远程连接、Python脚本编写、Web前端开发等,是学习嵌入式Linux和DIY电子制作的绝佳案例。
此外,作者解决了多个工程细节(如电压问题、固件兼容性、USB直接控制亮度)并分享了代码,降低了其他爱好者的复现门槛。该项目也体现了“废物利用”的极客精神——用烤箱作为时间显示来源的痛点催生了这一创意,并最终产出了实用且美观的解决方案。
