工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

DMX RGBLED屋外

コンポーネントと消耗品

>
Arduino Nano R3
× 1
Adafruit PCA968516PWMチャネルI2C
× 1
独自のPCB
× 1

アプリとオンラインサービス

>
Arduino IDE
freestylerDMXコントロール

このプロジェクトについて

こんにちはみんな、私はすでに家の中にたくさんのDMX制御のライトを持っていますが、外にもいくつか持っていたいと思っていました。これらのRGBDMXライトはかなり高価なので(1つは約200〜300ユーロ)、代替品を探しました。

<図>

私が見つけたのは、これらの非常に安価なRGBLEDがIRコントロールユニットで溢れていることでした。これらは約8€/ 10WRGBです。

<図>

だから、私がしなければならなかったのは、DMXを理解するためにこれらを変換することだけです。

コストと必要なPCBスペースを抑えるために、5つのフラッドすべてで、別のボックスに1つのArduinoブレインしかありません。各ライトには、3チャネルのPWMトリガー定電流源PCBとD-Sub9コネクタケーブルがあります。このPCBは、ライトの下部にある小さなコンパートメントに完全に収まります。 LEDの各チャネルは350mAに設定されています。

<図>

<図>

5つのライトはすべて、arduinoとワイヤレスDMXレシーバーを備えた中央のボックスに接続されています

<図>

<図>

このボックスの中には次のものがあります:

  • 12V3,5A電源
  • 12V-5V携帯電話充電器
  • DMX(RS485)コンバーター用の独自のPCB上のArdunino Nano
  • I2Cを介したArdufruit16チャネルPWM拡張
  • ワイヤレスDMXレシーバー
  • D-Subリボンケーブル用の配布PCB
  • 水密にするためのホットグルーがたくさんあります

これまでのところ、大雨の中で3週間生き延び、箱を縫い合わせ、密閉は水密です。

NanoをマウントしたPCBは、すべてのDMXプロジェクトでユニバーサルであり、DMXバス信号をArdunioに変換でき、I2Cバスおよび/またはMosFET(BUZ11)を備えた6つのPWMチャネルすべてのブレークアウトでもあります。また、MosFETと一緒に使用して、内部ランプをDMXに更新しました。

<図>

したがって、すべてのトゲッターは、PC /携帯電話を介してワイヤレスDMXを介して制御される5つの個別に制御されたランプ(ここでは私のガラスの手すり)になります。

<図>

<図>

<図>

ダウンロードには、PCBのイーグルファイル、Arduinoスケッチのコピー&ペースト、およびPC制御ソフトウェアFreestylerのランプの定義ファイルが含まれています。

DMXアドレスは、アドレス200を開始し、次に調光器チャネルなしで5x 3チャネルR、G、Bを開始するようにハードコーディングされています。

Arduino-Sketchでは、赤のLEDが緑や青よりもはるかに明るいため、真っ白に混ざらないため、赤のチャネルの値を操作する必要がありました。

または、ArdunioIDEターミナルから直接RGB値を設定できるテスト/バグ修正用のスケッチが1つあります

5つのランプの合計コストは約110ユーロで、すべての部品(ライトを除く)はReichelt.deから供給され、すべてのPCBはplatinenbelichter.deによって製造されています(大きな推奨事項です!)

すべてを自由に変更または最適化してください!

さようなら、

セバスチャン

コード

  • DMXバージョン
  • USB入力バージョン
  • フリースタイラー用の備品
