工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

高精度ワードクロック:分単位で時刻を文字表示

必要な部品と用品

部品数量備考
Arduino Nano R31部品の完全なリストはプロジェクトページ参照

プロジェクト概要

分解能で時刻を言葉で表示するArduinoベースのワードクロックです。秒はリニア表示で示します。詳細はプロジェクトサイトをご覧ください。

高精度ワードクロック:分単位で時刻を文字表示

主な機能

ワードクロックの設計レベル比較

ワードクロックには複雑さのレベルがあります:

  1. シンプル(5分刻み): 「5分前」「10分前」などブロック単語で表示。LED約20個で構成可能だが、決まった形式のみ。
  2. 中級(11×10マトリクス+4隅LED): 110個のLEDで数字や簡易画像も表示可能。5分刻みだが隅のLEDで1〜4分を補完。Raspberry Pi制御で多色LED対応例も。
  3. 上級(16×16=256 LEDマトリクス): 本作はこのタイプ。1分単位の言葉表示、「午前」「午後」「夜」なども表現可能。温度を言葉で表示するものも。大量のLEDを活かし多彩な表示モードを実装。配線が複雑だが、PCB実装で薄型化可能。手配線の場合は500mm角が現実的な上限。

本プロジェクトの主な変更点

ケース設計

手配線マトリクス対応で奥行き34mm(背面シール2mm+背面MDF14mm+前面MDF14mm+ガラス4mm)。背面板を黒くし、正面板より10mm小さくすることで、正面から見たときに14mm厚に見える視覚効果を狙っています。

高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示

操作インターフェース

表示パネル四隅にTTP223タッチセンサーモジュールを配置。シカゴファスナーのボルトがタッチパッドを兼ねます。モードによってボタン機能が変わります。

高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示

表示モード:時計・環境

高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示

起動時はバージョン番号、製作者名、クロック名をスクロール表示。

高精度ワードクロック:分単位で時刻を文字表示

表示モード:ゲーム

高精度ワードクロック:分単位で時刻を文字表示

ライフゲーム: コンウェイのライフゲーム。無限グリッド上のセルが生死を繰り返すシミュレーション。

高精度ワードクロック:分単位で時刻を文字表示

サイモン: 記憶力ゲーム。コンピューターが示すシーケンスを真似する。失敗時にスコア表示。

高精度ワードクロック:分単位で時刻を文字表示

テトリス: ソ連生まれのタイルマッチパズル。ボタン操作の改善余地あり。

プロトタイピングとテスト

MAX7219モジュール付属のドットマトリクスLEDでミニチュア試作が可能。配線変更でソフトウェアとマッピングを合わせれば、実物大の1/8サイズでワードレイアウトやコードを検証できます。

高精度ワードクロック:分単位で時刻を文字表示

テスト用スケッチで各LEDを順次点灯し、配線確認が可能。

高精度ワードクロック:分単位で時刻を文字表示

テストスケッチ: MAX7219_LED_Test.zip

時刻→単語マッピング表

高精度ワードクロック:分単位で時刻を文字表示

独自の言い回しに合わせてマッピングを調整可能。エクセルファイルで管理: Word+to+Time+Translations.xlsx

電源設計

共通12V電源からMP1584ベースのベロボードで5V降圧。クロック基板にも独自ヒューズ装備。消費電流は低輝度30mA〜高輝度250mA。最低500mA以上の5V電源推奨。PIR有効時は大幅節電可能。

高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示

モジュール間接続

MAX7219モジュールはデイジーチェーン接続。最初のモジュールのみNano直結。電源は両端から供給し電圧降下を防止。Nano〜最初のMAX7219間は極力短く配線。

高精度ワードクロック:分単位で時刻を文字表示

組み立て手順概要

  1. ビニールステッカー印刷・ガラスカット・MDFカット
  2. 前面板にLED用穴あけ(256箇所:6mm貫通+18mm皿穴)
  3. 塗装(前面白、背面黒)、エッジテープ貼り
  4. 背面板を前面板にネジ止め
  5. 電源ベロボード×3枚製作
  6. MAX7219モジュール4枚を改造(90度ピンヘッダー追加、電流制限抵抗を22kΩに交換)
  7. モジュール類を背面板に取り付け
  8. 前面板に256個LEDをマトリクス配線(カソードバス10mm高、アノードバス2mm高、パネルピンで支持)
  9. 配線完了後、ガラスパネルをシカゴファスナーで固定(タッチセンサー同時取り付け)
  10. 動作テスト・輝度キャリブレーション

