精准文字时钟:分钟级文字显示时间
组件与物料
| 组件 | 数量 | 备注 |
|---|---|---|
| Arduino Nano R3 | 1 | 完整清单见项目主页 |
项目简介
本项目制作一款 500×500 mm、重 5.5 kg 的壁挂式文字时钟,具备分钟级文字显示时间、线性秒显示、温湿度显示、数字/模拟时钟模式,内置生命游戏、Simon、俄罗斯方块三款游戏。支持主从时钟同步、PIR/多普勒雷达人体感应熄屏、触控操作、自动亮度调节。

文字时钟分类与本机定位
- 简单型:5 分钟分辨率(如“5 PAST”、“10 PAST”),约 20 个 LED 块,结构最简单。
- 中等型:11×10 LED 矩阵 + 4 个角落 LED,仍为 5 分钟分辨率,常用四角 LED 指示过分钟数。
- 高复杂度型(本机):16×16 = 256 个 LED,实现 1 分钟分辨率 文字显示,支持上午/下午/夜间、同步状态、PIR 状态、线性秒显示等扩展信息。
核心改进点
- 无定制 PCB,全部采用现成模块 + 3 块小型实验板供电。
- 双层 14 mm MDF 板结构,后板四边内缩 10 mm,视觉厚度仅 14 mm(实为 34 mm),容纳手工布线矩阵。
- MAX7219 驱动板改用现成模块,避免贴片焊接,维护友好。
- TTP223 触控模块替代原版 IQS127D,四角安装于芝加哥螺栓上,螺栓同时固定玻璃、充当触控电极。
- DS3231 RTC 模块移除充电电阻 R5,改用不可充电纽扣电池。
- 4 mm 浮法玻璃 + 抛光边缘,芝加哥螺栓固定可拆卸。
- 双层防尘密封(后板贴壁密封 + 玻璃后密封)。
- 软件基于 Wouter Devinck 硬件与“加泰罗尼亚”Pijuana 固件,移植为英文显示并按个人语言习惯微调措辞(如 “A QUARTER”、“MINUTE” 单复数、正午/午夜专用文案、去掉 O'CLOCK 撇号等)。
- 新增线性秒显示(底行)、同步脉冲指示、PIR 开关提示、自动亮度校准电位器外露调节孔。
机箱设计
前板 503×503 mm,四边各留 1.5 mm 包边保护玻璃;后板 483×483 mm,黑色边缘配合内缩设计营造“超薄”视觉效果。两块金属挂画钩嵌入后板,螺丝张紧压实防尘密封条。
触控布局
四角 TTP223 模块,功能随模式切换:
文字时钟模式下——左上/右上:调节参数;左下:PIR 开;右下:PIR 关。
数字时钟设置模式下——左上/右上:时/分增减;左下:进入/切换/确认;右下:秒归零。
显示模式
- 文字时钟(分钟级文字 + 底行线性秒)
- 数字时钟
- 温湿度(DHT22)
- 模拟时钟(指针动画 + 底行线性秒)
- 启动动画(版本号、作者、时钟名称)
- 游戏:康威生命游戏、Simon 记忆、俄罗斯方块(按键逻辑仍在优化)
原型验证流程
- 用 MAX7219 自带 8×8 点阵模块验证代码与布线,需按引脚映射表改接 6 根信号线(LED A-F 对应点阵引脚 16,15,3,4,10,11)。
- 打印 62×62 mm 微缩文字版贴于点阵上,快速迭代文字排版。
- 编写测试程序逐点亮灯验证 4 块 MAX7219 模块改接正确性。
文字-时间映射表
在 time.h 中定义每个单词对应的 LED 坐标(行、起始列、长度),在 time.cpp 中按规则组合单词。例如午夜 00:00 显示 “THE TIME IS TWELVE OCLOCK AT NIGHT”,正午显示 “TWELVE OCLOCK IN THE AFTERNOON”,午夜后始终显示 “IN THE MORNING”。
供电系统
- 统一 12 V 母线 → MP1584 降压模块(实验板)输出 5 V,再经两块配电实验板分发。
- MAX7219 模块级联供电,两端并联供电减压降。
- 实测电流:最低亮度 30 mA,最高 250 mA,建议 ≥500 mA 电源。
- LDR 光敏电阻检测环境光,配合软件滞回与外露电位器校准最大亮度对应光照阈值(默认 lightReading=600 对应 bright=15)。
模块互连拓扑
Arduino Nano 直连首块 MAX7219(CLK/DIN/LOAD),其余三块级联。4 块 MAX7219 分别驱动一块 8×8=64 LED 矩阵,共 256 颗 LED。布线最繁重部分为 MAX7219 至 LED 矩阵的 16 根总线(8 阳极 + 8 阴极)×4 模块。
LED 矩阵手工布线工艺
- 前板钻 256 个 6 mm LED 安装孔 + 18 mm 沉孔(反射增亮)。
- 每模块 8 根阴极母线(10 mm 高,由 15 mm 圆钉支撑)+ 8 根阳极母线(2 mm 高,悬空于 LED 阳极上)。
- LED 引脚经折弯治具成型(每颗 4 个弯折,共 1024 次),按颜色编码表对应焊接至 MAX7219 引脚。
- MAX7219 模块底部焊接 90° 排针引出 16 根信号线,电流设定电阻 R1 更换为 22 kΩ(匹配 3.2-3.8 V/20 mA 白色平顶 LED)。
人体感应方案
- PIR 方案:外置改装开关盒(含电源开关 + PIR 镜头),穿墙安装,5 V 供电,信号引入时钟。可通过触控开关启用/禁用,启用时无人则熄屏。
- 多普勒雷达方案(可选):模块内置机箱,微波穿透玻璃/PVC 贴纸检测,每 15 分钟扫描一次,无人则熄屏至下一次检测到人。无需在玻璃开孔。
自动亮度校准
上电后通过 Mini USB 串口监视 lightReading 与 bright,在最强环境光下调节电位器使 lightReading=600 对应 bright=15(最大 PWM)。
时间设置与同步
数字时钟模式下触控左下进入设置,依次调整时/分,右下键秒归零。若接入主时钟 30 秒同步脉冲,时钟在“20 秒过”或“20 秒差”时自动校准至 30 秒;否则依靠 DS3231 温补晶振自由运行。
固件结构
Brett_wordclock_v4_3.ino主程序- 模块:
brightness、character、credits、display、life、serial、simon、temphum、tetris、time、timeanalog、touchbuttons - 第三方库:Chronodot (DS3231)、DHT (DHT22)、LedControl (MAX7219)、stc (Tetris)、pitches.h
修改文字内容编辑 time.h,修改点亮规则编辑 time.cpp。作者建议每次微调保存新版本号,便于回滚。
资源链接
- 固件下载:
Brett_wordclock_v4_5.zip - 原版硬件库:wouterdevinck/wordclock
- 加泰罗尼亚固件:svcabre/wordclock
- 本项目 GitHub:brettoliver/wordclock(含原理图、代码、Inkscape 贴纸源文件)
制造工艺
- 布谷鸟钟:历史、工艺与现代演变
- 树莓派单 GPIO 引脚读取模拟传感器:RC 充电法实战
- 复古 Numitron 管时钟:Arduino Nano 驱动,低温可靠省电
- DIY Arduino单词时钟 – 极简优雅的实时文字显示
- 自制 Arduino 伊斯兰祷告时间实时时钟
- Arduino Due 驱动 3.2″ TFT 实现温度监测与实时时钟
- 意大利语单词时钟:Arduino Nano + NeoPixel 144 灯珠 + LCD + RTC 打造
- 用 Arduino UNO 制作柏林时钟 – DIY LED 矩阵时钟
- 用 DS1302 RTC 和 Arduino UNO 制作可靠闹钟
- 硅胶3D打印:增材制造的下一个前沿
- 消除生产瓶颈:制造业效率跃升的五大实战利器
- Python timeit():精准测量代码执行时间与实战示例