DMXバージョン Arduino
5x3チャンネルRGBライトの制御プログラム
 // 5つのRGBLEDで15PWM / DMX開始アドレス200 / 5x3チャンネルRGB#include  #include  #include  Adafruit_PWMServoDriver pwm =Adafruit_PWMServoDriver(); #define DMX_SLAVE_CHANNELS 15DMX_Slave dmx_slave(DMX_SLAVE_CHANNELS); int channel [16]; int channelOut [16]; int value [16]; int ch =0; int red =0; int green =0; int blue =0; void setup(){Wire.begin(); // i2cバスに参加します(マスターのアドレスはオプションです)pwm.begin(); pwm.setPWMFreq(120); //これは最大PWM周波数です#ifdefTWBR // I2Cビットレートを保存しますuint8_ttwbrbackup =TWBR; // Wire.begin()(pwm.begin()内)を呼び出した後に変更する必要がありますTWBR =12; // 400KHzにアップグレードします!#endif // DMXセットアップdmx_slave.enable(); dmx_slave.setStartAddress(200); //すべてのPWMをハイに設定-> LEDをオフpwm.setPWM(0、4096、0); pwm.setPWM(1、4096、0); pwm.setPWM(2、4096、0); pwm.setPWM(3、4096、0); pwm.setPWM(4、4096、0); pwm.setPWM(5、4096、0); pwm.setPWM(6、4096、0); pwm.setPWM(7、4096、0); pwm.setPWM(8、4096、0); pwm.setPWM(9、4096、0); pwm.setPWM(10、4096、0); pwm.setPWM(11、4096、0); pwm.setPWM(12、4096、0); pwm.setPWM(13、4096、0); pwm.setPWM(14、4096、0);} void loop(){// DMX入力for(int j =0; j <=14; j ++){channel [j] =dmx_slave.getChannelValue(j + 1); } //色を微調整するchannelOut [0] =map(channel [0]、0、255、0、1400); //赤色LEDを減らします1channelOut [1] =map(channel [1]、0、255、0、4095); channelOut [2] =map(channel [2]、0、255、0、4095); channelOut [3] =map(channel [3]、0、255、0、1400); //赤色LEDを減らします2channelOut [4] =map(channel [4]、0、255、0、4095); channelOut [5] =map(channel [5]、0、255、0、4095); channelOut [6] =map(channel [6]、0、255、0、1400); //赤色LEDを減らします3channelOut [7] =map(channel [7]、0、255、0、4095); channelOut [8] =map(channel [8]、0、255、0、4095); channelOut [9] =map(channel [9]、0、255、0、1400); //赤色LEDを減らします4channelOut [10] =map(channel [10]、0、255、0、4095); channelOut [11] =map(channel [11]、0、255、0、4095); channelOut [12] =map(channel [12]、0、255、0、1400); //赤色LEDを減らします5channelOut [13] =map(channel [13]、0、255、0、4095); channelOut [14] =map(channel [14]、0、255、0、4095); //(int i =0; i <=14; i ++){if(channelOut [i] ==0){pwm.setPWM(i、4096、0);に値を割り当てます} else {pwm.setPWM(i、0、4095-channelOut [i]); }}} 
