【依頼案件】ミクさんのサイバーコンソール その33

その他のプロジェクト

 
本日も匍匐前進します。イルミネーションの検討に入っています。
今回は秘密兵器が登場します。

構想では、シート両サイドにナイトライダー風のイルミネーションをつけるということになっておりまして、すでに二本のLEDバーの製作を終了しております。
が、このLEDバーはLEDがダイレクト駆動になっているためにものすごい数の、というかLEDの数の分の引出し線が出てきておりまして、何とも不格好&取り回しが大変です。

で、何かいいやり方がないかと思っておりましたところ、こんな面白いものがあるではないですか。

通信とLEDを制御する機能を持ったICが載ったRGBフルカラーLEDチップ WS2812B です。
秋葉ピカリ館でぴろぴろなってたのはこれなのか、とようやく納得した次第。
詳細はデータシートに譲るとして、簡単には1線式のデータ通信というかデータ配信をすることができ、信号によってRGBのREDの輝度を一粒ずつコントロールできるというすぐれものです。
データ配信方式は変形逆バケツリレーとでもいえばいいかな、「焼き鳥は人数分あるから、自分の串を取ってから隣の人に回してね」方式になっています。
長テーブルにずらりと人が並んでいるので、テーブルの端から人数分の焼き鳥を盛った皿を一人目に渡します。一人目は自分の串を取って次の人に回します。うまくいくと最後の人までちゃんと串が届きます。焼き鳥の回し取りと違うのは、皿に盛られた串は同じ種類では無いことがほとんどで、かつ自分の取る串が決まっているということです。
自分の串をもらった人は、先の方から順に食べていきますが、口に入るネタによってやることが違います。先から豚バラ、玉ねぎ、イカゲソだったら、Rは全力、Gは消して、Bは半分点灯する、といった具合です。隣の人は全部玉ねぎで、RGB共に消しているかもしれません。一人ひとり、毎回串の内容は変わってもいいのです。で、この焼き鳥分配は1秒間に数千回行うことができます。

一見合理的なやり方ですが、途中で間抜けな奴がいて皿を落としたり、悪意を持った奴が皿を隠したりするなどして次の人に皿が回らない場合、あるいは誰かが他の人の串をつまみ食いしたりすると犯人の下流では変なことが起きます。
ということで、制御という意味での信頼感としてはいまいちではありますが、線三本でピロピロ出来るというのは非常に魅力的です。
ということで、ぜひこれを試してみようということで買ったのがこちら。

WS2812Bが基板に乗って外付けの部品も実装されたものが、10x10こつながっている基板です。

裏側は基板上では配線されておらず、自分でつなぐ必要があります。
好きに割って好みの形で使えるようになっているのです。

裏を詳細にみてみますと、6個のパッドがあり、両サイドは5VとGNDで上下は直結されています。
真ん中の二本は信号線で、上下の間にICが挟まっています。データは矢印方向、つまり下の写真では下から上に向かって流れます。よく見るとDinとDoutと書いてありますよね。Dinから流れ込んだ焼き鳥皿からICが自分の串を24bitx3だけ取って、電圧レベル等再調整してDoutへ流します。

実験として縦一列を使って動かしてみます。
Arduinoで駆動するためのモジュールはAdafruitからリリースされており、GitHubからダウンロードできます。DLしたZipファイルを解凍し、ファルダごとArduinoのlibrariesフォルダに置きます。その際、フォルダ名にハイフンがあるとうまく動きませんので、適当にフォルダ名を変えておきます。
上手く認識されればArduinoIDEのスケッチ→Include Library 以下に Adafruit NeoPixelが見えます。また、ファイル→スケッチの例にもサンプルソースとしていくつかのテストプログラムがNeoPixel以下に見えるようになります。とりあえずはこれを使って動かすだけでも十分遊べるはずです。

配線作っていきます。一列分をバキっと折りとって、

