Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

DMX RGB LED extérieur

Composants et fournitures

Arduino Nano R3
× 1
Adafruit PCA9685 16PWM Canaux I2C
× 1
propres PCB
× 1

Applications et services en ligne

Arduino IDE
contrôle DMX freestyler

À propos de ce projet

Salut les gars, j'ai déjà beaucoup de lumières contrôlées par DMX à l'intérieur de la maison mais je voulais aussi en avoir à l'extérieur. Comme ces lumières RGB DMX sont assez chères (une env. 200 - 300 €), j'ai cherché des alternatives.

Ce que j'ai trouvé, ce sont ces inondations LED RVB vraiment bon marché avec des unités de contrôle IR. Ceux-ci sont d'environ 8€ / 10W RGB.

Donc, tout ce que j'avais à faire était de les convertir pour comprendre le DMX.

Pour réduire les coûts et l'espace PCB nécessaire, les 5 inondations n'ont qu'un seul cerveau Arduino dans une boîte séparée. Chaque lumière a une source de courant constant déclenchée par PWM à 3 canaux et un câble de connecteur D-Sub 9. Ce PCB s'intègre parfaitement dans le petit compartiment au bas de la lumière. Chaque canal de la LED est réglé sur 350mA.

Les 5 lumières sont connectées à un boîtier central avec l'arduino et le récepteur DMX sans fil

À l'intérieur de cette boîte se trouvent :

  • Alimentation 12V 3,5A
  • Chargeur de téléphone portable 12 V - 5 V
  • Ardunino Nano sur son propre PCB pour convertisseur DMX (RS485)
  • Extension PWM 16 canaux Ardufruit sur I2C
  • Récepteur DMX sans fil
  • Circuits de distribution pour câbles plats Sub-D
  • Beaucoup de colle chaude pour le rendre étanche

Il a survécu jusqu'à présent 3 semaines sous de fortes pluies, les coutures de la boîte et les joints sont étanches à l'eau.

Le PCB sur lequel j'ai monté le Nano est universel pour tous mes projets DMX, il peut convertir les signaux du bus DMX vers l'Ardunio et est également un breakout pour le bus I2C et/ou les 6 canaux PWM avec MosFET (BUZ11). Je l'ai également utilisé avec les MosFET pour mettre à jour les lampes intérieures en DMX.

Ainsi, l'ensemble donne 5 lampes contrôlées individuellement (ici pour ma balustrade en verre) qui sont contrôlées via DMX sans fil sur un PC / téléphone portable.

Dans les téléchargements, vous trouverez les fichiers Eagle pour les PCB, mon croquis Arduino copier-coller et le fichier de définition pour la lampe dans le logiciel de contrôle PC Freestyler.

Les adresses DMX sont codées en dur pour démarrer l'adresse 200, puis 5x 3 canaux R, G et B sans aucun canal de gradation.

Dans l'Arduino-Sketch, j'ai dû manipuler les valeurs des canaux rouges, car la LED rouge est beaucoup plus lumineuse que le vert et le bleu et ne se mélangerait donc pas au blanc pur.

Alternativement, il existe une esquisse pour les tests / corrections de bugs où vous pouvez définir les valeurs RVB directement via le terminal Ardunio IDE

Au total, le coût total pour 5 lampes est d'environ 110 €, toutes les pièces (à l'exception des lampes) provenant de Reichelt.de, tous les circuits imprimés fabriqués par platinenbelichter.de (grande recommandation !)

N'hésitez pas à tout modifier ou optimiser !

Au revoir,

Sébastien

Code

  • Version DMX
  • Version d'entrée USB
  • fixation pour Freestyler
