Windows 自作PC

TVモニタ用LEDバックライトシステム(アンビエントLEDライト)について【製作編】

投稿日:

遊びに来た友人に手伝わせてサクッと完成。
なので製作中の写真などが殆どありません。

完成写真や動画もありません。
というか部屋狭いし汚いしちょっと公開できない…
Youtubeとかで検索したら出てくる作例のとちゃんと同等です一応。

製作手順は簡単です。

まず材料。






必要な工具は、半田ごて、はんだ、ニッパなど。
あとマスキングテープがあると便利です。

今回は当初の予定どおりArduino NanoによるAdalightを製作しました。
BlinkStickはハードは簡単そうなんですがソフトはどう構成すればいいのかちょっと判らなかったので一旦保留です。

まずLEDテープを開封してびっくり。
バラでケーブルが添付されているだけかと思ったら末端にバッチリ接続されていました。

しかも電源用2本と電源+信号3本のコネクタ線が別です。
電源のDCコネクタはネジ止めですので、後は制御側にコネクタの相方をハンダで接続するだけです。

今回はD6(9番ピン)を信号線とし、GNDも接続。
Arduino側はこれだけ。

ここで余談
安い中華互換ボードを使ったのでピンヘッダが無くコンパクトな代わりにハンダ作業が必要でした。
正規品はピンヘッダ実装済みなので、ブレッドボード等を使ってハンダ作業なしで構成できます。
なお中華互換ボードは正規品とUSB-シリアル変換チップが違うことがあり、Windowsからは同様に使えますが他OSからは躓くことがある模様です。

LEDテープをちょん切ってTVに貼り付ける前に点灯試験をやりましょう。

まずArduinoの開発環境であるIDEをダウンロードしますが、最初はUSBドライバーなんかも一緒にインストールされるインストーラー版がオススメ。

Arduino IDE


「JUST DOWNLOAD」をクリックします。
なおうっかり「CONTRIBUTE&DOWNLOAD」をクリックするとダウンロードの前に寄付を求められます。
最初こっち押して有料化したのかと思った…騙された

次にWS2812b含むLEDを制御するライブラリ、FastLEDとAdafruit_NeoPixelをダウンロードしておきます。

FastLED
Adafruit_NeoPixel


右の方の「Clone or download」ボタン、次いで「Download ZIP」をクリックしてダウンロードです。

Adafruit_NeoPixelは点灯試験でしか使いませんが、他にちょうどいいテストプログラムが無かったので…

三つファイルをダウンロードしたらArduinoIDEをインストールします。
特に引っかかるところもないのでずばずば進めちゃってOK


インストールが終わったら起動し「スケッチ」メニューから「ライブラリをインクルード」「.ZIP形式のライブラリをインストール」と進み、先ほどダウンロードしたFastLEDのファイルを選択します。
Adafruit_NeoPixelも同様に。

ここでいよいよArduino NanoをUSB接続します。
ついでにLEDテープと接続、LEDの電源も繋いでおきます。

デバイスマネージャーでUSBシリアルコンバーターっぽいのが認識されればOK、私の環境ではCOM5になっています。
(今回のは中華互換ボードですので、正規版や他の互換ボードでは表示は違うかも)

環境設定として「ツール」メニューの「ボード:ほにゃらら」を「Arduino Nano」、「シリアルポート」を上で確認したポート(私の場合COM5)を選択し準備完了です。

テストプログラムは下記(元ソースをどこから拾ってきたのか判んなくなった…)


#include <Adafruit_NeoPixel.h>
 
#define PIN 6
#define LED_NUM 114
 
Adafruit_NeoPixel ledtape = Adafruit_NeoPixel(LED_NUM, PIN, NEO_GRB + NEO_KHZ800);
 
void setup() {
  ledtape.begin();
  ledtape.show();
}
 
void loop() {
 uint16_t i, j;
 
 for(j=0; j <256; j++) {
   for(i=0; i < ledtape.numPixels(); i++) {
     ledtape.setPixelColor(i, rotateColor((((i) * 256 / ledtape.numPixels()) + j) & 255));
   }
   ledtape.show();
   delay(20);
 }
}

