
スチームパンク風LEDゴーグル①(計画~設計~発注)
俺が趣味で参加しているオヤジバンドのベース担当は、目の光るカエルだ。
…なんていきなり云われても、知らない人には何のことやらだろうけど、ホントにそうなんだから仕方がない。動画でちょっと見てほしい(半分宣伝だよ)。
左奥にいる緑ジャージのカエル、目が光っているのがお分かりだろうか? 光る目のせいかステージ上で奇妙な存在感を放っていて、あろうことかヴォーカルの俺より目立ってるフシがある! 由々しき事態と云わざるをえないよホント。こいつより目立つステージギミックを作るのは、ヴォーカルの俺としては急務なのだ!
そこで、トレードマークである「黒丸メガネ」に、俺も負けじと光り物を仕込むことにした。ちょうど家に、黒丸メガネっぽいスチームパンク風ゴーグルが転がっていたので、そこにLEDを埋め込んで、ビカビカっと光らせるのだ。これで、観客の視線を釘付けにしてやるぜ!

※いまもAmazonで手に入るみたいだ。
こんな感じにしたいのだ
完成形のイメージだけは持っている。よくSF映画やゲームに登場するような、ロボットの表情ディスプレイのようににしたいのだ。たしか、初代AIBOもこんな感じじゃなかったかな。

あるいは、ぱちんこ『ホー助くん』とか。

要は、黒丸メガネの中にLEDドットマトリクスを仕込んで、まばたきさせたり、笑い目にさせたりするわけだ。
既製モジュールが合わない!
さてどうやって作ろうか。LEDドットマトリクスがモジュール部品として手に入ればラクだよなあ…と、秋月電子やAdafruitのサイトを調査してみたけれど、ちょうどいいサイズのものがない。
Adafruitが出している「NeoMatrix」というパネルや、その互換品なんかは、カラーLEDで発色も綺麗だし、サイズが合えば最高にいいんだけどねー。
そこで例によって、基板から作ることにした。実は、LEDマトリクスを調査していく過程で、使われている部品がどれもほぼ共通であることを知ったのだ。「WS2812B」というカラーLEDだ。簡単な回路と1本の信号線で、多くのLEDをコントロールできるらしい。


なんでも、AdafruitがこのLEDを「NeoPixel」というブランド名で展開していて、Arduinoでコントロールするためのライブラリも充実しているとのこと。なんと好都合な。
よし方針は決まった。WS2812Bを並べて、ゴーグルに入るサイズのLEDマトリクスを作ろう。そうしよう。
KiCadで設計
まずは作りをパクるために、WS2812BのLEDマトリクスをAmazonで調達した。でも、調査・実験の段階は特に面白くもないので割愛。

ゴーグルの片眼の直径が47mmなので、その円形にWS2812Bを並べるとなると、6×6ドット以下にしかできない。角にはLEDを配置できないので、実際にはトータルで24ドットぐらいかな。さすがにそれでは表現力が低すぎなので、WS2812Bは小さいサイズ(2mm×2mm)の「WS2812B-2020」というタイプを使うことにした。

あと、既製品を見る限りでは、WS2812Bを使った製品はどれも0.1μF程度のパスコンが入ってる。パスコンがないと電源電圧が不安定になるってことなのかな。このあたりのやり方はパクっておく。
というわけで、LEDとパスコンをひたすら並べて回路を作成。手間はかかるけど、めっちゃ簡単だわ。


初めての表面実装基板
さて、ここからが本番。プリント基板の設計だ。
基板の外形(47mmの円形)に、あらかじめLED配置イメージのアタリを付けておいて、そこに並べていくわけだ。

なお、WS2812Bは表面実装部品なので、基板全体を表面実装で設計していくことにする。パスコンも表面実装部品を選定。サイズはなんと1.0×0.5mmだ。小せえ!

というわけで、基板パターンが完成。
右目用と左目用で基板を共用するために、外部に線を出す場所を両側に配置してある。

部品は片面だけに配置するので、裏面が寂しかったから、KiCadの「イメージコンバーター」を使って、六百デザインのロゴを配置してみた。

