🌈

DMX512を使ってテープライトを制御してみる

2023/12/28に公開

はじめに

こんにちは、Lapi(@dragoneena12)です。ステージ照明って良いですよね。でも機材がないので自作してみました。

demo

備忘録も兼ねて作り方を書いていこうと思います!

材料

材料名(リンクは参考) 価格 用途等
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です。

https://github.com/mathertel/DMXSerial
https://github.com/adafruit/Adafruit_NeoPixel

プログラム作成

以下のプログラムを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 Panel

「機器」よりRGBパネルを追加し、上図のように設定します。

DMX USB

「入力/出力設定」でDMX USBの出力にチェックを入れます。

Function

「ファンクション」よりRGBマトリックスを追加し、上記のように設定します。

以上で冒頭のデモ映像のようにテープライトをいい感じに光らせることができます!

おわりに

DMX信号で動く照明機器を自作してみて、世の中の照明がどうやって動いているのかがなんとなく分かってきました。

今回紹介した方法であればかなり手軽にできるのでぜひチャレンジしてみてください!

参考

GitHubで編集を提案

Discussion