以前にマイクロ QR コードで時刻を表示する時計を作ったのですが(記事書いてなかった)、スマホ標準の QR コード読み取り機能ではマイクロ QR コードに対応していなくて、展示会でお客さんに読み取って貰えないという事象がしばしば発生しました。
そこで今回は、スマホ標準で読み取れるように通常サイズの QR コードで表示する時計を作ることにしました。
目次
マトリクスLEDとLEDドライバTM1640
メインとなる部品は秋月電子で購入した 2色ドットマトリクスLED(赤緑) 8×8ドット LTP-12188M-08 です。秋葉原店 2 階で 15 個 300 円で売っていました。
また LED ドライバとして TM1640 を使用します。これはカソードコモンの 16 桁 7 セグ LED 用なのですが、配線を考えるとマトリクス LED でも使用することができます。
1 つの LED マトリクスにつき TM1640 を 1 つ使用します。 LED マトリクスはアノードが 8 row, カソードが 8 col x 2 色となっているので、 7 セグドライバのセグメントを row 、グリッド(コモン)を col に接続します。

これを 16 セット用意して、 Raspberry Pi Pico W (以下 Pico W )で制御します。クロックは全体で共通で、データ線はパラレルに制御します。
リアルタイムクロックIC DS1302
DS1302 はバックアップ電源端子付きのリアルタイムクロック IC で、切り替え可能な抵抗とダイオードを内蔵していています。そのため電池によるバックアップの他、コンデンサを用いてトリクルチャージによるバックアップにも対応しています。
今回はバックアップに静電容量 1 F の電気二重層コンデンサを用いることにしました。
DS1302 とその周辺回路の回路図を以下に示します。外付け部品はコンデンサと 32.768 kHz の水晶発振子だけです。マイコンとの通信は 3 本の線を用いる独自のシリアル通信です。
注意点として、 Vcc2 がメイン電源で、 Vcc1 がバックアップ電源となっています。逆にしないように気を付けましょう。(一敗)

ロータリーエンコーダ
モード選択などの操作用にクリック付きのロータリーエンコーダを使用することにしました。
回路図を以下に示します。 A 端子と B 端子が回転の情報を得る端子です。プルアップが必要ですが、マイコンの内蔵プルアップを使用するので回路図には登場していません。
S1 端子と S2 端子は通常のプッシュスイッチと同様に扱えます。こちらもマイコンの内蔵プルアップを使用して動作させます。

全体の回路図
全体の回路図を以下に示します。 Pico W に今まで紹介した回路を接続した形になっています。
LED マトリクスと TM1640 の組は KiCad の階層シート機能を利用して、同一の回路を 16 セット並べています。データ線はバラバラですが、クロックは一つにまとまっています。
電源は Pico W の USB に 5V を供給して、 Pico W のピンから 3.3V が基板側に供給される形になります。

基板設計
KiCad で基板設計を行いました。 KiCad で 3D 表示した画像を以下に並べます。
基板の寸法は 178 mm x 148 mm です。
表面:

裏面:

LED マトリクスの寸法はデータシートでは 1 辺 31.9 mm となっていますが、並べたときに入らないと困るので僅かに余裕を持たせて 32.0 mm 間隔で並べました。
TM1640 は対応する LED マトリクスの裏面に配置しています。
16 セットの LED マトリクスと TM1640 の組については、コピペ & スクリプトによるリファレンス書き換えで同じパターンを並べています。この方法の詳細が気になる方は以下の記事を参照してください。
PCBWayで基板製造
設計した基板を製造してもらうのですが、今回はPCBWayから基板製造のオファーを頂きました。
PCBWay の紹介リンクを貼っておきます。このリンクから新規ユーザー登録すると登録者と紹介者(私)にそれぞれクーポンがもらえるようになっています。
製造用のデータは KiCad で使える JLCPCB 用のプラグインである Fabrication Toolkit で出力したデータが PCBWay でもそのまま使えます。

出力した zip ファイルを注文ページにアップロードし、基板の枚数や厚さ、色などを指定することができます。
配送会社に OCS を指定して注文したところ、注文から 1 週間も経たずに基板が到着しました。
基板の色は黒を選択しました。カッコいいのですが反射が気になってしまったので、つや消しの黒の方が良かったかなと少しだけ後悔しました。
基板の品質については何も気になりませんでした。趣味の工作には十分すぎる品質です。

アクリルパネル
前作の QR 時計はユニバーサル B 基板で作って秋月の B 基板用アクリルパネルを取り付けたのですが、それが結構良かったので今作もアクリルパネルを取り付けたいと思いました。
今回はオリジナルサイズなのでアクリルもカスタムで設計する必要があり、アクリルショップのはざいやを利用しました。
まずは商品ページでアクリルの色や厚みとサイズを指定します。今回は表用にグレースモーク( 530 K )、裏用に透明( P )を選択し、厚みはともに 2 mm 、サイズは基板よりも一回り( 1 mm )大きくして 180 mm x 150 mm としました。
その後、加工も Web 上で指定することができます。板加工を選択して角丸とねじ穴を開けます。表側に関してはロータリーエンコーダのシャフトが通るための穴も開けます。

アクリル 2 枚で加工費込みで¥ 1,249 と思ったよりもお手頃な価格で注文できたのでとても満足しています。
部品実装
部品はすべて手作業ではんだ付けしました。設計時は何も考えていなかったのですが、マトリクス LED は 24 ピン、 TM1640 は 28 ピンあるのでこれを 16 セットはんだ付けするのは割と大変でした。

諸々を実装して動作テストした後に気付きましたが、 DS1302 のメイン電源とバックアップ電源が逆になっていたので、パターンカットとジャンパワイヤで対処しました。(前述の回路図は修正後のものです)

またこの画像に写っている IC のフットプリントは、 16 個の TM1640 のクロックをドライブするのに Pico W のドライブ能力が足りないと困るのでバッファ IC を載せられるようにしておいたものです。結局不要だったので回路図からも抜いています。
仕上げ
アクリルパネルを取り付けて、ロータリーエンコーダのつまみを取り付けたらハードウェアの完成です!
ロータリーエンコーダのシャフトが直径 4 mm だったのですが、秋月に売っているつまみは内径 6 mm のものしか無かったので、内径 4 mm 、外径 6 mm のスペーサーを 3D プリンターで作って隙間を埋めています。

横から見た写真はこんな感じです。アクリルに合わせて表側と裏側でスペーサーの色を変えているのがチャームポイントです。

ソフトウェア
Pico W のソフトについては長くなりそうなので別の記事で紹介したいと思います。
完成するとこんな感じで QR コードを表示できるようになります。

またこの作品の紹介動画をニコニコに投稿しているので、よろしければこちらもご覧ください。