JLCPCBに「部品実装」してもらおう
さて、1ミリ以下の表面実装部品をはんだ付けするなんて、俺の老眼には到底不可能だ。そこで今回は部品の実装までも業者に発注することにした。いつもお世話になってるJLCPCBさんが、部品の調達から実装まで、いつものごとく格安でやってくれるみたいなんだよね。

JLCPCBの在庫部品を検索すると、WS2812B-2020の在庫もしっかりある。価格は$0.1ほど。購入個数が多ければさらに安い。50個以上だから$0.08ぐらい。うん、リーズナブルだ。高かったらこの計画は頓挫してたなw

品番は「C965555」。

俺がKiCadで使っているデータと同じなので問題なし。
合わせてパスコンも選定する。このあたり、サイズは規格化されているようなので、容量とサイズと耐電圧から部品を選ぶ。

ここで重要な情報がパーツの品番(JLCPCB Part #)。基板製作を発注するときはガーバーデータだけを送ればいいんだけれど、部品実装を発注する際には、パーツの品番もデータに埋め込まなければならないのだ。
このあたり、JLCPCBのヘルプにも情報は載っているけれど、インターネット上には先人の知恵が公開されているので、参考にさせてもらった。感謝。
まあ、やることは簡単で:
回路図エディターで部品に品番を埋め込む
回路図エディターで部品表(BOM)を出力する
PCBエディターで部品の配置ファイルを出力する
これだけ。
まず部品に品番を埋め込むには、回路図エディター上でシンボルの情報に「LCSC」というフィールドを追加して品番を書き込む。

部品表の出力は、回路図エディターの「部品表を生成…」から行うのだけれど、プラグイン(スクリプト)を入れなければならないので、ちょっと面倒かな。
JLCPCB向けBOM生成スクリプトをダウンロードしてきて適当な場所に置き、部品表を生成するときに選ぶ。

生成された部品表(CSVファイル)がこちら。でも今回ぐらい部品の種類が少ないと、スクリプトの恩恵があまりないね。手書きでも作れるw

※ちなみにこのスクリプト、ファイル名やフォルダ名にスペースや漢字が入っていたりするとエラーになるっぽい。調べたら、スクリプトの問題というより、システム側(要はマイクロソフト側)の問題らしい。相変わらずだなあ。
最後に部品の配置ファイル。これはPCBエディターの「製造用出力…」から。

ここにも手間がひとつあって、表の1行目を指定された名称にしなければならなかったりする。うう面倒なり。

これで発注用データが揃った。
さて「部品実装」を発注しよう
下準備ができたら、後はサクサクだ。
まず、いつものようにガーバーデータをアップロード。

スクロールした下の方に「PCB Assembly」という項目があるので、スイッチをオンにすると選択肢が現れる。
実装タイプ(PCBA Type)は「Standard」を選んでおく。調べたところによると、WS2812Bのような基本パーツではない部品を使うときには「Economy」は選べないのだそうな。この時点ではEconomyを選んでいてもいいのだけれど、後でStandardに変更させられることになる(後述)。
あと、製作する基板は5枚だけど、実装する個数(PCBA Qty)は好きな個数が選べる(Economyの場合は2個から)。試作用の対応なのかな? いずれにせよ、ゴーグルには2つあれば十分なんで、それを選んでおく。全部選んだら「Confirm」。

お次は、部品表(BOM)と配置ファイル(CPL)のアップロードだ。用意したファイルをドラッグ&ドロップ。

左下に、この製品の用途を説明する欄があるので、入力しておく。通関のときに必要になる情報だ。これ、以前3Dプリント部品を発注したときに、通関から電話がかかってきて尋ねられたことがある。

次は使用パーツの確認。実は、実装タイプ「Economy」を選んでいると、ここでWS2812BはExtendedパーツだからStandardしか選べないよと云われるのだった(実は1回あった)。なお、ここでStandardに選び直すこともできる。

以上でデータのアップロードは完了! 料金は、送料を除いて$47.45。後はいつもの手順で、カートにセーブして発送方法を選ぶだけだ。
さーて、どんな感じで仕上がってくるのかな。楽しみすぎる。
(次回に続く)
※公開当初、「サイバーパンク風ゴーグル」と記載していましたが、「スチームパンク風ゴーグル」の誤りでした。訂正いたします。