失敗(笑

スズメッキ線でつないでしまえば問題ないと思われますので、気にせず作業を続けます。

5Vラインをハンダ付けします。一つのモジュール(円形の一つ分)内では電源ラインの二つのパッドはつながっていますので、どっちかにハンダ付けしてやればいいです。

信号ラインを繋いでいきます。信号は焼き鳥方式なので、二つのモジュールをそれぞれ別々につないでいきます。ちょいと面倒であります。

着々

データ線を繋いだら、残りのGNDを繋ぎます。こちらも5Vと同じですので、一本のスズメッキ線に各モジュールをぶら下げるようにハンダ付けしていきます。

最上流部分。5V GND 焼き鳥の皿を最初に渡すとこ(しつこい)の3本が出ます。

Arduino nano を繋いで動かしてみます。
ソースは何の手も入れなくてもそれなりには動きますが、一応ソースのコメントとかみてLEDの数位合わせとくと良いです。
ソースままだと6番ピンに信号が出ます。

動かしてみます。

あれれ、なんかおかしいですね。
途中まではうまくいってますが、7番目くらいから向こうが怪しいです。これは早速つまみ食いか(笑

あやしそうなモジュールをバイパスしてみます。

すると、うまく動いているように見えます。

やっぱりこんなことが起きるからこのデータ転送方式はダメだよな、などと思っていたのですが、その後よくよく調べてみると、電源ラインのハンダ不良が見つかりました。
はい 私 が 悪 か っ た で す 。

ということで、本チャンを作っていきます。
ミクさんコンソールのライトバーは200mmくらいで作りたいところです。ということで、二列分を直列に接続します。

こんな感じ。

データ線は非常に大変ですが、地道につないでいくほかありません。

出来ました。

同じように接続用の線を引っ張り出しておきます。

では動かしてみます。ソースの変更はLEDの数を20にするだけ。

またなんかおかしいですね。

どうも真ん中あたりに不良があるようです。

先ほどと同じような症状ですので、電源ラインを疑って見る必要がありそうです。

ということで、怪しいあたりのハンダをもう一回溶かしてしっかりパッドに濡れさせます。
すると…

ちゃんと動きました。やっぱハンダのチェックはだいじですね。
で、これでようやくナイトライダーに取りかかれます。が、これも自分でやる作業はほとんどありません。先人たちがWS2812Bを活用する様々なArduinoソースを公開してくれています。

その中から、このサイトのソースを使わせていただくことにしました。実にたくさんの面白い動作を作っていらっしゃいます。一番近い動作をしているのがCylonでした。
これです。20個しかLEDが無いので非常に忙しないです。

この動作はバーの両端で光が跳ね返るような動作になっており、また非常に速度が早いです。
ので、速度を落とし、光の帯がバーの端を一旦通り過ぎて上手、下手双方に隠れるようにソースをいじります。ソース自体は比較的単純なものですので、やっていることを理解できれば変更は簡単です。色も青に変えてみましょう。

いい感じですね。もちろん色も速度も自由自在です。これがたった3本の線で実現できるのです。
素晴らしい。
ダイナミック接続の現状とは雲泥の差です。しかもRGBすべて使えてフルカラー動作が出来ます。
ダイナミック接続はこうですよ。

ArduinoもMEGAとか大げさな奴は必要ありません。Pro mini以下で十分です。

コンソールのイルミネーション全体をこの方式でまとめたくなってきました。
なんか俄然やる気が。 いや、いままでやる気がなかったわけではないですよ(笑

コメント

  1. Choi-Tech より:

    ナイトライダーリレー大好物です!
    昔、自転車に角マーカーやら星マーカーと共に(中略)配線不良で良く燃えまして、友人には
    ファイヤー丸と勝手に命名された思い出
    1/12の方にも是非採用したいところですが
    サイズ的には厳しそうですね…

  2. Choi-Tech より:

    Macは古いのしか持ってなくて私は活用出来きませんですが
    スキャナアプリだけならアンドロ用とか色々あるみたいですね
    何気に楽天で検索したら今でも関連グッズ結構沢山出ててビックリ
    (リレー点灯のLEDテープも沢山あったので1/12の方でもやれるかも)
    自宅近くのコルベット&トランザム専門店にKITTレプリカの中古車が
    50万で売ってたの買っておけば良かったとちょっと後悔
    (同車か不明ですが時々横浜北西部で走行してるのを見かけます)
    KITT声のカーナビとかレーダーとかもずっと気にはなってるんですけどね…
    http://areaten-one.com/knightrider/parts/index.html