🌈
DMX512を使ってテープライトを制御してみる
はじめに
こんにちは、Lapi(@dragoneena12)です。ステージ照明って良いですよね。でも機材がないので自作してみました。
備忘録も兼ねて作り方を書いていこうと思います!
材料
材料名(リンクは参考) | 価格 | 用途等 |
---|---|---|
Arduino Nano Every | 2,360 | DMX信号を受信してテープライトに信号を送る。ATmega328Pとかを使えばもっと安くなるはず。 |
LTC485CN8 | 250 | RS485トランシーバ。 |
USB-DMX インターフェースケーブル | 2,399 | PCからDMX信号を出力する。 |
XLR オスコネクタ | 520 | キャノンコネクタの接続部分。 |
WS2812B テープライト | 899 | 実際光る部分。少し高いが1m144LEDのものもある。 |
USB Type-C コネクタ DIP 化キット | 180 | USB Type-C を電源として使う。 |
フラットモール | 260 | テープライトを貼り付ける土台。 |
回路図
Arduino プログラム作成
ライブラリインストール
以下の2つのライブラリをインストールします。それぞれzipで落として展開し、~/Documents/Arduino/libraries/
以下に配置すればOKです。
プログラム作成
以下のプログラムをArduinoに書き込みます。
#include <DMXSerial.h>
#include <Adafruit_NeoPixel.h>
const int LED_PIN = 3;
const int LED_COUNT = 60;
Adafruit_NeoPixel pixels(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
const int startChannel = 1;
void setup() {
DMXSerial.init(DMXProbe);
pixels.begin();
}
void loop() {
unsigned long lastPacket = DMXSerial.noDataSince();
pixels.clear();
DMXSerial.receive();
if (lastPacket < 5000) {
for(int i=0; i<LED_COUNT; i++) {
int var_r = DMXSerial.read(startChannel + 3 * i);
int var_g = DMXSerial.read(startChannel + 3 * i + 1);
int var_b = DMXSerial.read(startChannel + 3 * i + 2);
pixels.setPixelColor(i, pixels.Color(var_r, var_g, var_b));
}
} else {
for(int i=0; i<LED_COUNT; i++) {
pixels.setPixelColor(i, pixels.Color(0, 0, 0));
}
}
pixels.show();
}
配線
こちらの写真のように、電源用のUSB Type-CケーブルおよびDMXケーブルを接続します。
QLC+の設定
公式サイト よりQLC+をダウンロード・インストールします。
「機器」よりRGBパネルを追加し、上図のように設定します。
「入力/出力設定」でDMX USBの出力にチェックを入れます。
「ファンクション」よりRGBマトリックスを追加し、上記のように設定します。
以上で冒頭のデモ映像のようにテープライトをいい感じに光らせることができます!
おわりに
DMX信号で動く照明機器を自作してみて、世の中の照明がどうやって動いているのかがなんとなく分かってきました。
今回紹介した方法であればかなり手軽にできるのでぜひチャレンジしてみてください!
Discussion