屋外対応DMX制御RGB LED投光器 – 低コスト・高性能・自作PCB
必要な部品と材料
| Arduino Nano R3 × 1 (中央制御ユニット用) |
| Adafruit PCA9685 16ch PWMドライバー (I2C) × 1 |
| 自作PCB × 複数 (DMX受信基板、15ch PWM分配基板、3ch 350mA定電流ドライバー基板 × 5台分) |
| 安価なIRリモコン付きRGB LED投光器 (10W級) × 5台 (約8€/台) |
| 12V 3.5A 電源 × 1 |
| 12V→5V USB充電モジュール (スマホ用) × 1 |
| ワイヤレスDMX受信機 × 1 |
| D-Sub 9ピンコネクター & リボンケーブル × 5セット |
| 防水ボックス、ホットグルー、シリコーンシーラント |
使用ソフトウェア
- Arduino IDE
- Freestyler DMX制御ソフト (PC/モバイル)
プロジェクト概要
市販のDMX対応屋外RGB投光器は1台200〜300€と高価です。そこで、IRリモコン付きの安価なRGB LED投光器 (約8€/10W) を購入し、内部のLEDドライバーを自作のDMX対応3ch定電流ドライバー (350mA/ch) に置き換え、5台を中央のArduino Nano + PCA9685 (16ch PWM) で一括制御するシステムを構築しました。ワイヤレスDMX受信機を介してPC/スマホのFreestylerから全15ch (5台 × RGB) を個別制御可能。総費用約110€で実現しました。
システムアーキテクチャ
[Freestyler DMX] → [Wireless DMX TX] → [Wireless DMX RX]
↓
[Arduino Nano + Custom DMX Shield (RS485)]
↓ I2C
[PCA9685 16ch PWM]
↓ PWM (15ch)
+---------------------+---------------------+
| | |
[3ch CC Driver] [3ch CC Driver] [3ch CC Driver]
(LED 1: R/G/B) (LED 2: R/G/B) (LED 3: R/G/B)
| | |
[3ch CC Driver] [3ch CC Driver] (LED 4, 5 同様)
(LED 4: R/G/B) (LED 5: R/G/B)
ハードウェア詳細
1. 中央制御ボックス (防水)
- Arduino Nano 搭載ユニバーサルDMX基板: RS485トランシーバー (MAX485等) でDMX信号受信、I2C/PWMブレークアウト付き
- PCA9685モジュール: I2Cで16ch 12bit PWM生成 (4096段階)
- 12V電源 → 5V降圧でArduino/PCA9685駆動
- ワイヤレスDMX受信機 (バッテリー駆動可能)
- D-Sub 9ピン × 5 分配基板 (リボンケーブル接続)
- ホットグルー + シリコーンで完全防水 (3週間の豪雨で浸水なし)
2. LED投光器側 (各台)
- 元のIRドライバー基板を取り外し、自作 3ch 350mA 定電流ドライバー基板に交換
- 基板は投光器底部の小さなコンパートメントにジャストフィット
- D-Sub 9ピンケーブルで中央ボックスと接続 (PWM信号 + 12V電源 + GND)
- 各ch: 赤/緑/青 それぞれ 350mA 定電流駆動
3. 色補正 (ホワイトバランス調整)
赤色LEDが緑/青より大幅に明るいため、DMX値 0-255 を PWM 0-4095 にマッピングする際、赤chのみ上限を 1400 に制限してホワイトバランスを取っています。
// 赤chのみマッピング上限を下げる
channelOut[0] = map(channel[0], 0, 255, 0, 1400); // LED1 赤
channelOut[1] = map(channel[1], 0, 255, 0, 4095); // LED1 緑
channelOut[2] = map(channel[2], 0, 255, 0, 4095); // LED1 青
// LED2〜5 も同様
ソフトウェア (Arduinoスケッチ)
DMX版 (本番用)
#include <Conceptinetics.h>
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
#define DMX_SLAVE_CHANNELS 15
DMX_Slave dmx_slave(DMX_SLAVE_CHANNELS);
int channel[16], channelOut[16];
void setup() {
Wire.begin();
pwm.begin();
pwm.setPWMFreq(120); // 最大PWM周波数
#ifdef TWBR
uint8_t twbrbackup = TWBR;
TWBR = 12; // I2C 400kHz 高速化
#endif
dmx_slave.enable();
dmx_slave.setStartAddress(200); // DMX開始アドレス
// 全ch初期化 (LED消灯 = PWM High = 4096)
for (int i = 0; i <= 14; i++) pwm.setPWM(i, 4096, 0);
}
void loop() {
// DMX受信 (15ch)
for (int j = 0; j <= 14; j++) channel[j] = dmx_slave.getChannelValue(j+1);
// 色補正マッピング
channelOut[0] = map(channel[0], 0, 255, 0, 1400); // R1
channelOut[1] = map(channel[1], 0, 255, 0, 4095); // G1
channelOut[2] = map(channel[2], 0, 255, 0, 4095); // B1
// ... (ch3-14 も同様、赤chのみ1400上限)
// PCA9685出力 (Active Low駆動想定)
for (int i = 0; i <= 14; i++) {
if (channelOut[i] == 0) pwm.setPWM(i, 4096, 0);
else pwm.setPWM(i, 0, 4095 - channelOut[i]);
}
}
USBデバッグ版 (シリアルから直接RGB指定)
// 形式: "LED番号(0-4), R(0-255), G(0-255), B(0-255)\n"
// 例: "0, 255, 128, 0\n" → LED1をオレンジに
// 完全なコードはプロジェクトページの Code セクションを参照
Freestyler 用フィクスチャ定義
Buzz Comments: "" Outdoor LED 3 0 0 RBG Outdoor.gif 0 0 0 0 0 0 0 1 1 2 3 Red Green Blue
Macros 2 0 0 0 1 0 0 255 0 0 0 0 0 0 255 0 255 0 255 0 255 0 255 0 255 0 255 0 255 0 0 0-0-0-0 -1 Sliders 0
PCB設計データ (Eagle形式)
- ユニバーサルNanoベース (DMX入力 + PWM/I2C出力):
universaldmx.sch/.brd - 5×3ch (15ch PWM) 分配基板:
verteiler_dmx.sch/.brd - 3ch 350mA/12V 定電流ドライバー:
3xksq_rework.sch/.brd
基板製造: platinenbelichter.de 推奨
コスト内訳 (5台分)
| 項目 | 費用 (概算) |
|---|---|
| RGB LED投光器 10W × 5 | 約 40€ |
| Arduino Nano + PCA9685 + DMXトランシーバー | 約 25€ |
| 自作PCB一式 (製造費込み) | 約 30€ |
| 電源、コネクター、ケーブル、防水材料 | 約 15€ |
| 合計 | 約 110€ (市販品の 1/10 以下) |
改良・拡張アイデア
- ESP32/ESP8266でWiFi/Art-Net/sACN対応化
- 各投光器にマイコン (ATtiny等) を搭載し、単体でも動作可能に
- 環境光センサーで自動調光
- DMXアドレスをディップスイッチ/EEPROMで可変に
- 防水コネクター (M12等) 採用で信頼性向上
製造プロセス
- 自作LUMAZOID:Arduino音楽ビジュアライザーDIYガイド
- Web制御DMX照明システム:Arduino Megaマスターコントローラー
- ジェスチャー制御 RGB テーブルランプ – インタラクティブなハンズフリー照明
- ArduinoでBluetooth経由でLEDを制御 – シンプルDIYガイド
- スマートArduino四足歩行ロボットの製作:ステップバイステップガイド
- Arduino手洗いタイマー:COVID-19対策のシンプルDIYツール
- Arduino RGB LEDカラーミキサー:初心者向けDIYプロジェクト
- Arduino Unoで8×8 LEDマトリックスを制御:ステップバイステップガイド
- DIY ArduinoラジオニクスEMR治療デバイスの構築
- DIY LEDルーレットゲーム – Arduino Nanoで作る1人用アーケードゲーム
- Arduino駆動スマート自動駐車場システムの製作