DMX512(ステージ照明の制御)
Grove端子をDMX512(EIA485/RS485)インターフェースへ変換するGroveデバイス「DMX512」を紹介します。後半では、ムービングヘッドライト「BETOPPER LM70」をmicro:bitで制御するプログラムを紹介します。
micro:bit V1.5用のプログラムです。
通信規格としてのDMX512とは
ライブやコンサート、イベントなどの舞台では、基本となる地明かり・バック・ブッチをパーライト・スポットライトなどのステージ照明で作り、ムービングライト・レーザー・フラッシュライトなどのエフェクト照明でさらなる演出を加えることがあります。舞台を演出するには、これらの照明器具を調光・調色したり、光の向きを変えることが欠かせません。
DMX512は、照明器具の調光や調色などの制御を行うための通信規格です。1本のケーブルで、512チャネルのデジタル信号を送受信することができ、1チャネルあたり256段階の制御が行えます。DMX512、または単にDMXと呼ばれます。
DMX512について「DMX(DMX512)って何?」で詳しく紹介しています。
BETOPPER RGBW ミニムービングヘッドライト 7x8W RGBW 4 in 1 LM70S
クラブ・スタジオ・ホール・式場・舞台などさまざまな場所で色鮮やかな雰囲気を演出するムービングヘッドライトです。オート・サウンド・マスタースレーブ・DMXに対応。
Groveデバイス「DMX512」
seeedのDMX512は、Grove端子をDMX512(EIA485/RS485)インターフェースへ変換するGroveデバイスで、コンピューターボードとDMX512に対応した照明器具を物理的・電気的に接続することができるようになります。
DMX512の制御信号
DMX512では、1本のケーブルで512チャネル分のデーター(0~255)を送出することができ、1つのデーターをスロット(Slot)と呼びます。
DMX512の制御信号は、まず、Lowレベルのブレーク信号(Break)と、ブレーク信号が終わったことを示すMAB(Mark After Break)を続けて送出します。長さは、それぞれ88マイクロ秒~1秒、8マイクロ秒~1秒です。
次に、8ビットのスタートコード(Start Code)が送出されます。スタートコードの値は「0x00」で、後続のデーターがDMXであることを示します。ちなみに、この値が「0xCC」の場合はRDM(Remote Device Management)を示すそうです。
最後に、512個のスロット(Slot)が送出されます。スロットの値は「0x00~0xFF」です。この値が、DMXに対応した照明器具を制御するデーターです。
スタートコード以降は、8N2(8ビット・ノンパリティ・2ビットのストップビット)のシリアル通信となります。通信速度は、250kbpsです。
どのスロットが使用されるのか?
「DMX(DMX512)って何?」で紹介したムービングヘッドライト「BETOPPER LM70」の制御を見てみましょう。ムービングヘッドライト「BETOPPER LM70」では、1台で9つのチャネルを使用(9チャネルモードを選択時)します。例えば、4番目のチャネルを使って、赤色の明るさ(Red Dimmer)を256段階(0~100%)で制御することができます。
BETOPPER LM70 9-Channel Mode
Mini Moving Head User Manual model:LM70
DMX512で制御するときに重要となる設定に「アドレス」があります。アドレスは、自機の制御データーとして認識する最初のスロット番号になります。
例えば、ムービングヘッドライト「BETOPPER LM70」のアドレスを「1」に設定して「9チャネルモード」を選択したとき、スロット「1~9」のデーターが使用されます。アドレスが「10」なら、スロット「10~18」となります。また、複数の機器で同じアドレスを指定した場合は、同じスロットのデーターが使用されます。
micro:bitでムービングヘッドライト「BETOPPER LM70」を制御する
「DMX(DMX512)って何?」で紹介したムービングヘッドライト「BETOPPER LM70」を、micro:bitで制御するプログラムを紹介します。まず、準備としてmicro:bitとGroveデバイス「DMX512」を接続します。
micro:bitとGroveデバイス「DMX512」の接続
micro:bitにGroveデバイスを接続するには「Grove Shield for micro:bit v2.0」などの拡張ボードを使用すると便利です。本記事では、Grove Shield for micro:bit v2.0の端子P2/P16に接続しました。
プログラム(ブロック)
micro:bitからDMX512の制御信号を送出します。ムービングヘッドライト「BETOPPER LM70」をランダムに動かして、LEDをさまざまな色で点滅させるプログラムです。ボタンAで動作開始、ボタンBで停止します。
本プログラムには、ブロックに変換できないコード(グレーのブロック)が含まれています。後述のプログラム(JavaScript)で入力してください。
最初だけ実行するプログラム
変数の定義と初期化です。SlotDataのサイズは513で、0番目がスタートコード(Start Code)、1番目以降が512個のスロット(Slot)です。
関数:SetChannel9
9チャネルモード用のデーターをスロットに格納する関数です。引数は、スロットの開始位置(start)と9チャネル分(ch1~ch9)のデーターです。開始位置(start)は、制御する機器のアドレスの値と一致します。
9チャネル分(ch1~ch9)のデーターの役割です。
BETOPPER LM70 9-Channel Mode
Mini Moving Head User Manual model:LM70
バックグラウンドで実行するプログラム
DMX512の制御信号を送出します。最初の「デジタルで出力する(値:0)」がブレーク信号(Break)です。二つ目の「デジタルで出力する(値:1)」がMAB(Mark After Break)です。その後、250kbpsでシリアル通信の設定を行い、スタートコード(Start Code)と512個分のスロット(Slot)データーを送出しています。また、送出タイミングがわかるように「反転(x:2、y:2)」を使って、LED画面の中央で赤色LEDが点滅するようにしています。
ボタンA、ボタンBが押されたときに実行するプログラム
動作状況を表す変数「Active」の値を、ボタンAが押されたときに「真」、ボタンBが押されたときに「偽」をセットします。
ずっと実行するプログラム
動作状況を表す変数「Active」が「真」の場合、変数「PanControl」「TiltControl」「RedDimmer」「GreenDimmer」「BlueDimmer」にランダムな値(0~255)をセットします。「偽」の場合、0をセットします。
それぞれの値を引数として、関数「SetChannel9」を呼び出し、スロット(Slot)データーとして格納します。開始位置(機器のアドレス)は「1」固定です。
プログラム(ブロック)
プログラム(JavaScript)です。
動作確認
ムービングヘッドライト「BETOPPER LM70」の動作モードを「SLAu」、アドレスを「1」、チャネルモードを「9CH」に設定して、DMXケーブルでGroveデバイス「DMX512」と接続します。micro:bit側の電源を投入します。micro:bit側から送出される制御信号を、LM70が正しく受信すると、正面ディスプレイの右下にある赤色ランプ(DMX SIGNAL)が点滅します。ボタンAを押して、LM70が動作をはじめると成功です。ボタンBで停止します。
この動画には、激しく点滅するシーンがあります。十分に注意してください。
おすすめ品
BETOPPER RGBW ミニムービングヘッドライト 7x8W RGBW 4 in 1 LM70S
クラブ・スタジオ・ホール・式場・舞台などさまざまな場所で色鮮やかな雰囲気を演出するムービングヘッドライトです。オート・サウンド・マスタースレーブ・DMXに対応。