所要時間の目安はプロジェクトページの表を参照。プロトタイピング・プログラミングにさらに40時間程度見込み。

ビニールステッカー製作

Inkscapeで設計(Wouter Devinck氏のオリジナルを改変)。反転印刷(文字部分が抜ける)で注文。アプリケーションテープをディフューザーとして残す工夫。貼り付けは石鹸水スプレーで位置合わせしながら。

高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示

ガラス: 4mmフロートガラス500mm角、エッジ研磨、5mm穴4箇所(シカゴファスナー用)。アセトン脱脂後、手袋着用で貼り付け。

高精度ワードクロック:分単位で時刻を文字表示

前面板加工詳細

25mmピッチで256箇所の中心をマーキング、オートセンターポンチで打点、6mmドリルで貫通、20mm皿取りビットで皿穴加工(ジグで深さ統一)。白塗装で反射率確保、外周を黒塗りでガラスのセットバックを隠蔽。四隅に5mm穴でシカゴファスナー通し、裏面でフォアスタナービットでセンサー用リベート加工。

高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示

壁掛け金具

額縁用フックをフレームに埋め込み、2インチ皿ネジで壁固定。防塵シールが圧縮されるテンションで取り付け。

高精度ワードクロック:分単位で時刻を文字表示

タッチセンサー取り付け

TTP223モジュールのセンターパッドに5mm穴を開け、シカゴファスナーボルトを通す。ボルトはプラスチックワッシャーで絶縁。モジュール上のLEDはニッパーで除去し省電力化。

高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示

電子部品・モジュール詳細

LED仕様

高精度ワードクロック:分単位で時刻を文字表示

DHT22 温湿度センサー

左ピン: 3-5V、中央: データ、右: GND。2秒に1回更新。ケース内温度を測らないよう上部と左側ベントをテープで塞ぎ、背面板下部に通気孔を設け外気を導入。

高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示

Arduino Nano ピン配置

主要ピン: D2/D3=外部割り込み、D3/D5/D6/D9/D10/D11=PWM、D10=SS, D11=MOSI, D12=MISO, D13=SCK(SPI)、D13=内蔵LED、A4=SDA, A5=SCL(I2C)、A6/A7=アナログ専用。USB-シリアル変換はFTDI FT232RL。

高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示

TTP223 タッチセンサーモジュール

ガラス取り付けボルトで固定、ボルトがタッチパッド兼用。LEDは除去。四隅に4個使用。

高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示

DS3231 AT24C32 高精度RTCモジュール

付属のリチウムイオン充電池を非充電式コイン電池(CR2032等)に変更するため、基板上の充電抵抗R5を除去。

高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示

MAX7219 ディスプレイモジュール

既製品を購入し、オンボードのLEDマトリクスソケットに90度ピンヘッダーを追加ハンダ付けして外部マトリクス接続用に改造。電流制限抵抗R1をLED仕様に合わせて交換(本プロジェクトでは22kΩで約20mAに設定)。

高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示

LDR(光センサー)

背面板下部に配置。明るさで抵抗値変化(明約500Ω〜暗約10MΩ)。隣に輝度キャリブレーション用トリマー抵抗のアクセス穴。

高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示

防塵シール

高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示

回路図

Nano接続図、4つのMAX7219モジュールとLEDマトリクスの接続図(各マトリクスは前のモジュールから90度回転配置)

高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示

LEDマトリクス配線実装

4つのマトリクス(各64 LED)を背面から配線。カソードバス(垂直/水平)はパネルピンで10mm浮かせ、アノードバス(直交方向)はLEDリード線で2mm浮かせて支持。モジュールごとに回転方向が異なるため、背面から見ると配線マッピングが複雑。カラーコード配線表に従い、50芯0.5mmケーブルで接続。

高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示

LED実装手順

LEDリード線をジグで4か所曲げ(計1024回)、カソードをアノードから90度曲げてマトリクスに挿入。配線表に従いMAX7219モジュールの90度ピンヘッダーへ半田付け。モジュールごと16本の配線。

高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示

MAX7219モジュール改造詳細

既存LEDマトリクスコネクタの下部に90度ピンヘッダー2組(8ピン×2)を半田付け。表面実装部品(R1, C1, C2)と干渉しないようピン長を調整。電流制限抵抗R1を22kΩに交換(LED順方向電圧3.2-3.8V@20mAに対応)。

高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示

