Arduino DCF77アナライザークロック MK2:60LEDリングでタイムコードを可視化する高精度電波時計
必要な部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino Nano R3(またはUno) | 2 | Superfilter側は水晶発振子搭載必須(セラミック発振子不可) |
詳細な部品リストは作者サイトを参照。
プロジェクト概要
直径12インチ(305mm)の大型ダイヤルに、60個のLEDを2重リング(内側・外側)で配置し、DCF77電波のタイムコードをリアルタイム可視化するアナライザークロックです。

主な機能
- 内側リング(60LED):受信中のタイムコードをビット単位でリアルタイム表示(次分のデータ)
- 外側リング(60LED):前分がエラーなく受信できていれば現在時刻を表示
- ステータスLED 24個:デコーダー状態、同期状況、エラー情報を表示
- 大型7セグメント 8桁 ×2:デコード済み時刻・日付を表示
- 小型7セグメント 8桁 ×2:パルス幅、ビット情報、エラー詳細を表示
- デュアルCPU構成:Atmega328×2(アナライザー用+Udo Klein Superfilter用)
- Superfilter機能:高度な信号処理、水晶発振子の自動チューニング、合成信号出力
- 音声機能:JQ6500サウンドモジュール×2で秒針音・正時チャイム・四半期チャイムを再生

オリジナル(Erik de Ruiter版)からの主な変更点
- Arduino Uno互換基板を2枚自作(Uno+Mega構成から変更)
- 安価な中国製7セグメント/ドットマトリクスモジュールを採用(コード修正済み)
- 音声モジュールをAdafruit製からJQ6500×2に変更(ライブラリ修正必要)
- デコーダーLED用に第3のドットマトリクスモジュールを追加
- SuperfilterにステータスLED追加、PWM輝度制御をアナライザー側CPUで実施
- 全LEDを3mm径統一、輝度マッチング済み
- 単一LDRで4系統(リング/大型7セグ/小型7セグ/Superfilter)の輝度を独立制御
- 温度・週番号表示を省略、コード簡略化
- Superfilterモードを「合成/非合成」のみに簡略化
- DCF77音声を「0=100ms、1=500ms」ビープ音に調整し識別容易化
操作スイッチ(7つ)
ヒンジ付きドア内側(レトロ版)または側面カットアウト(モダン版)に配置:
- 秒針音 ON/OFF
- 秒針音量 UP/DOWN(非ロック)
- チャイムモード:OFF / 24時間 / タイマー(05:15〜23:00)
- チャイム音量 UP/DOWN(押すたびにテスト音再生)
- DCF77ビープ音 ON/OFF
- リセット:Superfilter / アナライザー(非ロック)
- DCF77信号源:OFF / アナライザー直結 / Superfilter経由

ハードウェア構成のポイント
回路図
メイン基板、ドットマトリクスモジュール、7セグメントモジュールの3枚構成。フルサイズ回路図(4000×4000)も公開。


Atmega328ピン配置
カスタムベロボードに2チップ実装。Superfilter側は水晶発振子必須(Unoへの水晶追加方法参照)。



ベロボードレイアウト
メイン基板(Arduino×2、JQ6500×2、第3マトリクス)と小型ブレークアウト基板をベロボードで自作。モジュール間はヘッダーコネクタで接続、スイッチパネルのみ直結でメンテナンス性確保。

市販モジュールの活用と改造
- LM2596レギュレーター:5V出力に調整(事前調整必須)
- DS3231 RTC:温度補償付き、充電池を非充電式に改造(R5抵抗除去)
- MAX7219ドットマトリクス:LEDマトリクスを取り外し、90°ピンヘッダーを半田付けして外部LED接続用に改造
- MAX7219 7セグメント(0.56"/0.39"):10μFコンデンサ追加、保護ダイオードをジャンパー線に置換(デイジーチェーン時の電圧降下対策)
- JQ6500:チャイム用(シリアル制御)と秒針用(ハード制御)で2台使用
- DCF77受信モジュール:PV Electronics製(入手困難、代替品検討要)
配線ジグの自作
約400本の配線を効率よく行うため、ダイヤル図面を印刷した紙を木板に貼り、3mmドリルでLED位置に穴を開けたジグを作成。LEDを仮固定して配線し、完成後にダイヤルへ移植。

LEDリング配線手法
8個ずつのブロックでアノード共通、カソードを次ブロックへリレー配線。MAX7219の1セグメント=8LEDに対応。内側/外側リングとも同手法。使用LEDはVishay TLH44シリーズ(高効率、3mm拡散型、輝度ランク統一)。

Superfilterの動作原理
Udo Klein氏のSuperfilterは、受信信号をサンプリングして位相を学習し、ノイズ混入時や信号欠落時でも正しいタイムコードを合成出力します。水晶発振子の周波数ドリフトも自動補正し、電波不在時でも長期間精度を維持。


ダイヤル製作
アルミ板1.5mm厚から切り出し、約700個の穴あけ・切削を手作業で実施。CAD(TurboCAD)で設計し、インクジェット透明ウォータースライドデカール紙に印刷して転写。アクリルマットバーニッシュで保護。

ケース
- レトロ版:古い掛け時計ケースをレストア(オーク材周り、黒塗り背面箱)
- モダン版:大型フォトフレーム+自作背面箱、スピーカー・スイッチを側面に配置

コード
- JQ6500ライブラリ(要修正)
- アナライザー側コード:
DCF_77_ANALYZER_CLOCK_Mk2_43.zip - Superfilter側コード:
Superfilter07DCF77AnalyzerMK2.zip
JQ6500ライブラリのJQ6500_Serial.cpp 263行目付近に if(!responseBuffer && !bufferLength) return; を追加し、チャイム再生時のブロッキング待ちを回避。
CADデータ・音声ファイル
- ダイヤル設計図:
turbocad_drawings_TESmpq119g.zip - チャイム音源:
bell_wYLvJG1pUl.zip - 秒針音源:
tick_tock_FLj9XHTJoB.zip
回路図
- メイン基板
- MAX7219ドットマトリクス→LED配線
- MAX7219 7セグメントモジュール配線
製造プロセス
- 鳩時計:歴史、職人技、現代への進化
- Arduino POVクロック:残像効果で浮かび上がるLED時計を自作する
- Arduinoで作るレトロNumitron管時計:シンプル、信頼性高く、省エネ
- Adafruit 60 LED NeoPixelリングとArduinoで作るスタイリッシュな壁掛け時計
- DIY Arduinoワードクロック – 文字で時刻を表示する洗練されたリアルタイムクロック
- Arduino で作るイスラム教礼拝時刻付きリアルタイムクロック
- Bluetooth操作のArduinoスパイボットを自作する
- 12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう
- Arduino Dueと3.2インチTFTで作る温度監視付きリアルタイムクロック
- Arduino Pro MiniとDS1302 RTCで作る高精度7セグメント時計
- DS1302 RTCとArduino UNOで作る信頼性の高い目覚まし時計