LEDポールの作成、制御をしました(TouchDesigner他)
こんにちは、Saloonです。映像を作るのが趣味の大学生です。サイリウムを使ったダンス動画に、LEDポールを使う機会がありました。LEDポール光を制御するシステムを作ったので、その記録をまとめます。一番最後の参考の欄に、作成中にお世話になったサイトを全部まとめてあるので、是非そちらもご覧ください。間違えや、不明瞭なことがあればお気軽にコメント下さい。
できた映像
こちらの映像は、Legend Tokyo CHRONICLEの30秒クリエイター部門、準本戦エントリー動画です。本記事では、ダンサーの後ろで光っている二本のLEDポールについて、まとめます。
ダンサーは彼です。
全体図
使ったもの(2本作ってだいたい2万円くらい)
・LEDテープ(WS2812B、1Mに60LEDのを使用) ×2
・アルミフレーム(カバーは、乳白色を使用) ×2
・100均の園芸用のポール(ダイソーで購入、120cmで太めのやつ) ×2
・3Pinケーブル(LEDテープ同士をつなぐ) ×4
・USBケーブル(PCからESP32にコードを書き込む用)
・PC(使用ソフト:TouchDesigner,Aruduino IDE,Davinci Resolve)
・ブレッドボード、ジャンプワイヤーなど(ESP32とLED点灯のテスト用、撮影当日は使わなかった)
・はんだづけに使うもろもろ
・LEGO(ポールが自立するように足をつけた)
・Wifi(携帯回線のデザリングでも動いた)
LEDポールの作成
まず、LEDポールを作る。購入したLEDテープにはシリコンのカバーが付いてたので、それをはさみで切り取った。むき出しになったテープ(LEDの付いた基盤)を、アルミフレームに入れて、園芸の柱にセメダインでくっつけてポール完成。その後、自立させたかったので足をLEGOで作った。
次に、ESP32と3Pinケーブルをはんだでくっつけた。
最後に、LEDポール同士やESP32とを3Pinケーブルでつないで完成。
ESP32のコード準備
そもそもAruduinoやESP32について何も知らなかったので、このサイトに沿って、インターネット経由でLEDを制御することを勉強。その後、LEDポール用に以下のコードを準備。
Arduino IDEを使用して、ArtNet WifiライブラリとFastLEDライブラリをダウンロードする。Arduinoのスケッチ例から、ArtnetWifiFastLEDを開く。コードのうち、変更したところは、Wifi settingsとLED settingsのところ。
// Wifi settings
const char* ssid = "";
const char* password = "";
ssidに名前、passwordにパスワードを入れる。
// LED settings
const int numLeds = 120; // CHANGE FOR YOUR SETUP
const int numberOfChannels = numLeds * 3; // Total number of channels you want to receive (1 led = 3 channels)
const byte dataPin = 4;
numLedsにLEDの数、dataPinにESP32のボードの何番のピンをLEDにつないだかを入れる。
このコードをESP32に書き込むが、書き込むときに注意点がある。書き込みの前に、IODのボタンを押しっぱなしのままENを押して離す。そのまま(IODは押したまま)書き込みを始める。コンパイルが終わり書き込みが始まったタイミングで、IODを押していた指を離して、書き込み終了を待つ。
TouchDesigner内のシステム
今回のダンス動画の撮影は、あらかじめ曲に合わせてLEDの発光パターンを決めた。Davinci Resolveで音に合わせた発光パターンを動画として書き出して、その動画をTouchDesignerで読み込む。その後、TouchDesignerで、色や光の調整をしてESP32にDMXとして情報を送るというシステムを考えた。
システム全体は、LEDpatternPage、ColorPage、GeneralPage、PreviewPage、TOPtoESP32Pageと後その他に分かれる。それぞれのPageの受け渡しは、TOPで行った。
簡単にそれぞれ説明する。
LEDpatternPage - 光の動き、点滅のパターン生成(白黒)
発光パターンを表した動画をMovieFileInで、読み込むだけ。ただ、パターンが決まる前は、発光テスト用にいくつかTouchDesigner内でパターンを生成した。Constant ChopをCropするなどして、光の上下移動や点滅などのパターンを作った。
↓
ColorPage - パターンの色を決定する
受けとったTOPに、LevelTopで色をつける。
↓
GeneralPage - 光の強さやコントラストなどを調整
受けとったTOPを、LevelTop等で調整する。
↓
TOPtoESP32Page - TOPの情報として入力されたパターンをDMXに変換
ここの部分は、このサイトのサンプルファイルを参考にした。
UI設計
UIは下のようにした。
UI案
実際の画面
LEDパターンと色のところは、クリックで切り替えをする。コントローラーのところは、GeneralPageの光の強さなどをいじるパネルを置いた。また、パターン毎に変数として欲しい値も、ここにパネルを置いていじった。
一番苦労したのが色のUI。9つのパネルから選択されたものをその隣の「現在の色パネル」に表示。「現在の色パネル」の下のRGBバーをいじって色を変更できるようにした。変更した値は、右側のパネルにも出力され、その色を記憶できるようにした。
こんな感じ
部屋で点灯テストしている様子は以下の動画で。
TouchDesigner内の詳しい内容は聞いていただければ、喜んでお答えします。twitterの方まで是非
当日の様子
最後に
電子工作等、全くやったことない身でしたが、ネット上の先人方の記事のおかげで、無事完成させることができました。この場をお借りして感謝申し上げます。今回、妥協した点はいくつかあります。
1、ESP32の電源をPCから直接とったこと
スマホのモバイルバッテリーでやろうとしましたがうまくいかなかったです。カメラの画角にPCが入らなければよいので、ケーブルをできるだけ伸ばす方法に落ち着きました。
(参考:ダイソーの3000mAhでたった500円のモバイルバッテリーを電子工作に使ってみた(検証あり))
2、多分これ以上LEDポールを増やせない
DMXが512チャンネルまでの情報をおくるので、170LED(=512/3)くらいまでしか制御できない(このシステムでは)(RGBにそれぞれ1チャンネル)。解決策はわかりませんが、より壮大なLED制御の機会があれば、考えようと思います。
今後もTouchDesignerを使って作品を作ります。最後まで読んでいただきありがとうございます。
参考
ピクセルマッピングでLEDテープライト制御 NeoPixel+ESP32+TouchDesigner
ArtNet DMX で Lチカしてみた。(ESP8266/ESP32 + NeoPixel LED)
60LED/60pxのLEDバー Super ScenografixをTouchDesignerから使う
この記事が気に入ったらサポートをしてみませんか?