Arduino DCF77 分析时钟 MK2:60 LED 环精准显示时间编码
项目概述
这是一款基于德国 DCF77 长波授时信号的高精度模拟/数字混合时钟。直径 12 英寸(305mm)表盘上双层 60 LED 环实时显示 DCF77 时间编码:内环显示下一分钟的实时接收码流,外环显示上一分钟校验无误后的时间。配合 4 块 8 位七段数码管显示解码后的日期时间、脉冲宽度、奇偶校验等诊断信息,双 ATmega328(双 Uno 架构)分工协作,集成 Udo Klein 超级滤波器实现信号合成与晶振自校准,支持整点/刻钟报时与秒滴答声。
核心特性
- 双环 60 LED:内环实时码流,外环校验后时间,每 LED 对应 1 秒
- 四块 MAX7219 七段管:2×0.56″ 显示时分秒/日期,2×0.39″ 显示脉冲/误差/奇偶校验
- 双 ATmega328:一块跑 DCF77 解码器,一块跑超级滤波器(需石英晶振,非谐振器)
- 超级滤波器:主动采样预测 DCF77 信号,合成无误差波形,自动校准晶振频率,失信号后仍能维持数天精度
- 声效系统:2×JQ6500 语音模块 + 3W 扬声器,分离控制秒滴答与整点/刻钟报时
- 7 枚拨码开关:控制滴答开关/音量、报时模式(24h/定时/关)、DCF77 声效、复位、信号源切换
- 光敏自动调光:LDR 读取环境光,4 通道 PWM 独立调节 LED 环、大小数码管、滤波器指示灯亮度
- 微波/PIR 人体感应:无人时熄屏省电
- 双表壳设计:复古橡木表壳修复版、现代黑色相框版
硬件架构
主控板 (Veroboard 手工焊接)
- 2 × ATmega328P (Uno 兼容),滤波器那块必须外接 16MHz 石英晶振
- LM2596 降压模块输出 5V (≤450mA 满载,待机 80mA)
- DS3231 RTC (I²C),改装为非充电纽扣电池
- 3 × MAX7219 点阵模块(拆下自带矩阵,接排针引出驱动 120+ 个离散 LED)
- 4 × MAX7219 七段管模块(需加 10μF 电容并短接输入二极管,防止级联压降)
- 2 × JQ6500 串口语音模块 + 3W 8Ω 扬声器
- RCWL-0516 微波雷达 / PIR 红外二选一
- DCF77 接收模块 (PV Electronics 或同类)
表盘制作
- 1.5mm 铝板激光/手工钻孔 ~700 孔 (3mm LED 过盈配合)
- TurboCAD 绘制表盘矢量图,喷墨打印水贴纸转印
- 底漆+哑光白漆+哑光清漆,孔内刷漆增加摩擦力
- 木块做 PCB 安装座,冲击胶粘接铝板背面
关键技术细节
MAX7219 模块级联修正
- 0.39″ 模块:补焊 10μF 电解电容于 IC 电源脚,飞线短接输入 1N4148 二极管
- 0.56″ 模块:同理加 10μF 电容、短接二极管
- 七段管殷红色不一,统一贴 ND0.9 中性密度减光片增强对比度
- 时钟冒号:代码固定第 3/6 位显示 "o",黑胶带遮挡仅露两点
超级滤波器状态指示灯 (10 LED)
Filter On / DCF77 Filtered / DCF77 Signal / Signal Diff / Sync / Locked / Sync Lost <200ms / Sync Lost >200ms / Signal Dirty / Signal Bad
JQ6500 库修正
原库发送命令后阻塞等待响应导致 DCF77 解码丢包。在 JQ6500_Serial.cpp 第 263 行后插入:
if(!responseBuffer && !bufferLength) return; // 无需响应时立即返回
将阻塞从 ~1.1s 降至 ~10ms,保证分钟级解码不漏秒。
代码与资源
- DCF77 解码器固件:
DCF_77_ANALYZER_CLOCK_Mk2_43.zip - 超级滤波器固件:
Superfilter07DCF77AnalyzerMK2.zip - 表盘 CAD 图纸:
turbocad_drawings_TESmpq119g.zip(含 4000×4000 PNG) - 报时音效:
bell_wYLvJG1pUl.zip(1-12 时 + 13-16 刻钟 + 17 测试音) - 滴答音效:
tick_tock_FLj9XHTJoB.zip - JQ6500 英文烧录工具:
JQ6500_English_MusicDownload_V1_2a.zip
完整原理图、Veroboard 布局、接线顺序、表壳修复过程详见项目主页:
https://www.brettoliver.org.uk/DCF77_Analyzer_Clock_Mk2/
制造工艺
- 布谷鸟钟:历史、工艺与现代演变
- Arduino POV 时钟:自制视觉暂留 LED 显示器
- 复古 Numitron 管时钟:Arduino Nano 驱动,低温可靠省电
- 用 Adafruit 60 LED NeoPixel 环形灯和 Arduino 制作时尚挂钟
- DIY Arduino单词时钟 – 极简优雅的实时文字显示
- 自制 Arduino 伊斯兰祷告时间实时时钟
- DIY 蓝牙控制 Arduino 间谍小车
- 自制大尺寸LED主时钟带闹钟功能 — 12米外清晰可见
- Arduino Due 驱动 3.2″ TFT 实现温度监测与实时时钟
- 用 Arduino Pro Mini 与 DS1302 RTC 打造精准七段数码管时钟
- Arduino 8×8 LED 矩阵翻页时钟 - DIY 实时时钟项目
- 用 DS1302 RTC 和 Arduino UNO 制作可靠闹钟