Appunti sul DMX-512

Sono riuscito a pilotare un dispositivo DMX-512 con la Raspberry Pi tramite una interfaccia RS485. Questi sono gli appunti di quello che ho fatto per riuscirci.

DMX512, spesso abbreviato a DMX (Digital MultipleX), è uno standard di comunicazione digitale usato principalmente per il controllo dell'illuminazione di scena nell'industria dello spettacolo, per controllare numerose luci ed effetti da una console di regia. Recentemente è stato introdotto anche in ambito civile per l'illuminazione architetturale (fonte Wikipedia).

Essenzialmente è una seriale RS485 a 250.000 Kbps 8N2

Tramite questo programma Python sono riuscito a pilotare un dispositivo DMX-512 collegato tramite un adattatore RS485 mappato su una porta USB in una configurazione molto simile a quella che adotteremo per il controller CM3-Home.

Prova in Python

Apre la porta seriale su cui è mappato l'adattatore RS485 ed invia tre sequenze di comandi a tutti i 512 possibili dispositivi indirizzabili su un bus DMX512. Il dispositivo che ho provato occupa 6 indirizzi ed è stato programmato dal suo pannello per rispondere dall'indirizzo 0 al 5 (A001)

Il dispositivo usato è questo VDPL300CB User Manual ed il programma di prova accende in sequenza i led rosso, verde e blu.

import serial
import time

ser = serial.Serial("/dev/ttyUSB0")
ser.baudrate = 250000
ser.bytesize = serial.EIGHTBITS
ser.parity = serial.PARITY_NONE
ser.stopbits = serial.STOPBITS_TWO
ser.xonoff = False

def sendCmd(red,green,blue):
    ser.send_break(duration=0.25)
    ser.write(chr(0))

    ser.write(chr(0))
    ser.write(chr(red))
    ser.write(chr(green))
    ser.write(chr(blue))
    ser.write(chr(0))
    ser.write(chr(0))

    for i in range(512-6):
        ser.write(chr(0))

    ser.flush()

while True:
    for red in range (0,255,50):
        sendCmd(red,0,0)

    for green in range (0,255,50):
        sendCmd(0,green,0)

    for blue in range (0,255,50):
        sendCmd(0,0,blue)

ser.close()

Sergio Tanzilli (Autore - Progettista hw & sw - Imprenditore - Musicista dilettante, classe 1964)
Fondatore di Area SX srl, Acme Systems srl e del TanzoLab, si occupa dal 1974 di elettronica digitale, dal 1978 di microprocessori, dal 1992 di microcontroller, dal 1995 di Linux e pubblicazioni su Web, dal 2005 di progettazione, produzione e commercializzazione di schede Linux Embedded.
http://www.tanzilli.com - http://www.acmesystems.it - https://github.com/tanzilli - sergio@tanzilli.com

The TanzoLab Project

Il TanzoLab è una iniziativa senza fini di lucro, nata da un'idea di Sergio Tanzilli socio fondatore di Acme Systems srl nel Novembre 2015, per trasferire ad appassionati di elettronica e informatica, professionisti e aziende nel settore, le conoscenze necessarie per poter creare prodotti embedded adatti per la produzione industriale.

Le attività del TanzoLab si svolgono ogni mercoledi sera, salvo casi speciali, dalle ore 18:30 presso i locali della Acme Systems srl e consistono in:

  • Talk monotematici a cura di professionisti in vari settori tecnologici
  • Workshop pratici su elettronica embedded, produzione e informatica
  • Progettazione e realizzazione di nuovi prodotti embedded per l'IT

Le attività vengono coordinate tramite questo sito, in cui vengono pubblicati tutti i lavori svolti o in via di sviluppo, e tramite un gruppo Telegram con cui per interagire direttamente via chat con gli altri membri.