Version DMXArduino
Programme de contrôle pour 5 lumières RVB 3 canaux
// 15 PWM sur 5 LED RVB / Adresse de démarrage DMX 200 / 5x RVB 3 canaux#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 rouge =0;int vert =0;int bleu =0; void setup() { Wire.begin(); // rejoindre le bus i2c (adresse facultative pour le maître) pwm.begin(); pwm.setPWMFreq(120); // Il s'agit de la fréquence PWM maximale#ifdef TWBR // enregistrer le débit I2C uint8_t twbrbackup =TWBR; // doit être modifié après avoir appelé Wire.begin() (à l'intérieur de pwm.begin()) TWBR =12; // mise à niveau vers 400 KHz!#endif // configuration DMX dmx_slave.enable (); dmx_slave.setStartAddress (200); // régler tous les PWM sur haut -> LED éteintes 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() { // Entrée DMX pour (int j =0; j <=14; j++) { channel[j] =dmx_slave.getChannelValue (j+1); } // affiner la couleur channelOut[0] =map(channel[0], 0, 255, 0, 1400); // réduit la LED rouge 1 channelOut[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); // réduit la LED rouge 2 channelOut[4] =map(channel[4], 0, 255, 0, 4095); channelOut[5] =map(channel[5], 0, 255, 0, 4095); channelOut[6] =map(canal[6], 0, 255, 0, 1400); // réduit la LED rouge 3 channelOut[7] =map(channel[7], 0, 255, 0, 4095); channelOut[8] =map(canal[8], 0, 255, 0, 4095); channelOut[9] =map(channel[9], 0, 255, 0, 1400); // réduit la LED rouge 4 channelOut[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); // réduit la LED rouge 5 channelOut[13] =map(channel[13], 0, 255, 0, 4095); channelOut[14] =map(channel[14], 0, 255, 0, 4095); //attribuer des valeurs pour (int i =0; i <=14; i++) { if (channelOut[i] ==0) { pwm.setPWM(i, 4096, 0 ); } else { pwm.setPWM(i, 0, 4095 - channelOut[i] ); } }}
Version d'entrée USBArduino
Version de débogage avec entrée directe pour la lampe Nr. et valeurs RVB
// 15 PWM sur 5 LEDs RVB#include #include // appelé de cette façon, il utilise l'adresse par défaut 0x40Adafruit_PWMServoDriver pwm =Adafruit_PWMServoDriver();// vous pouvez appelez-le également avec une adresse différente que vous voulez//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(); // rejoindre le bus i2c (adresse facultative pour le maître) Serial.begin(9600); Serial.println("En attente d'entrée :LED, R, G, B, [chacun 0-255]"); pwm.begin(); pwm.setPWMFreq(120); // C'est la fréquence PWM maximale // si vous voulez vraiment accélérer les choses, vous pouvez passer en mode 'fast 400khz I2C' // certains appareils i2c n'aiment pas tellement ça, donc si vous partagez le bus, regardez / / out for this!#ifdef TWBR // save I2C bitrate uint8_t twbrbackup =TWBR; // doit être modifié après avoir appelé Wire.begin() (à l'intérieur de pwm.begin()) TWBR =12; // mise à niveau vers 400 KHz!#endif // définit tous les PWM sur haut -> LED éteintes 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() { //couleur d'entrée while (Serial.available()> 0) { ch =Serial.parseInt(); rouge =Serial.parseInt(); vert =Serial.parseInt(); bleu =Serial.parseInt(); if (Serial.read() =='\n') {} ch =constrain(ch, 0, 4); rouge =contrainte(rouge, 0, 255); vert =contraindre (vert, 0, 255); bleu =contraindre (bleu, 0, 255); // affiche les trois nombres :Serial.print ("new values:"); Serial.print (" LED="); Serial.print(ch, DEC); Serial.print (" R="); Serial.print(rouge, DEC); Serial.print (", G="); Serial.print(vert, DEC); Serial.print (", B="); Serial.println(bleu, DEC); } switch (ch) { case 0 :canal[0] =rouge ; canal[1] =vert ; canal[2] =bleu ; Pause; cas 1 :canal[3] =rouge ; canal[4] =vert ; canal[5] =bleu ; Pause; cas 2 :canal[6] =rouge; canal[7] =vert ; canal[8] =bleu ; Pause; cas 3 :canal[9] =rouge ; canal[10] =vert ; canal[11] =bleu ; Pause; cas 4 :canal[12] =rouge ; canal[13] =vert ; canal[14] =bleu ; Pause; } // affiner la couleur channelOut[0] =map(channel[0], 0, 255, 0, 1400); // réduit la LED rouge 1 channelOut[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); // réduit la LED rouge 2 channelOut[4] =map(channel[4], 0, 255, 0, 4095); channelOut[5] =map(channel[5], 0, 255, 0, 4095); channelOut[6] =map(canal[6], 0, 255, 0, 1400); // réduit la LED rouge 3 channelOut[7] =map(channel[7], 0, 255, 0, 4095); channelOut[8] =map(canal[8], 0, 255, 0, 4095); channelOut[9] =map(channel[9], 0, 255, 0, 1400); // réduit la LED rouge 4 channelOut[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); // réduit la LED rouge 5 channelOut[13] =map(channel[13], 0, 255, 0, 4095); channelOut[14] =map(channel[14], 0, 255, 0, 4095); //attribuer des valeurs pour (int i =0; i <=14; i++) { if (channelOut[i] ==0) { pwm.setPWM(i, 4096, 0 ); } else { pwm.setPWM(i, 0, 4095 - channelOut[i] ); } }}
fixation pour FreestylerBatchFile
définition des canaux description pour le programme de contrôle DMX sur le PC
BuzzCommentaires :""Outdoor LED3 0 0 RBG Outdoor.gif0000000 1 123RedGreenBlueMacros 2 0 0 0 1 0 0255000000255025502550255025502550255000-0-0-0-1Sliders 0 

Schémas

Base nano universelle avec entrée DMX et sortie PWM/I2C universaldmx_2ixt4yqoce.sch universaldmx_a0KdrmJqGU.brd5x 3 ch. Distribution (15x PWM) avec entrée 12V (+/-) verteiler_dmx_a0M4khDOMv.sch verteiler_dmx_P6etUU6zsN.brd3x source 350mA/12V avec entrées PWM 3xksq_rework_2VYUHjd5Xl.sch 3xksq_rework_4rpvCLaFrs.brd 3xksq_rework_qp87kzXQGy.txt universaldmx_GtNeOjMWZL.txt

Processus de fabrication

  1. Visualiseur de musique Arduino DIY LUMAZOID
  2. Contrôleur DMX Web
  3. Lumière de table interactive à commande gestuelle
  4. Arduino avec Bluetooth pour contrôler une LED !
  5. Arduino quadrupède
  6. Lutte contre le coronavirus :minuterie de lavage des mains simple
  7. Mixeur de couleurs Arduino RVB
  8. Contrôler une matrice LED avec Arduino Uno
  9. Traitement DIY Arduino RADIONICS MMachine