uint32_t rotateColor(byte WheelPos) {
  if(WheelPos < 85) {
   return ledtape.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  } else if(WheelPos < 170) {
   WheelPos -= 85;
   return ledtape.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  } else {
   WheelPos -= 170;
   return ledtape.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
}

最初のdefine文のLED_NUMを自分の環境に書き換えてください。

おもむろに丸矢印のアイコンボタンで「マイコンボードに書き込み」を実行。
特にエラーが表示されず「ボードへの書き込みが完了しました。」と表示されれば成功です。
同時にLEDテープの先頭から、上で設定した数のLEDがグラデーション状に光るはずです。
数を変えたりしてみてください。
なお制御するLEDの数を減らした場合、一度点灯したLEDはArduinoのプログラムを書き換えても付きっぱなしになり、一度電源を抜かないと消えないので注意。

テストが終わったら、LEDの加工に移ります。
この時点で手っ取り早くAdalightプログラムを書き込んでもいいのですが、LEDテープをはんだ付けする作業がありますのでチェック後にした方がよいかと。

まずTVを採寸し、必要なLEDテープの長さを算出します。
あくまでも画面の表示範囲が基準なことに注意です。

縦横のピクセル解像度をLED数で割って取得範囲を決定する為、ギリギリにLEDを置いてしまうとズレが大きくなると思います。
TVのスタンド部分の処理は「LEDを配置しない」とか「スタンド上部にシフトさせる」とかいろいろ流派があるようですが、私の場合はTVを壁付けにしてるので何も考えずにズバッと一列としました。

ついでに貼り付けるときの目印に、マスキングテープなどで表示範囲四方の真ん中をマークしておきます。

LEDのカット位置は銅箔の中心線です。
4本に切り出したLEDテープの方もそれぞれ真ん中をマークしておきます。

製作動画などを見るとTVの裏に貼り付けてからはんだ付けしてる剛の者も多いのですが、おっかないので私はカッターマットにマスキングテープで貼り付けてはんだ付け。
案の定カッターマットが数か所焦げました。
まぁそうなるな。

手持ちの雑線漁ったところ細いか太いかの両極端で、ちょうどよさげなのが無かったのでやむなく太い線を使ってますが、こんな太い線でなくてもよいはずです。
真ん中のなんてカーナビかなんかの取付で余った線だし。

使用するLED数に応じた最大電流を考慮したうえで、なるべく細い線を使った方が綺麗に収まると思います。
後から気づいたんですが同心円になるように線の長さ変えればよかった…

なお検索するとハンダ作業無しで連結できるL字ジョイントもあるのですが、代わりに配置の自由度が無くなり微妙な気がしたのでスルーしました。

4本のLEDテープを連結出来たら、もう一度Arduinoに接続してチェック。
全て点灯すればOKです。

TVに貼り付けるのは一発勝負、マークしておいたTV側とLEDテープ側の中心位置を基準に張りつけます。
手持ちがあれば先にアルコールで脱脂しておくとはがれにくくなります。
多少曲がってもキニシナイの心。

ハード最後の手順、ArduinoにAdalightを書き込みます。

adalight_ws2812

先ほどのFastLEDと同様にダウンロードしてきたら「ドキュメント」にできている「Arduino」フォルダに展開します。
フォルダ名が「adalight_ws2812-master」になっていると思いますので「adalight_ws2812」にリネーム。
(「-master」を削除するだけ。リネームしなくてもダイヤログで注意され勝手に移動されるだけですが)
そしたらArduinoIDEの「ファイル」メニュー、「開く」で「Adalight_WS2812.ino」を選択して読み込み。

先ほどのテストと同様にNUM_LEDSを自環境に合わせて書き換えて、ボードに書き込みます。
これでハード側は全て完成です。

Windows上の画面を取得し、Arduinoに書き込んだAdalightをコントロールするソフトはPrismatikを使うのが一番手っ取り早いようです。
ただしリリースは64bit版のみなので32bit版のWindowsをお使いの方は自分でビルドする必要があるかと思われます(過去記事参考にしてください)

Lightpack project with Prismatik flavour

LightPackってーと、クラウドファンディングで製品化してた奴ですね。
もちっと入手しやすくて安ければベストソリューションなんですが…

インストール時、最初に言語選択がありますが残念ながら日本語はありません。
使用許諾に同意、インストールフォルダ選択の後、スタートアップに追加するかどうかなどのチェックボックスがあります。
デフォルトではオフなのでお好みでチェックを入れてください。


初回起動時には設定Wizardが起動します。
LightPackが見つからないと言われますが自動的に「setup another device」が選ばれているのでそのまま次へ

Adalightを選択、次へ

Arduino Nanoとの通信パラメータを設定。
COM番号はArduino IDEと同様に、band rate(通信速度)は115200bps、Color Formatは「RGB」でOKでした。

プロファイル名を入力。
私は特に捻りもなく「Adalight」にしました。


次の画面ではデスクトップの周りに色検出範囲が表示されます。
この範囲の中の平均でLEDの色を決めるようです。

Number of LEDs: LEDの合計数
Top,Sides,Bottom: それぞれの辺のLED数
invert order:時計回りか反時計回りの選択
Start offset: 最初のLED位置をズラす
Thickness:画面端からどれくらいの範囲で色を取得するかの設定
Stand width:下端中央のLEDを配置しない部分を指定

さほど難しくはないので実際に貼り付けたLEDに合致するように設定します。
なお上のCUSTOMボタンを押すと画面端の範囲表示が更新されます。
ここで「次へ」を押すとホワイトバランス調整の画面になります。
明らかに色がおかしければここで調整しますが、私は特に必要性を感じずそのまま次へ。
以上で初期設定が完了します。

全てうまく行っていればPrismatikはタスクトレイに収まり、既に画面端の色でLEDが光っていると思います。

部屋を暗くして下の動画を再生してみましょう。

催眠術掛けられそう…

タスクトレイのPrismatikアイコンをダブルクリックすると点灯/消灯がトグルします。
手持ちのSteamゲームや動画プレイヤー、ブラウザ上の動画再生なども試しましたが全て正常に動作しました。
Kodiも特にプラグイン入れずとも動作してます。
Windows上で使うならもうこれだけでOKかと。

調べる手間がちょっとかかりましたが、実作業は2時間くらい。
費用はざっと5000円くらいですし、これは我ながらコスパ高いDIYでした。

これでじっくり落ち着いて映画見たりしたいですねぇ…

-Windows, 自作PC
-, , , , ,

Copyright© 復活の「愛馬の上で直立不動」 , 2021 All Rights Reserved Powered by STINGER.