自動輝度調整のキャリブレーション

  1. Mini USBポートにPC/スマホを接続、シリアルモニターを開く(例: Slick USB 2 Serial Terminal)
  2. クロック再起動後、シリアル出力に light reading と bright が表示される
  3. 設置場所で周囲光が最大になる状態で、トリマー抵抗(背面板右下のアクセス穴から精密ドライバーで調整)を回し、light reading = 600(またはソフトウェア設定値)、bright = 15 に合わせる
  4. これ以上回しても bright は 15 を超えない。全範囲で暗くしたい場合は light reading を 600 未満に設定
  5. 最大電流はMAX7219のR1で決まるため、LED仕様に合ったR1を選定済みであること
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示

Mini USBポート増設

背面板右側にMini USBメスソケットを切り出し、90度変換ケーブル(25cm)の被覆を剥いて内部配線。プログラミングと輝度調整用。

高精度ワードクロック:分単位で時刻を文字表示

PIRセンサーによる自動消灯(オプション)

ワードクロックメニューでON/OFF切替可能。ON時は人感検知で点灯、無検知で設定時間後に消灯。表示に"PIR ON"/"PIR OFF"を5秒表示。PIRモジュールは壁埋め込みスイッチボックスに収納(ガラス越しでは動作しないため)。電源スイッチと共用。

高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示

ドップラーレーダー制御オプション

PIRの代わりにドップラーレーダーモジュール(マイクロ波センサー)をケース内部に内蔵可能。ガラス・プラスチックを透過検知可能(検知距離約5m)。15分ごとに検知チェックし、無検知なら消灯。PIR同様メニューでON/OFF。

高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示
高精度ワードクロック:分単位で時刻を文字表示

時刻設定手順

デジタル時計モードで左下タッチ長押しで設定モード入り。時刻点滅中に:右上=インクリメント、左上=デクリメント、左下1回目=時設定、2回目=分設定、3回目=確定終了、右下=秒を00リセット。

高精度ワードクロック:分単位で時刻を文字表示

マスタークロック同期

30秒ごとの同期パルス入力がある場合、設定モード以外で自動同期(0秒パルスは無視、20秒過ぎと20秒前のみ補正)。同期時は"SYNC"表示。内蔵RTC(温度補償水晶)単体でも高精度。

高精度ワードクロック:分単位で時刻を文字表示

ソフトウェア構成とカスタマイズ

メインスケッチ Brett_wordclock_v4_3.ino 含むモジュール群とサードパーティライブラリで構成。GitHubで公開: https://github.com/brettoliver/wordclock

主要モジュール

サードパーティライブラリ

コード変更のポイント

単語定義: time.h でLED座標を配列で定義。例: const byte w_the[3] PROGMEM = { 0, 0, 3 }; は左上(0,0)から横3つ点灯で "THE" 表示。

高精度ワードクロック:分単位で時刻を文字表示

点灯ルール: time.cpp で時刻条件ごとに単語呼び出しを記述。例: 0時0分なら "THE TIME IS TWELVE OCLOCK AT NIGHT" となるようルール記述。

高精度ワードクロック:分単位で時刻を文字表示

アナログ時計の針動作改良コード(srdevil氏提供)もコメント欄に掲載。短針が15分過ぎで次の数字方向へ動くよう修正。

コードダウンロード

参考リポジトリ

カスタムパーツ・エンクロージャー

ビニールステッカー設計ファイル: brett11_print_ready_6bbpMTDyFa.svg (Inkscape形式、自由に変更可能)

回路図

画像は元記事のSchematicsセクションを参照。

製造プロセス

  1. 鳩時計:歴史、職人技、現代への進化
  2. Raspberry Piで単一GPIOピンを使ってアナログセンサーを測定
  3. Arduinoで作るレトロNumitron管時計:シンプル、信頼性高く、省エネ
  4. DIY Arduinoワードクロック – 文字で時刻を表示する洗練されたリアルタイムクロック
  5. Arduino で作るイスラム教礼拝時刻付きリアルタイムクロック
  6. Arduino Dueと3.2インチTFTで作る温度監視付きリアルタイムクロック
  7. イタリア語ワードクロック自作:Arduino Nano、NeoPixel、LCD、RTCで時刻を文字で表示
  8. DS1302 RTCとArduino UNOで作る信頼性の高い目覚まし時計
  9. シリコーン3Dプリント:アディティブ・マニュファクチャリングの次なるフロンティア
  10. 生産ボトルネック解消:製造効率を劇的に高める5つの実証済みツール
  11. Python timeit():実行時間測定の実例付きガイド