USB入力バージョン Arduino
ランプ番号の直接入力を使用したデバッグバージョン。およびRGB値
 // 5つのRGBで15PWM LED#include  #include  //このように呼び出され、デフォルトアドレス0x40Adafruit_PWMServoDriver pwm =Adafruit_PWMServoDriver(); //を使用できます。また、必要な別のアドレスで呼び出します// Adafruit_PWMServoDriver pwm =Adafruit_PWMServoDriver(0x41); int channel [15]; int channelOut [15]; int value [15]; int ch =0; int red =0; int green =0; int blue =0; void setup(){Wire.begin(); // i2cバスに参加します(マスターのアドレスはオプションです)Serial.begin(9600); Serial.println( "入力を待機しています:LED、R、G、B、[各0-255]"); pwm.begin(); pwm.setPWMFreq(120); //これは最大PWM周波数です//本当にスピードアップしたい場合は、「高速400khz I2C」モードに入ることができます//一部のi2cデバイスはこれをあまり好まないので、バスを共有している場合は、見てください/ /このために!#ifdef TWBR // I2Cビットレートを保存uint8_ttwbrbackup =TWBR; // Wire.begin()(pwm.begin()内)を呼び出した後に変更する必要がありますTWBR =12; // 400KHzにアップグレードします!#endif //すべてのPWMをハイに設定します-> LEDをオフにしますpwm.setPWM(0、4096、0); pwm.setPWM(1、4096、0); pwm.setPWM(2、4096、0); pwm.setPWM(3、4096、0); pwm.setPWM(4、4096、0); pwm.setPWM(5、4096、0); pwm.setPWM(6、4096、0); pwm.setPWM(7、4096、0); pwm.setPWM(8、4096、0); pwm.setPWM(9、4096、0); pwm.setPWM(10、4096、0); pwm.setPWM(11、4096、0); pwm.setPWM(12、4096、0); pwm.setPWM(13、4096、0); pwm.setPWM(14、4096、0);} void loop(){//入力色while(Serial.available()> 0){ch =Serial.parseInt();赤=Serial.parseInt();緑=Serial.parseInt();青=Serial.parseInt(); if(Serial.read()=='\ n'){} ch =Constraint(ch、0、4);赤=制約(赤、0、255);緑=制約(緑、0、255);青=制約(青、0、255); // 3つの数値を出力します:Serial.print( "new values:"); Serial.print( "LED ="); Serial.print(ch、DEC); Serial.print( "R ="); Serial.print(red、DEC); Serial.print( "、G ="); Serial.print(緑、DEC); Serial.print( "、B ="); Serial.println(青、12月); } switch(ch){case 0:channel [0] =red; channel [1] =緑; channel [2] =青;壊す;ケース1:channel [3] =赤; channel [4] =緑; channel [5] =青;壊す;ケース2:channel [6] =赤; channel [7] =緑; channel [8] =青;壊す;ケース3:channel [9] =赤; channel [10] =緑; channel [11] =青;壊す;ケース4:channel [12] =赤; channel [13] =緑; channel [14] =青;壊す; } //色を微調整するchannelOut [0] =map(channel [0]、0、255、0、1400); //赤色LEDを減らします1channelOut [1] =map(channel [1]、0、255、0、4095); channelOut [2] =map(channel [2]、0、255、0、4095); channelOut [3] =map(channel [3]、0、255、0、1400); //赤色LEDを減らします2channelOut [4] =map(channel [4]、0、255、0、4095); channelOut [5] =map(channel [5]、0、255、0、4095); channelOut [6] =map(channel [6]、0、255、0、1400); //赤色LEDを減らします3channelOut [7] =map(channel [7]、0、255、0、4095); channelOut [8] =map(channel [8]、0、255、0、4095); channelOut [9] =map(channel [9]、0、255、0、1400); //赤色LEDを減らします4channelOut [10] =map(channel [10]、0、255、0、4095); channelOut [11] =map(channel [11]、0、255、0、4095); channelOut [12] =map(channel [12]、0、255、0、1400); //赤色LEDを減らします5channelOut [13] =map(channel [13]、0、255、0、4095); channelOut [14] =map(channel [14]、0、255、0、4095); //(int i =0; i <=14; i ++){if(channelOut [i] ==0){pwm.setPWM(i、4096、0);に値を割り当てます} else {pwm.setPWM(i、0、4095-channelOut [i]); }}} 
Freestyler BatchFile のフィクスチャ
PC上のDMX制御プログラムのチャネル記述の定義
 BuzzComments: "" Outdoor LED3 0 0 RBG Outdoor.gif0000000 1 123RedGreenBlueMacros 2 0 0 0 1 0 0255000000255025502550255025502550255000-0-0-0-1Sliders 0 

回路図

DMX入力とPWM / I2C出力を備えたユニバーサルNanoベース Universaldmx_2ixt4yqoce.sch Universaldmx_a0KdrmJqGU.brd5x 3ch。 (15x PWM)12V(+/-)入力の分配 verteiler_dmx_a0M4khDOMv.sch verteiler_dmx_P6etUU6zsN.brd3x 350mA / 12Vソース(PWM入力付き) 3xksq_rework_2VYUHjd5Xl.sch 3xksq_rework_4rpvCLaFrs.brd 3xksq_rework_qp87kzXQGy.txt Universaldmx_GtNeOjMWZL.txt

製造プロセス

  1. DIY LUMAZOID Arduino Music Visualiser
  2. Web操作のDMXコントローラー
  3. ジェスチャー制御のインタラクティブテーブルライト
  4. LEDを制御するBluetoothを搭載したArduino!
  5. Arduino Quadruped
  6. コロナウイルスと戦う:シンプルな手洗いタイマー
  7. ArduinoRGBカラーミキサー
  8. ArduinoUnoでLEDマトリックスを制御する
  9. DIY ArduinoRADIONICSトリートメントマシン
  10. LEDルーレットゲーム
  11. Arduino自動駐車ガレージ