Visualizzazione post con etichetta DMX. Mostra tutti i post
Visualizzazione post con etichetta DMX. Mostra tutti i post

martedì 19 dicembre 2017

Arduino come ricevitore DMX tramite ethernet

E' capitato di dover installare una o più  teste mobili e doverle pilotare tramite dmx, tutto questo comporta dover tirare molti cavi, ma con arduino che riceve il segnale dmx via LAN e si interfaccia alle teste mobili, tutto diventa più semplice e veloce.

Tutto quello che serve è un arduino uno, una ethernet shield w5100, un cip MAX485 e una resistenza; i segnali dmx saranno inviati tramite un software preposto: Q light Controller Plus tramite l'uscita artnet.

Il collegamento è abbastanza semplice e alla portata di chiunque abbia una minima dimestichezza con la saldatura a stagno.




Il pin 4 viene collegato al pin 3 di arduino (pin output di default utilizzato dalla libreria DmxSimple)

Arduino deve essere dotato di una w5100 (non ho provato con la enc28j60) .


/****************
Inizio sketch
****************/
#include <Artnet.h>
#include <Ethernet.h>
#include <EthernetUdp.h>
#include <SPI.h>
#include <DmxSimple.h>

Artnet artnet;


byte ip[] = {192, 168, 10, 229};
byte mac[] = {0x04, 0xE9, 0xE5, 0x00, 0x69, 0xEC};

void setup()
{
  Serial.begin(115200);
  //Serial.begin(9600);
  artnet.begin(mac, ip);
  //pinMode(TXEnablePin,OUTPUT);
}

void loop()
{
  if (artnet.read() == ART_DMX)
  {
    // print out our data
    /*Serial.print("universe number = ");
    Serial.print(artnet.getUniverse());
    Serial.print("\tdata length = ");
    Serial.print(artnet.getLength());
    Serial.print("\tsequence n0. = ");
    Serial.println(artnet.getSequence());*/
   
    Serial.print("DMX data: ");
    if (artnet.getUniverse()==2) {
      for (int i = 0 ; i < artnet.getLength() ; i++)
      {
        DmxSimple.write(i+1, artnet.getDmxFrame()[i]);
        /*Serial.print(i+1);
        Serial.print(", ");
        Serial.println(artnet.getDmxFrame()[i]);*/
      
      }
    }
    Serial.println();
    Serial.println();
  }
}
/****************
FINE sketch
****************/


Con questo semplice sketch Arduino è in grado di ricevere il dmx (sull'universo 2 in questo caso ) e lo inoltrerà direttamente al MAX485 che potrà comandare il dispositivo DMX.