DCF77 无线电波钟分析仪 v2.0:Arduino Mega/UNO 双板协作
项目简介
这是一款功能极其完善的 DCF77 (德国长波授时信号 77.5 kHz) 接收、解码、分析与显示系统。采用 **双 Arduino 协作架构**:Uno 运行 Udo Klein 的 **DCF77 Superfilter** 固件,作为“信号净化黑盒”将嘈杂天线信号重构为干净的方波;Mega 运行主控固件,完成解码、校验、RTC 同步、多路 LED 环显示、温度采集、省电管理等功能。项目包含完整 PCB 设计、外壳加工、声音文件、详尽注释代码,堪称 DIY 无线电波钟教科书级范例。
系统架构
┌─────────────┐ 天线信号 ┌──────────────────┐ 干净 DCF 方波 ┌────────────────────┐
│ DCF77 天线 │ ────────────────▶ │ Arduino UNO │ ────────────────────▶ │ Arduino MEGA 2560 │
│ (有源/无源) │ │ Superfilter v3 │ (A5→D12 滤波输出) │ 主控固件 v2.1 │
└─────────────┘ └──────────────────┘ └────────────────────┘
│
┌────────────────────────────────────────────────────────────────┘
▼
┌────────────────────────┐
│ 外设矩阵 │
│ - 7×MAX7219 驱动 │
│ · 内/外环 LED×59 │
│ · 7段数码管×多块 │
│ - DS1307 RTC (I2C) │
│ - DS18B20 温度 (1-Wire)│
│ - PIR 人体红外 │
│ - 蜂鸣器/音频板 │
│ - 多路拨码/按键 │
└────────────────────────┘
核心功能特性
- 三级奇偶校验:分钟/小时/日期各自校验位,全通过才更新 RTC 与显示
- 双环 LED 可视化:内环显示实时接收比特,外环锁定上一帧有效数据
- 误差统计:周期误差 (PT)、脉宽误差 (PW)、缓冲区溢出 (EoB) 实时计数
- 省电模式:PIR 检测无人 + 夜间时段 (默认 22:00–09:00) 自动熄屏,时钟后台运行
- 整点报时**:Adafruit Sound Board 播放钟声/报时音,夜间自动静音
- 温度记录**:DS18B20 0.1℃ 分辨率,记录最高/最低,支持午夜/按键复位
- PCB 级硬件**:专用 MAX7219 显示板、Superfilter 扩展板、前面板 DiBond 印刷
关键硬件接口 (Mega)
| 功能 | 引脚 | 备注 |
|---|---|---|
| DCF 输入 (来自 Superfilter) | D2 (INT0) | 必须为外部中断引脚 |
| PIR 传感器 | D3 | |
| 蜂鸣器开关 | D4 | |
| 整点报时开关 | D5 | |
| 省电开关 | D6 | |
| 温度传感器 | D8 | 1-Wire |
| 温度复位键 | D9 | |
| MAX7219 CS/CLK/DIN | D10/D11/D12 | 级联 7 片 |
| LED 阵列 (D22–D50) | 29 路 | 星期/夏令时/闰年/错误/同步状态等 |
| 蜂鸣器 (DCF 响声) | A7 | PWM 音频 |
| 音量控制 | A6 | Sound Board 音量 |
| 报时触发 | A5 | 低电平触发 |
| I2C (RTC) | SDA/SCL (20/21) | DS1307 |