DIY Arduinoワードクロック – 文字で時刻を表示する洗練されたリアルタイムクロック
概要
「IT IS TEN FIFTEEN」のように、言葉で時刻を伝えるワードクロックをArduinoで自作します。DS1307 RTC(リアルタイムクロック)とシフトレジスタ(74HC595)+ダーリントンアレイ(ULN2803A)でLEDマトリクスを駆動し、バックアップ電池で停電時も時刻をキープ。スイッチレスでシンプル、長期運用に耐える設計です。
必要なパーツ
| パーツ名 | 数量 | 備考 |
|---|---|---|
| Arduino UNO(またはATmega328Pスタンドアロン) | 1 | あらゆるArduino互換ボードで可 |
| DS1307 RTCモジュール | 1 | CR2032バックアップ電池付き推奨 |
| 74HC595 シフトレジスタ | 3 | 24ビット出力拡張(22ワード制御用) |
| ULN2803A ダーリントンアレイ | 3 | LEDシンクドライバ(各8ch) |
| LEDストリップ(白色) | 約2m | 3チップごとに切断可能なタイプ |
| ICソケット 16pin×3、18pin×3 | 各1セット | IC保護・交換用 |
| 12V ACアダプタまたは電池 | 1 | LED駆動用 |
| ユニバーサル基板、配線、ピンヘッダ等 | 適宜 | |
| マウントボード(厚紙)、アクリル板(乳白半透明) | 各1 | フレーム・拡散板用 |
| 文字ステンシル(印刷またはカッティングシート) | 1式 | 「IT IS」「FIVE」「TEN」等の英単語 |
回路構成
要点
- Arduino I/Oはわずか5本:シフトレジスタ用3本(Data/Clock/Latch)、RTC用2本(SDA/SCL)
- 74HC595を3個カスケード接続し、24ビットの並列出力を得る
- ULN2803Aは「ローサイドスイッチ」:LEDのアノード(+)を共通12Vへ、カソード(−)を各ドライバ出力へ接続
- RTCはI2Cアドレス0x68、ライブラリ(
RTClib等)で時刻取得
回路図は添付画像(PNG)を参照。スタンドアロンATmega328P化する場合は、水晶・コンデンサ・リセット回路を追加し、FTDIで書き込み。
フレーム・光学部の製作
- マウントボードを前面パネルサイズにカット
- 単語レイアウトを鉛筆で下書き(一般的なワードクロックは 11×10 または 10×11 マス)
- 1.5cm幅のマウントボードストリップで「仕切り壁」を作り、単語ごとのボックスを形成(光漏れ防止)
- LEDストリップを各ボックスに合わせてカット(3LED単位)、裏面粘着で基板に固定
- 全LEDのアノードを共通配線、カソードを各ワードごとに引き出しドライバへ
- アクリル板に文字ステンシルを貼り、前面パネルとする
- ケース背面に壁掛け用穴を開け、基板・配線を収納して完成
ソフトウェア構成
GitHub(rakshithbk/Word_clock)に公開されているスケッチをベースに、自分の単語レイアウトへマッピングを書き換えます。
主要関数
#defineセクション:シフトレジスタの各ビットに対応する単語名をマクロ定義WriteLEDs():シフトレジスタへ24ビットデータをシフトアウトselfTest():起動時やデバッグ用に全ワードを順番に点滅displayTime():RTCから時刻取得 → 「IT IS」「HALF」「TEN」「FIVE」等、点灯すべきワードのビットマスクを生成 →WriteLEDs()loop():1分ごと(または秒ごと)にdisplayTime()を呼び出し
時刻→ワード変換ロジックの例
// 5分刻みで "FIVE", "TEN", "QUARTER", "TWENTY", "HALF" 等を点灯
// "TO" / "PAST" で前後関係を表現
// 時は "ONE" 〜 "TWELVE" を点灯
// 例: 10:10 → "IT IS TEN PAST TEN"
日本語版にする場合は、ローマ字や漢字・ひらがなレイアウトに合わせてマッピングを再設計してください。
仕上げと動作確認
- 基板・RTC・ドライバをケース内に固定
- LEDボードを仕切り壁に合わせて設置
- アクリル前面パネルを被せ、隙間から光漏れがないか確認
- 電源投入 →
selfTest()で全ワード点灯確認 → 正常なら通常動作へ - 時刻合わせはスケッチ内で一度だけ実行、以降はRTC電池で維持
カスタマイズアイデア
- RGB LEDストリップ(WS2812B等)化で色変化・グラデーション表示
- 光センサー(CdS/フォトトランジスタ)で周囲輝度に応じた自動調光
- Wi-Fiモジュール(ESP8266/ESP32)追加でNTP自動時刻同期
- アクリルをミラーアクリルにして「ミラークロック」風に
- 木製フレーム・レーザーカットアクリルでインテリア性向上
参考ファイル
- スケッチ・ライブラリ:GitHubリポジトリ
- 回路図:添付画像(PNG)
- 基板データ:
F4B9GO9IBYX12RN.zip、FMC93S0ICRXOKWF.zip
製造プロセス
- Arduino POVクロック:残像効果で浮かび上がるLED時計を自作する
- Adafruit 60 LED NeoPixelリングとArduinoで作るスタイリッシュな壁掛け時計
- Arduino で作るイスラム教礼拝時刻付きリアルタイムクロック
- 12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう
- イタリア語ワードクロック自作:Arduino Nano、NeoPixel、LCD、RTCで時刻を文字で表示
- Arduinoでシンプルな障害物センサーを自作 – IR LEDとフォトダイオード入門
- Arduino UNOで作るシンプル電卓 - シリアルモニターで四則演算
- SerialDebug:Arduinoデバッグを高度なシリアルログで強化するライブラリ
- シンプルなArduinoストップウォッチ:ボタンで動作するクロノメーターの作り方
- Arduino手洗いタイマー:COVID-19対策のシンプルDIYツール
- DS1302 RTCとArduino UNOで作る信頼性の高い目覚まし時計