DMXで操作できるプロジェクターシャッターを自作する記事が見つけられなかったので、記事にしてみます。
今回使用した部品
ほぼ秋月電子、コネクターはサウンドハウスです。ベルト・滑り止めはホームセンターで入手しました。
- マイコンボード: Arduino Uno R3(互換機)
DMX Serialライブラリが対応しているArduinoを選べば大丈夫(なはず)です。 - DMXを受信するトランシーバー:LTC485
- サーボモーター:SG-90
- ケース:TW8-4-8B
※Arduino Unoだとかなりぎちぎちになります。もし作られる際はもう少し大きめのケースをおすすめします。 - XLRコネクター メス:NEUTRIK NC3FAV1-D
- XLRコネクター オス:NEUTRIK NC3MAV-0
- スイッチング電源:家にあった12V5Aのもの。7V~12Vの2A~あれば大丈夫です。
- 配線用ケーブル:耐熱電子ワイヤー 2m×7色 外径1.22mm(UL3265 AWG24)
- DCジャック:MJ-14
- サーボホーン取付用ねじ:M2プラスチックなべ小ねじ+六角ナットセット M2×5mm:1パック20組入
- 電解コンデンサー:47μF35V105℃ ルビコンPX
- ブラックラップ(シャッター用)
- 滑り止め
- プロジェクターに固定するベルト
回路図
ライブラリ
ServoライブラリとDMXSerialを使用しました。
DMXSerialライブラリは以下のArduinoに対応しています。
- Arduino Micro
- Arduino Leonardo
- Arduino Mega
- Arduino Nano
- Arduino Nano Every
- Arduino Uno
- Arduino Uno WiFi REV2
- Arduino Yún
スケッチ
#include <DMXSerial.h>
#include <Servo.h>
Servo servo;//サーボモーターのインスタンス設定
int startCh = 1;//DMXアドレス設定
void setup(){
servo.attach(9);//サーボモーターの信号線を9番ピンに接続
DMXSerial.init(DMXReceiver);
}
void loop() {
unsigned long lastPacket = DMXSerial.noDataSince();
if (lastPacket < 5000) {
byte data = DMXSerial.read(startCh);
servo.write(data / 1.41);//dataの値に合わせてサーボ角0~180度に動かす
}
}
基本的なスケッチは以下のサイトを参考にしました。ありがとうございました。
startChでDMXアドレスを指定します。
servo.writeは、data(DMX入力値)が0~255で来るので、1.41で割って大体角度を合わせてます。もっといい方法がありそうな気がします。
改善したいところ
- DIPスイッチでDMXアドレスを指定できるようにする
- シャッターをアルミ板にする
- 小さなボード(Arduino Nano Everyなど)を使用する
- もう少し静かなモーターを使用する
- 直径23㎜くらいの、キャノンコネクタを取り付けるのにちょうどいいホールソーを使用する
実際に作ってみて
コロナ禍で時間ができたときにarduinoを触ってみてはいたのですが、はじめて形にしてみて、いろいろ学びがありました。
Arduino選びを間違えたり、その結果ケースのサイズがギリギリになったり、ケースの加工が結構大変なこととか…
でも、DMXでいろいろなものを操作できる気がして夢が広がりました。
参考記事
ArduinoでDMXを受信する - Re: note (hatenablog.jp)
Arduino UnoとLTC485を使ってLチカしてます。基本のスケッチ、LTC485のつなぎ方、DMXが受信できているか確認するのに大変参考になりました。
プロジェクターシャッターの作り方 – masa's factory blog (masa-factory.jp)
大まかなつくり、Servoライブラリの使い方等参考にしています。
TouchDesignerからDMXを使ってLEDとモーターをArduinoで制御 – Kinetic Chochin|WaV Media (wwwavvv.com)
キネティックライト、いつかつくってみたいです。細かいことですが、DMXのIN・OUT端子ってどう繋ぐんだ?となったので、助かりました。