Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

DMX RGB LED Luar Ruangan

Komponen dan persediaan

Arduino Nano R3
× 1
Adafruit PCA9685 16PWM Saluran I2C
× 1
PCB sendiri
× 1

Aplikasi dan layanan online

Arduino IDE
kontrol DMX freestyler

Tentang proyek ini

Hai teman-teman, saya sudah memiliki banyak lampu yang dikendalikan DMX di dalam rumah tetapi juga ingin memiliki beberapa di luar. Karena lampu RGB DMX ini agak mahal (sekitar 200 - 300€), saya mencari alternatif.

Apa yang saya temukan adalah banjir LED RGB yang sangat murah dengan unit kontrol IR. Ini sekitar 8€ / 10W RGB.

Jadi, yang harus saya lakukan adalah mengonversinya untuk memahami DMX.

Untuk menekan biaya dan ruang PCB yang dibutuhkan, semua 5 banjir hanya memiliki satu otak Arduino di kotak terpisah. Setiap lampu memiliki PWM 3 saluran yang dipicu PCB sumber arus konstan dan kabel konektor D-Sub 9. PCB ini sangat cocok dengan kompartemen kecil di bagian bawah lampu. Setiap saluran untuk LED disetel ke 350mA.

Semua 5 lampu terhubung ke kotak pusat dengan arduino dan penerima DMX nirkabel

Di dalam kotak ini adalah:

  • Supply daya 12V 3,5A
  • Pengisi daya ponsel 12V - 5V
  • Ardunino Nano pada PCB sendiri untuk konverter DMX (RS485)
  • Ekstensi PWM Ardufruit 16 saluran melalui I2C
  • Penerima DMX nirkabel
  • Distribusi PCB untuk kabel pita D-Sub
  • Banyak lem panas biar kedap air

Itu bertahan sejauh ini 3 minggu dalam hujan lebat, kotaknya tertutup rapat dan segelnya kedap air.

PCB tempat saya memasang Nano bersifat universal untuk semua proyek DMX saya, ia dapat mengubah sinyal bus DMX ke Ardunio dan juga merupakan breakout untuk bus I2C dan / atau semua 6 saluran PWM dengan MosFET (BUZ11). Saya juga menggunakannya dengan MosFET untuk memperbarui lampu bagian dalam ke DMX.

Jadi semuanya menghasilkan 5 lampu yang dikontrol secara individual (di sini untuk pagar kaca saya) yang dikontrol melalui DMX nirkabel melalui PC / ponsel.

Dalam unduhan, Anda akan menemukan file elang untuk PCB, salin&tempel sketsa Arduino saya, dan file definisi untuk lampu di perangkat lunak kontrol PC Freestyler.

DMX-Adresses adalah hard-code untuk memulai alamat 200 dan kemudian 5x 3 saluran R, G dan B tanpa saluran peredup.

Di Arduino-Sketch saya harus memanipulasi nilai untuk saluran merah, karena LED merah jauh lebih terang daripada hijau dan biru dan karena itu tidak akan bercampur menjadi putih murni.

Atau ada satu sketsa untuk pengujian / perbaikan bug di mana Anda dapat mengatur nilai RGB secara langsung melalui terminal Ardunio IDE

Total biaya untuk 5 lampu sekitar 110€, semua suku cadang (kecuali lampu) bersumber dari Reichelt.de, semua PCB dibuat oleh platinenbelichter.de (rekomendasi besar!)

Jangan ragu untuk memodifikasi atau mengoptimalkan semua!

Sampai jumpa,

Sebastian

Kode

  • Versi DMX
  • Versi masukan USB
  • perlengkapan untuk Freestyler
Versi DMXArduino
Program kontrol untuk lampu RGB 5x 3channel
// 15 PWM pada LED 5 RGB / DMX Start-Address 200 / 5x 3channel 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;pengaturan batal() { Kawat.mulai(); // bergabung dengan i2c bus (alamat opsional untuk master) pwm.begin(); pwm.setPWMreq(120); // Ini adalah frekuensi PWM maksimum#ifdef TWBR // simpan bitrate I2C uint8_t twbrbackup =TWBR; // harus diubah setelah memanggil Wire.begin() (di dalam pwm.begin()) TWBR =12; // upgrade ke 400KHz!#endif // DMX set up dmx_slave.enable(); dmx_slave.setStartAddress (200); // setel semua PWM ke tinggi -> LED mati 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() { // input DMX untuk (int j =0; j <=14; j++) { channel[j] =dmx_slave.getChannelValue (j+1); } // fine tune color channelOut[0] =map(channel[0], 0, 255, 0, 1400); // kurangi LED merah 1 channelOut[1] =peta(channel[1], 0, 255, 0, 4095); channelOut[2] =peta(channel[2], 0, 255, 0, 4095); channelOut[3] =peta(channel[3], 0, 255, 0, 1400); // kurangi LED merah 2 channelOut[4] =map(channel[4], 0, 255, 0, 4095); channelOut[5] =peta(channel[5], 0, 255, 0, 4095); channelOut[6] =peta(channel[6], 0, 255, 0, 1400); // kurangi LED merah 3 channelOut[7] =peta(channel[7], 0, 255, 0, 4095); channelOut[8] =peta(channel[8], 0, 255, 0, 4095); channelOut[9] =peta(channel[9], 0, 255, 0, 1400); // kurangi LED merah 4 channelOut[10] =map(channel[10], 0, 255, 0, 4095); channelOut[11] =peta(saluran[11], 0, 255, 0, 4095); channelOut[12] =peta(channel[12], 0, 255, 0, 1400); // kurangi LED merah 5 channelOut[13] =map(channel[13], 0, 255, 0, 4095); channelOut[14] =peta(channel[14], 0, 255, 0, 4095); //menetapkan nilai untuk (int i =0; i <=14; i++) { if (channelOut[i] ==0) { pwm.setPWM(i, 4096, 0 ); } else { pwm.setPWM(i, 0, 4095 - channelOut[i] ); } }}
Versi masukan USBArduino
Versi debug dengan input langsung untuk lampu Nr. dan nilai RGB
// 15 PWM pada LED 5 RGB#include #include // disebut dengan cara ini, ia menggunakan alamat default 0x40Adafruit_PWMServoDriver pwm =Adafruit_PWMServoDriver();// Anda bisa panggil juga dengan alamat berbeda yang Anda inginkan//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 biru =0;pengaturan batal() { Kawat.begin(); // bergabung dengan i2c bus (alamat opsional untuk master) Serial.begin(9600); Serial.println("Menunggu input:LED, R, G, B, [setiap 0-255]"); pwm.mulai(); pwm.setPWMreq(120); // Ini adalah frekuensi PWM maksimum // jika Anda ingin benar-benar mempercepat, Anda dapat masuk ke mode 'fast 400khz I2C' // beberapa perangkat i2c tidak begitu menyukai ini jadi jika Anda berbagi bus, tonton / / keluar untuk ini!#ifdef TWBR // simpan bitrate I2C uint8_t twbrbackup =TWBR; // harus diubah setelah memanggil Wire.begin() (di dalam pwm.begin()) TWBR =12; // tingkatkan ke 400KHz!#endif // setel semua PWM ke tinggi -> LED mati 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() { //masukkan warna while (Serial.available()> 0) { ch =Serial.parseInt(); merah =Serial.parseInt(); hijau =Serial.parseInt(); biru =Serial.parseInt(); if (Serial.read() =='\n') {} ch =constrain(ch, 0, 4); merah =kendala(merah, 0, 255); hijau =kendala(hijau, 0, 255); biru =kendala(biru, 0, 255); // mencetak tiga angka :Serial.print("nilai baru:"); Serial.print("LED="); Serial.print(ch, DEC); Serial.print("R="); Serial.print(merah, DES); Serial.print (", G="); Serial.print(hijau, DES); Serial.print (", B="); Serial.println(biru, DES); } sakelar (ch) { kasus 0:saluran[0] =merah; saluran[1] =hijau; saluran [2] =biru; merusak; kasus 1:saluran[3] =merah; saluran[4] =hijau; saluran[5] =biru; merusak; kasus 2:saluran[6] =merah; saluran[7] =hijau; saluran[8] =biru; merusak; kasus 3:saluran[9] =merah; saluran[10] =hijau; saluran[11] =biru; merusak; kasus 4:saluran[12] =merah; saluran[13] =hijau; saluran[14] =biru; merusak; } // fine tune color channelOut[0] =map(channel[0], 0, 255, 0, 1400); // kurangi LED merah 1 channelOut[1] =peta(channel[1], 0, 255, 0, 4095); channelOut[2] =peta(channel[2], 0, 255, 0, 4095); channelOut[3] =peta(channel[3], 0, 255, 0, 1400); // kurangi LED merah 2 channelOut[4] =map(channel[4], 0, 255, 0, 4095); channelOut[5] =peta(channel[5], 0, 255, 0, 4095); channelOut[6] =peta(channel[6], 0, 255, 0, 1400); // kurangi LED merah 3 channelOut[7] =peta(channel[7], 0, 255, 0, 4095); channelOut[8] =peta(channel[8], 0, 255, 0, 4095); channelOut[9] =peta(channel[9], 0, 255, 0, 1400); // kurangi LED merah 4 channelOut[10] =map(channel[10], 0, 255, 0, 4095); channelOut[11] =peta(saluran[11], 0, 255, 0, 4095); channelOut[12] =peta(channel[12], 0, 255, 0, 1400); // kurangi LED merah 5 channelOut[13] =map(channel[13], 0, 255, 0, 4095); channelOut[14] =peta(channel[14], 0, 255, 0, 4095); //menetapkan nilai untuk (int i =0; i <=14; i++) { if (channelOut[i] ==0) { pwm.setPWM(i, 4096, 0 ); } else { pwm.setPWM(i, 0, 4095 - channelOut[i] ); } }}
perlengkapan untuk FreestylerBatchFile
definisi saluran deskripsi untuk program kontrol DMX pada PC
BuzzComments:""Outdoor LED3 0 0 RBG Outdoor.gif0000000 1 123RedGreenBlueMacros 2 0 0 0 1 0 02550000002550255025502550255025502550000-0-0-0-1Sliders 0 

Skema

basis Nano universal dengan input DMX dan output PWM / I2C universaldmx_2ixt4yqoce.sch universaldmx_a0KdrmJqGU.brd5x 3 ch. Distribusi (15x PWM) dengan input 12V (+/-) verteiler_dmx_a0M4khDOMv.sch verteiler_dmx_P6etUU6zsN.brd3x 350mA / 12V sumber dengan input PWM 3xksq_rework_2VYUHjd5Xl.sch 3xksq_rework_4rpvCLaFrs.brd 3xksq_rework_qp87kzXQGy.txt universaldmx_GtNeOjMWZL.txt

Proses manufaktur

  1. DIY LUMAZOID Arduino Music Visualizer
  2. Pengontrol DMX yang Dioperasikan Web
  3. Lampu Meja Interaktif Terkendali Gerakan
  4. Arduino dengan Bluetooth untuk Mengontrol LED!
  5. Arduino Quadruped
  6. Melawan Virus Corona:Timer Cuci Tangan Sederhana
  7. Pencampur Warna RGB Arduino
  8. Mengontrol Matriks LED dengan Arduino Uno
  9. DIY Arduino RADIONICS Treatment MMachine
  10. Game Roulette LED