Jump to content



  • DIY project 2: Ethernet DMX512-A Controller (w/ Art-Net v3 support)


    Εισαγωγή

     

    Ήρθε η ώρα για το δεύτερο DIY project! Η αλήθεια είναι ότι με προβλημάτισε ιδιαίτερα ποιο θα είναι το δεύτερο project, καθώς δεν ήθελα η καμπύλη δυσκολίας να είναι απότομη. Τελικά κατέληξα σε μια ενδιάμεση λύση, δηλαδή σε ένα σχετικά δύσκολο project, αν θελήσει κάποιος να το φτιάξει εκ του μηδενός, το οποίο όμως αν δεν μπει κάποιος στις τεχνικές λεπτομέρειες είναι πραγματικά πολύ εύκολο. Αυτή τη φορά θα ασχοληθούμε με φωτισμό, αλλά το καλύτερο είναι πως το project θα είναι ένα ωραίο hacking! Λέγοντας hacking μην πάει το μυαλό σας στο κακό, μιας και σαν έννοια δεν είναι πάντα κάτι κακό. Hacking κατά πολλούς πλέον είναι το να παίρνει κάποιος π.χ. μια συσκευή και να επεκτείνει ή να αλλάζει τον τρόπο λειτουργίας και τον σκοπό της, ώστε να κάνει μια άλλη λειτουργία. Οι λόγοι για να κάνει κάποιος αυτό είναι πολλοί, αλλά για το παρόν project είναι για να γλυτώσουμε χρήματα. Θα δούμε και στην συνέχεια ποιο θα είναι αυτό το hacking, αλλά ας δούμε πρώτα με τι θα ασχοληθούμε αυτή τη φορά.

     

    Όπως είπαμε το project αυτό αφορά τον φωτισμό. Ο φωτισμός όπως γνωρίζουμε μπορεί να χρησιμοποιηθεί για πάρα πολλούς λόγους, από τον απλό οικιακό φωτισμό που μπορεί να είναι λειτουργικός ή διακοσμητικός, μέχρι τον επαγγελματικό φωτισμό που βλέπουμε στις συναυλίες. Ο φωτισμός είναι ένας μεγάλος και αναπτυσσόμενος τομέας της τεχνολογίας, στον οποίο έχει υπάρξει μεγάλη έρευνα και ανάπτυξη, ειδικά μετά την επικράτηση, την μαζική παραγωγή και τις μειωμένες ενεργειακές απαιτήσεις των LED. Στο συγκεκριμένο project θα ασχοληθούμε με τον επαγγελματικό φωτισμό και συγκεκριμένα με το DMX, αλλά θα τον εφαρμόσουμε σε οικιακή χρήση, όπως συμβαίνει πλέον πολύ συχνά.

     


    DMX

     

    Ψάχνοντας κάποιος στο google για “DMX”, μάλλον το πρώτο αποτέλεσμα που θα δει είναι ένας κακομούτσουνος ράπερ. Τουλάχιστον αυτό έπαθα εγώ... Ευτυχώς δεν έχει να κάνει τίποτα με το project μας. Ψάχνοντας όμως για DMX512, που είναι η σωστή ορολογία θα πάρει το αποτέλεσμα που θέλουμε. Όσοι έχουν ασχοληθεί με το DJing ίσως να έχουν ακούσει τι είναι το DMX, για τους υπόλοιπους θα προσπαθήσω να το αναφέρω περιληπτικά.

     

    Το DMX (Digital MultipleX) λοιπόν, είναι ψηφιακό πρωτόκολλο επικοινωνίας το οποίο χρησιμοποιείται στον επαγγελματικό φωτισμό και μεταφέρει πληροφορίες από μια συσκευή, η οποία ορίζεται σαν master σε άλλες συσκευές οι οποίες ορίζονται σαν slaves. Αυτή η σχέση master-slave είναι ακριβώς όπως ακούγεται, ο ένας διατάζει και οι άλλοι υπακούν. Ο master λοιπόν, είναι μια συσκευή η οποία ορίζει το πως θα λειτουργήσουν οι slave συσκευές, βάση όμως ορισμένων και συγκεκριμένων κανόνων που ορίζει το πρωτόκολλο. Το πρωτόκολλο DMX λοιπόν, είναι η γλώσσα με την οποία επικοινωνούν και μιλά ο master στους slaves. Επομένως στο παρόν άρθρο, η συσκευή που θα φτιάξουμε θα είναι ο master και slaves θα είναι τα φώτα.

     

    Το DMX λοιπόν είχε ξεκινήσει από το USITT, ο οποίος είναι ένας οργανισμός που ασχολείται με την τεχνολογία των οπτικοακουστικών τεχνών και είδε από νωρίς την ανάγκη για ένα τέτοιο πρωτόκολλο επικοινωνίας, ώστε να μπορούν να ελέγχονται ταυτόχρονα πολλά φώτα με διαφορετική πληροφορία το καθένα. Τελικά σήμερα το DMX512-Α, όπως είναι το πλήρες όνομά του, αποτελεί ένα ANSI standard, δηλαδή οι προδιαγραφές του είναι πλήρως καθορισμένες και ελέγχονται από μια συγκεκριμένη αρχή. Αυτό γίνεται ώστε να υπάρχει συμβατότητα μεταξύ των συσκευών των κατασκευαστών και να μην κάνει ο καθένας ότι θέλει, αν και δεν υπάρχει συγκεκριμένη πιστοποίηση την οποία θα πρέπει να πάρει ο κάθε κατασκευαστής. Οπότε είναι αρμοδιότητα του κατασκευαστή να πιστοποιεί μόνος του ότι το προϊόν του είναι συμβατό με το πρωτόκολλο και τα standards.

     

    Πλέον το DMX έχει ξεφύγει από τον καθαρά επαγγελματικό φωτισμό και δεν χρησιμοποιείται μόνο σε φωτισμό συναυλιών ή clubs και μαγαζιών. Έχει εισέλθει εδώ και χρόνια ακόμα και στον οικιακό φωτισμό και δεν είναι λίγοι αυτοί που το προτιμούν ανάμεσα από άλλους ισχυρούς ανταγωνιστές (όπως το DALI), λόγο του μικρότερου κόστους και της πληθώρας περιφερειακών και φωτιστικών στοιχείων.

     


    Πρωτόκολλο DMX512-A

     

    Το πρωτόκολλο του DMX512-A είναι πολύ απλό και αυτός είναι ο λόγος ο οποίος αποκαλείται και βασιλιάς του φωτισμού. Φυσικά έχει εξελιχθεί πάρα πολύ, όπως θα δούμε στην συνέχεια, αλλά θα δούμε όμως μόνο τα βασικά του χαρακτηριστικά. Επειδή είναι πρωτόκολλο επικοινωνίας χωρίζεται σε τρεις βασικές κατηγορίες. Αυτές είναι ο τρόπος μετάδοσης, η τοπολογία και το καθαυτό πρωτόκολλο.

     

    Τρόπος μετάδοσης
    Ο τρόπος μετάδοσης γίνεται μέσω ενός χάλκινου καλωδίου και το πρωτόκολλο μετάδοσης είναι το ΕΙΑ-485 γνωστό στους παλιούς και ως RS-485, μιας και ήταν το διαφορικό αδερφάκι του RS-232 με το οποίο έχουν πολλές ομοιότητες. Εδώ να πούμε ότι δεν πρέπει να συγχέεται το πρωτόκολλο μετάδοσης με αυτό της επικοινωνίας, το πρώτο αφορά το ηλεκτρικό κομμάτι και τον φυσικό τρόπο μετάδοσης με την χρήση ενός μέσου, ενώ το δεύτερο την κωδικοποίηση των δεδομένων πάνω στο μέσο. Τα καλώδια του RS-485 γενικά μεγάλο κόστος, αλλά ευτυχώς μπορούν να χρησιμοποιηθούν άλλα πολύ πιο φθηνά καλώδια, ειδικά στον οικιακό φωτισμό, όπως π.χ. καλώδια Ethernet.

     

    Τοπολογία
    Η τοπολογία του DMX512-A, είναι η λεγόμενη daisy chain, δηλαδή μια αλυσίδα. Στην τοπολογία αυτή πρώτος είναι ο master που έχει μια έξοδο η οποία συνδέεται στην είσοδο του πρώτου slave. Ο slave έχει επίσης μια έξοδο η οποία συνδέεται στην είσοδο του επόμενου slave και αυτό συνεχίζεται για όλους τους slave που υπάρχουν στην αλυσίδα. Στο τέλος της αλυσίδας υπάρχει μια τερματική αντίσταση, η οποία εμποδίζει την δημιουργία στάσιμων κυμάτων, καθώς ηλεκτρικά το RS-485 είναι πρωτόκολλο διαφορικής τάσης. H τερματική αντίσταση πρέπει να έχει τιμή ίση με την εμπέδηση του καλωδίου και συνήθως είναι 120Ω. Η συνδεσμολογία φαίνεται στην παρακάτω εικόνα.
     

     

    Simple Dmx Universe

     

    DMX512-A daisy chain (1 DMX Universe)

     

    Μια τέτοια τοπολογία μπορεί να έχει μέχρι και 512 συσκευές (ή διευθύνσεις) και ονομάζεται “DMX Universe”. Ένας master μπορεί να υποστηρίζει περισσότερα από ένα DMX Universes, αλλά πάντα σε ένα Universe δεν μπορούν να υπάρχουν πάνω από 512 διευθύνσεις.

     

    Πρωτόκολλο
    Το πρωτόκολλο του DMX είναι ένα 8Ν2 σειριακό πρωτόκολλο με ταχύτητα 250Kbps. Αυτό σημαίνει ότι κάθε Byte πληροφορίας ξεκινά με ένα start bit, έχει 8 bit δεδομένων, δεν έχει parity bit και στο τέλος ακολουθούν 2 stop bits. Οπότε κάθε Byte πληροφορίας έχει 11 bits. Κάθε πακέτο περιέχει μέχρι και 512 Bytes πληροφορίας, αλλά όμως μπορεί να είναι και λιγότερα. Η διάκριση μεταξύ των πακέτων γίνεται χρησιμοποιώντας κάποιους παλμούς συγχρονισμού.

     

    Ο πρώτος παλμός ονομάζεται Break ο οποίος αυτό που κάνει είναι να κρατάει για κάποια συγκεκριμένη χρονική στιγμή την στάθμη της γραμμής στο low, δηλαδή στα 0V. Αυτός ο παλμός πρέπει να είναι το ελάχιστο 92μsec ώστε να μπορούν όλες οι slave συσκευές να τον αναγνωρίσουν. Ο δεύτερος παλμός ονομάζεται Mark-After-Break (ή MAB) και αντίθετα με το Break κρατάει την στάθμη της γραμμής στο high, δηλαδή στο 1V και πρέπει να διαρκεί το ελάχιστο 12μsec. Μετά ακολουθεί το πρώτο byte (11 bits) το οποίο έχει πάντα τιμή 0x00 και ονομάζεται start code και βάση αυτού συγχρονίζουν όλοι οι slave στην αλυσίδα. Τα επόμενα bytes που ακολουθούν είναι η ουσιαστική πληροφορία.

     

    Στις εικόνες παρακάτω παραθέτω τους δικούς μου χρονισμούς, μετρώντας την συσκευή με το δικό μου firmware, που θα δούμε λεπτομέρειές του αργότερα. Όπως θα δείτε δεν επέλεξα τις ελάχιστες τιμές που ορίζει το DMX standard, αλλά έδωσα "αέρα" ανάμεσα από κάθε πακέτο και μεγάλωσα το MAB. Στην επόμενη εικόνα βλέπουμε μια σειρά από bytes.


     

     

    DMX data byte

     

    DMX512-A data bytes

     

    Όπως βλέπουμε στην φωτογραφία από τον παλμογράφο, το data rate είναι 250Khz δηλαδή 250Kbps, όπως ορίζει το DMX standard.


     

     

    DMX packet

     

    DMX512-A packet

     

    Στην παραπάνω φωτογραφία βλέπουμε πως η περίοδος του κάθε πακέτου είναι 60ms, οπότε με την ταχύτητα αυτή μπορούμε να πετύχουμε, μιλώντας για RGB δεδομένα, μέχρι και 16.5 fps. Πως προκύπτει αυτό; Αν θεωρήσουμε ότι έχουμε μια DMX οθόνη με 170 RGB pixels (όπως αυτές που χρησιμοποιούνται σε συναυλίες ή στα στάδια), όσα pixels δηλαδή υποστηρίζει ένα DMX universe, τότε αν το κάθε pixel ανανεώνεται κάθε 60ms (σε ένα πακέτο DMX παίρνουν και τα 3 χρώματα τιμή), τότε σε ένα δευτερόλεπτο το κάθε pixel ανανεώνεται 1000/60=16.6 φορές. Οπότε έχουμε 16.6 frames per second. Το θεωρητικό maximum του DMX512-A είναι τα 44fps, το οποίο είναι πάρα πολύ καλό και μπορούμε να το πετύχουμε και με την δική μας συσκευή, απλά ο DMX RGB decoder που χρησιμοποιώ στο άρθρο (όπως και στην πραγματικότητα), δεν μπορεί να πιάσει αυτές τις ταχύτητες, οπότε μειώνοντας τον χρόνο αυτό, μου έλυσε αρκετά προβλήματα.

     


    Περισσότερα για το DMX512-A

     

    Μόλις τελειώσει αυτή η αρχική διαδικασία συγχρονισμού, που αναλύσαμε στην προηγούμενη σελίδα, ακολουθούν 512 bytes δεδομένων, τα οποία μόλις τελειώσουν επαναλαμβάνεται πάλι όλη η διαδικασία από την αρχή. Το κάθε byte δεδομένων τώρα, ονομάζεται slot (ή διεύθυνση αν θέλετε). Επομένως κάθε slot μπορεί να πάρει τιμές από 0 έως 0xFF (ή 0-255). Την τιμή αυτή μπορείτε να την σκεφτείτε σαν στάθμη έντασης του φωτός για ευκολία, αν και εξαρτάται περισσότερο από τον τύπο συσκευής, οπότε μπορεί να αντιπροσωπεύει και μοίρες ή κάτι άλλο.

     

    Ας δούμε όμως λίγο πιο αναλυτικά τι είναι αυτά τα slots και πως χρησιμοποιούνται. Κάθε συσκευή φωτισμού (ένας slave δηλαδή), πρέπει να έχει τουλάχιστον ένα slot. Το slot αυτό προγραμματίζεται επάνω στην συσκευή συνήθως με την χρήση κάποιων dip-switches και μπορεί να πάρει τιμές από 0 έως 255. Μία συσκευή μπορεί να έχει παραπάνω από ένα slots, οπότε όταν ορίζουμε στην συσκευή ποιο slot θα πάρει, τότε αυτόματα η συσκευή ξέρει ότι θα τις ανήκουν το πρώτο slot που έχει προγραμματιστεί συν όσα άλλα υποστηρίζει. Επομένως αν θέλετε να δώσετε σε μια συσκευή που υποστηρίζει 5 slots, την διεύθυνση 100, τότε αυτή θα ακούει από μόνη της στα slots από 100 έως και 104, δηλαδή 5 slots. Επομένως η επόμενη συσκευή θα πρέπει να ξεκινά από το 105. Τι σημαίνει τώρα το slot για την κάθε συσκευή;

     

    Μια συσκευή για παράδειγμα που είναι ένας απλός προβολέας, έχει μόνο ένα φωτιστικό στοιχείο, οπότε μπορεί να καταλάβει μόνο ένα slot επάνω στην αλυσίδα (1 slot στο Universe δηλαδή). Οπότε στην αλυσίδα μπορούν να συνδεθούν μέχρι και 512 τέτοιοι προβολείς. Αν όμως έχουμε έναν άλλο προβολέα ο οποίος έχει τρία φώτα, δηλαδή είναι RGB προβολέας (Red/Green/Blue) που μπορεί να δημιουργήσει μια παλέτα από διαφορετικά χρώματα, τότε αυτός θα καταλάβει 3 slots στην αλυσίδα! Δηλαδή ένα slot για κάθε χρώμα. Οπότε αν του δώσουμε την διεύθυνση 1 τότε αυτός θα ακούει στα slots από 1 έως και 3 και το κάθε slot θα αντιστοιχεί σε ένα από τα χρώματα R, G και B και κάθε slot θα είναι μια στάθμη από 0 έως 255 για κάθε χρώμα. Θεωρητικά με τον τρόπο αυτό μπορούν να αναπαρασταθούν όλα τα χρώμα. Έτσι αν έχουμε μόνο RGB προβολείς στο Universe, τότε μπορούν να τοποθετηθούν μέχρι 512/3=170 τέτοιοι προβολείς και να περισσέψουν και 2 slots (3x170+2=512).

     

    Αυτές είναι οι πιο απλές περιπτώσεις, αλλά υπάρχουν όμως όπως θα έχετε δει στα διάφορα clubs, προβολείς που υποστηρίζουν pan/tilt (δηλαδή περιστρέφονται) και γενικά έχουν διάφορους βαθμούς ελευθερίας κίνησης. Κάθε βαθμός λοιπόν ελευθερίας είναι ουσιαστικά ένα slot από το DMX Universe. Επομένως αν έχουμε έναν WRGB (= RGB με ξεχωριστό λευκό) προβολέα με βαθμούς ελευθερίας κίνησης , τότε θα έχει 4 slots για το χρώμα, ένα slot για την οριζόντια περιστροφή, ένα για την κάθετη, ένα για την περιστροφική κ.λ.π. Εδώ βλέπουμε ότι η τιμή του κάθε slot πλέον δεν είναι μόνο μια στάθμη έντασης φωτεινότητας όπως στο WRGB, αλλά οι υπόλοιπες τιμές αφορούν μοίρες. Αντίστοιχα σε μια συσκευή καπνού η τιμή του slot αντιπροσωπεύει την ροή του καπνού κ.ο.κ.

     


    DMX Controllers

     

    Αν και προσωπικά δεν ασχολούμαι με τον φωτισμό και δεν έχω κάποια σχέση με το επαγγελματικό αυτό αντικείμενο (είτε του DJ του οποίου ο φωτισμός πλέον αποτελεί αναπόσπαστο κομμάτι του προγράμματός του), με εντυπωσίαζε πάντα σαν τεχνολογία και ακόμα περισσότερο με εντυπωσίαζε το κόστος των υλικών του. Δηλαδή οι DMX συσκευές ακόμα είναι ακριβές να τις αποκτήσει κανείς, παρόλο που οι Κινέζοι έχουν εισέλθει χρόνια σε αυτή την αγορά. Επομένως ήθελα να φτιάξω ένα DMX controller (master δηλαδή) με φθηνά υλικά, ο οποίος θα υποστηρίζει τουλάχιστον ένα DMX Universe. Οι πιο “γνωστοί” controllers αυτή τη στιγμή στον χώρο είναι της DMXkingκαι οι OpenDMX της Enttec.

     

    Υπάρχουν διάφοροι τύποι DMX controllers και χωρίζονται σε δυο βασικές κατηγορίες αυτές που έχουν USB interface και αυτές που έχουν Ethernet interface. Οι USB είναι οι φθηνότερες φυσικά και το κόστος μια τέτοιας συσκευής είναι περίπου $150, αν υποστηρίζει και buffering. Το buffering ουσιαστικά σημαίνει ότι η συσκευή έχει έναν buffer, ο οποίος επαναλαμβάνει πάντα το τελευταίο πακέτο που έλαβε, ώστε να μειώνεται το flickering στα φώτα. Επίσης δεν χρειάζεται το PC ή η κονσόλα που στέλνει συνέχεια δεδομένα στον controller ή να αναλαμβάνει τον χρονισμό και επομένως μειώνεται το bandwidth και η επεξεργαστική ισχύ που χρειάζεται.

     

     

    open Dmx Usb

     

    Enntec OpenDMX USB controller

     

    Ο άλλος τύπος DMX controller είναι ο Ethernet (ή Art-Net όπως θα δούμε παρακάτω) και αυτοί οι τύποι controller είναι πιο ακριβοί, ξεκινώντας από $150 στην πιο απλή μορφή τους. Οι πιο “γνωστές” συσκευές αυτού του τύπου είναι το OpenDMX ODE της Enttec στα €199 και το eDMX1 της DMXking. Φυσικά υπάρχουν και άλλες πολλές που μπορείτε να βρείτε στο eBay, απλά αυτές είναι μέχρι στιγμής οι πιο διαδομένες στον χώρο, αν και οι δυναμικές στον χώρο αλλάζουν γρήγορα και μπορεί να βρει κανείς ακόμα και controllers από το Ισραήλ που να υποστηρίζουν μέχρι και 6 Universes στα ίδια χρήματα.

     

     

    open Dmx Eth

     

    Enntec OpenDMX Ethernet controller

     

    Και στις δυο περιπτώσεις των παραπάνω τύπων, το μόνο που αλλάζει είναι το interface της επικοινωνίας από την κονσόλα (π.χ. ένα PC) με τον controller (την συσκευή μας). Το υπόλοιπο κομμάτι, δηλαδή η επικοινωνίας του controller (master) με τις slave συσκευές, είναι ακριβώς το ίδιο. Οπότε για πιο λόγο να επιλέξει κανείς το ένα από το άλλο; O λόγος είναι απλός και έχει να κάνει με την συνδεσιμότητα και την επεκτασιμότητα. Στην περίπτωση του USB θα πρέπει πάντα ο controller να είναι δίπλα στην κονσόλα και ο αριθμός των DMX Universes (δηλαδή των controllers) περιορίζεται πάντα στον μέγιστο αριθμό των θυρών USB που έχει η κονσόλα. Στην περίπτωση όμως του Ethernet δεν υπάρχουν τέτοιοι περιορισμοί! Οπότε μπορούμε να έχουν έναν πολύ μεγαλύτερο αριθμό από DMX Universes και σε απόσταση πολύ μεγαλύτερη. Οπότε επέλεξα να κινηθώ προς το Ethernet.

     

    Τι θα λέγατε λοιπόν αν αντί να δώσουμε $150 ή €199 ευρώ για να πάρουμε μια τέτοια συσκευή φτιάχναμε μία μόνοι μας με... €15; Ναι και όμως, δεν χρειάζονται παραπάνω χρήματα.

     

    Πριν πάμε όμως σε αυτό το σημείο, ας πούμε λίγη ακόμα βαρετή θεωρία που αφορά τους Ethernet controllers.

     


    Art-Net και λοιποί δαίμονες

     

    Για να δουλέψει ένας Ethernet DMX controller, χρειάζονται κάποια πράγματα. Βασικά χρειάζονται κάποια πρωτόκολλα επικοινωνίας μεταξύ του controller και της κονσόλας, ώστε να μπορεί να μεταφερθεί η πληροφορία στον controller. Παλιά σε αυτό τον τομέα υπήρχε το χάος και η κάθε εταιρία είχε το δικό της πρωτόκολλο, αλλά πλέον έχουν υπερισχύσει 2-3 εκ των των οποίων το ένα ονομάζεται Art-Net. Υπάρχουν και άλλα πρωτόκολλα, όπως το sACN, αλλά δεν θα ασχοληθούμε με αυτό και δεν θα το υλοποιήσουμε μιας και το πρώτο χρησιμοποιείται παντού και συνεργάζεται με όλες τις Ethernet κονσόλες. Ένας Ethernet controller μπορεί να υποστηρίζει και περισσότερα από ένα πρωτόκολλα ή και όλα μαζί, αν φτάνουν οι δυνατότητες του hardware. Επίσης έχω υλοποιήσει και ένα δικό μου απλό πρωτόκολλο για να μπορεί κάποιος να πειραματιστεί πιο εύκολα, χωρίς να χρειάζεται να μπει στα υπόλοιπα δυσνόητα πρωτόκολλα.

     

    Το Art-Net είναι ένα UDP Ethernet πρωτόκολλο και δημιουργήθηκε από την Artistic License Engineering για τις δικές της ανάγκες, αλλά λόγο του ότι ο δημιουργός του επέλεξε να το κάνει ανοιχτό πρωτόκολλο, ήταν στιβαρό και τεχνικά βελτιστοποιημένο από τον ανταγωνισμό επικράτησε. Το Art-Net αυτή τη στιγμή έχει φτάσει στην τρίτη έκδοσή του και λεπτομέρειες γι' αυτό μπορείτε να διαβάσετε εδώ. Η δύναμη του Art-Net, μεταξύ άλλων, είναι ότι μπορεί να υποστηρίξει μέχρι και 32.768 DMX Universes. Δηλαδή μπορεί να υπάρχουν στο ίδιο δίκτυο μέχρι 32.768 controllers από 512 slots o καθένας ή σύνολο 16.777.216 φώτα, μόνο.

     

    Εδώ να επαναλάβω ότι το Art-Net αφορά μόνο την επικοινωνία του controller με την κονσόλα και όχι το ίδιο το DMX. Γι' αυτό θα δώσω και ένα παράδειγμα. Έστω ότι έχουμε μια κονσόλα (ένα PC δηλαδή) και θέλουμε να ελέγξουμε ένα DMX προβολέα με την χρήση ενός Ethernet controller. Τότε χρειαζόμαστε έναν Ethernet controller που να υποστηρίζει Art-Net πρωτόκολλο και στον οποίο επάνω του έχουμε συνδέσει μέσω RS-485 ένα DMX προβολέα. Άρα ο controller σαν master επικοινωνεί με τον slave προβολέα μέσω του DMX512-A πρωτοκόλλου, αλλά ο controller παίρνει τις εντολές από την κονσόλα μέσω Ethernet και του Art-Net πρωτοκόλλου. Δηλαδή τα DMX512-A δεδομένα ξεκινούν από την κονσόλα ενσωματωμένα μέσα στο Art-Net πρωτόκολλο, μόλις φτάσουν στον controller αυτός τα ξεφλουδίζει και αφαιρεί το Art-Net και στην συνέχεια επαναλαμβάνει τα DMX δεδομένα στο RS-485 κανάλι για να τα ακούσουν όλοι οι slaves πάνω στην αλυσίδα.

     

    Το Art-Net εκτός από τo DMX512-A υποστηρίζει το encapsulation (την ενσωμάτωση δηλαδή) και του RDM πρωτοκόλλου, για το οποίο δεν αναφέραμε τίποτα μέχρι στιγμής καθώς δεν θα το υλοποιήσουμε, γιατί αφορά μόνο επαγγελματικό και ακριβό εξοπλισμό. To RDM ή αλλιώς Remote Device Management protocol, είναι ένα πρωτόκολλο, το οποίο χρησιμοποιείται στον φωτισμό για να ελέγχει τις DMX συσκευές, να τις αναγνωρίζει πάνω στην αλυσίδα και να τις προγραμματίζει (π.χ. την διεύθυνση, αλλά και άλλες παραμέτρους). Όπως και το DMX512-A, το RDM είναι ελεγχόμενο πρωτόκολλο και υπόκειται στα ESTA standards και το αναφέρω για να υπάρχει μια πιο πλήρης εικόνα.

     

    Τέλος σαν το Art-Net υπάρχουν και άλλα IP πρωτόκολλα όπως το sACN/ACN, το οποίο είναι μεν πιο σύνθετο και πιο πλήρης καθώς υποστηρίζει και ανίχνευση συσκευών στο IP δίκτυο, αλλά δεν υπερισχύει του Art-Net σε κάτι ουσιαστικό στην χρήση. Γενικά μόνο αναφέρω ότι από άποψη δυσκολίας όσων αφορά την υλοποίηση του πρωτοκόλλου, περιέχει multicast και service discovery (SDP) δικτυακά πρωτόκολλα, τα οποία είναι φυσικά υλοποιήσιμα, αλλά απαιτούν μεγαλύτερη χωρητικότητα στην ROM του controller και μνήμη, τα οποία όμως στην κατασκευή μας είναι περιορισμένα.

     


    Κατασκευή

     

    Επιτέλους φτάσαμε στην κατασκευή. Απ' ότι έχετε καταλάβει μέχρι στιγμής για να υλοποιήσουμε έναν DMX controller, από άποψη hardware χρειαζόμαστε τρία πράγματα. Έναν επεξεργαστή, ένα Ethernet interface και ένα RS-485 interface. Για καλή μας τύχη, υπάρχουν πάρα πολλές έτοιμες συσκευές στο εμπόριο που έχουν αυτά τα χαρακτηριστικά και πωλούνται σε ιδιαίτερα χαμηλές τιμές. Μια τέτοια συσκευή λοιπόν θα χρησιμοποιήσουμε και εμείς και με το απαραίτητο software hacking θα την μετατρέψουμε σε έναν Ethernet DMX controller.

     

    Η συσκευή που θα χρησιμοποιήσουμε ονομάζεται USR-TCP232-24, η χρήση της είναι ως RS232/485 to Ethernet interface και μπορείτε να την αγοράσετε με €15 περίπου στο eBay!

     

     

    USR-TCP232-24

     

    USR-TCP232-24 RS-232/485 to Ethernet controller

     

    Αυτή η συσκευή έχει ακριβώς ότι χρειαζόμαστε και συγκεκριμένα έναν επεξεργαστή 32-bit ARM Cortex της NXP και συγκεκριμένα τον LPC1114/302, ένα DM9000 ISA to Ethernet MAC controller με ενσωματωμένο το 10/100 PHY, ένα RS-232 interface και ένα RS-485 interface. Ας δούμε λίγο περιληπτικά τα chips τα οποία βρίσκονται στην συσκευή αυτή.

     

    NXP LPC1114/302
    Αυτός είναι ένας 32-bit ARM Cortex επεξεργαστής με συχνότητα 50MHz, 32KByte flash ROM, 8KByte SRAM και ένα UART με full modem interface. Τα υπόλοιπα του χαρακτηριστικά δεν έχουν σημασία για το project μας. Ο επεξεργαστής αυτός θα κάνει όλη τη δουλειά. Θα επικοινωνεί μέσω του Ethernet interface με την κονσόλα, θα στέλνει τα DMX δεδομένα στο RS-485, θα παραμετροποιείται και θα προγραμματίζεται μέσω της σειριακής RS-232 και θα υλοποιεί εσωτερικά όλα τα πρωτόκολλα. Δηλαδή θα κάνει όλη τη δουλειά με το firmware που θα τρέχει.

     

    DM9000
    Το DM9000 της Davicom, είναι ένας ISA to Ethernet MAC controller με ενσωματωμένο ένα 10/100 PHY. Βαρύγδουπος τίτλος για ένα τόσο μικρό εξάρτημα. Το μόνο που κάνει ουσιαστικά είναι ότι αναλαμβάνει την επικοινωνία πάνω στο Ethernet δίκτυο. Έχει δικό του επεξεργαστή ο οποίος προγραμματίζεται σε πραγματικό χρόνο από τον ARM μέσω του firmware, ώστε να τελεί συγκεκριμένες λειτουργίες. Ο προγραμματισμός του αφορά το σετάρισμα του PHY ώστε να συνδεθεί σε ένα Ethernet δίκτυο και στην συνέχεια η αποστολή και παραλαβή των δεδομένων από αυτό. Αυτό ίσως είναι από τα δυσκολότερα κομμάτια στην υλοποίηση, γιατί οι παράμετροι είναι πάρα πολλές και η φύση του Ethernet τέτοια, που απαιτούνται γνώσεις όχι μόνο σε software, αλλά σε και σε hardware επίπεδο ώστε να λειτουργήσει σωστά. Είναι η βάση του Ethernet και λίγο πολύ όλες οι κάρτες δικτύου λειτουργούν με τον ίδιο τρόπο, μιας και το DM9000 το συναντά κανείς σε πολλές παλιές κάρτες δικτύου.

     

    RS-232/RS-485
    Το UART του ARM συνδέεται ταυτόχρονα σε ένα RS-232 και ένα RS-485 interface. Υπήρχε μια παλιότερη έκδοση του ίδιου PCB που επιλογή ανάμεσα στα δυο γινόταν μέσω jumpers, αλλά στην νέα έκδοση που υπάρχει πλέον στο eBay συνδέονται και τα δυο ταυτόχρονα. To RS-485 χρησιμοποιείται μόνο για την μετάδοση των DMX δεδομένων, ενώ το RS-232 επέλεξα να το χρησιμοποιώ για τον προγραμματισμό του controller και για να του σετάρω την MAC address, την IP και κάποιες άλλες παραμέτρους που θα δούμε αργότερα.

     

    Επομένως αυτή είναι η συσκευή που θα χρησιμοποιήσουμε. Θα την hack-άρουμε γράφοντας άλλο firmware και θα την κάνουμε αυτό που θέλουμε εμείς, δηλαδή έναν Ethernet DMX controller με υποστήριξη Art-Net.

     


    DMX slave

     

    Είδαμε λοιπόν ποιος θα είναι ο controller, αλλά με τα φώτα τι γίνεται; Θα χρειαστούμε κάποιο ακριβό εξοπλισμό DMX; Ευτυχώς όχι. Αυτό είναι είναι ένα ανεξάρτητο κομμάτι από το υπόλοιπο project, αλλά θα πρέπει να το δούμε γιατί δεν έχει νόημα να φτιάξουμε έναν controller χωρίς να έχει κάτι να ελέγχει.

     

    Επομένως αποφάσισα να φτιάξω ένα ρεαλιστικό σενάριο RGB φωτισμού για ένα σπίτι. Γι' αυτό θα χρειαστούμε μερικά μέτρα RGB ταινίες LED, 12V τροφοδοτικά για την τροφοδοσία των LED και ένα RGB DMX Decoder/Driver. Τι είναι το τελευταίο; Ο RGB DMX decoder είναι μια συσκευή η οποία θα μετατρέψει την RGB ταινία LED, σε έναν DMX slave και η συσκευή που θα χρησιμοποιήσουμε είναι η PX24506 και η τιμή της στο eBay είναι στα €15 περίπου. Αυτό είναι ένα εξτρά κόστος, όπως και οι ταινίες LED, αλλά όπως είπαμε δεν είναι μέρος του project.

     

     

    PX24506

     

    PX24506 3A 3 Channels RGB DMX Constant Voltage Decoder

     

    Αυτό που κάνει το PX24506 είναι ότι έχει μια είσοδο και μια έξοδο για DMX512-A, από την οποία είσοδο λαμβάνει τα DMX δεδομένα. Έχει μια είσοδο τροφοδοσίας 12V την οποία χρησιμοποιεί ο driver για να μετατρέψει τα DMX δεδομένα σε ρεύμα στα 3 κανάλια εξόδου RGB. Και τέλος έχει μια RGB έξοδο στην οποία συνδέεται η ταινία LED.

     

    Όπως βλέπετε και στην εικόνα του decoder έχει κάποια dip-switches. Αυτά όπως είχαμε αναφέρει και νωρίτερα είναι τα dip-switches τα οποία δίνουν διεύθυνση στον decoder και καθορίζουν τα slots τα οποία αποκωδικοποιεί. Επομένως αν έχει την διεύθυνση 0 (μην μπερδευτείτε με το slot 0 του DMX που χρησιμοποιείται για τον συγχρονισμό), τότε ο decoder όταν έρχεται ένα DMX πακέτο ξέρει ότι του ανήκουν τα slots 1 έως και 3, οπότε από αυτά θα αποκωδικοποιεί τις στάθμες για τα RGB και ο driver θα δίνει ένα ρεύμα αντίστοιχο της στάθμης σε κάθε κανάλι χρώματος.

     


    Firmware

     

    Όσον αφορά το firmware της συσκευής γι' αυτό το άρθρο, δεν θα δώσω το source code, αλλά μόνο το HEX αρχείο το οποίο χρειάζεται κάποιος ώστε να λειτουργήσει η συσκευή. Με το firmware αυτό η συσκευή έχει πλήρη λειτουργικότητα και υποστηρίζει DMX512-A και Art-Net v3. Επειδή το Art-Net είναι μεγάλο πρωτόκολλο και το API του υποστηρίζει πολλές λειτουργίες, έχω καλύψει τις πιο ουσιαστικές. Η πλήρης λίστα με τις υποστηριζόμενες λειτουργίες του API ακολουθεί στο τέλος αυτής της σελίδας.

     

    Για να γράψετε το firmware στην συσκευή θα χρειαστείτε ένα πρόγραμμα που λέγεται Flash Magic, μια σειριακή RS-232 θύρα και ένα null modem RS-232 καλώδιο. Την στιγμή που γράφεται το άρθρο, το Flash Magic είναι στην έκδοση 9.30, προσωπικά χρησιμοποιώ παλιότερη έκδοση, αλλά αυτό δεν θα πρέπει να σας επηρεάσει. Συνεχίζοντας, αν ο υπολογιστής σας δεν έχει σειριακή θύρα, τότε χρειάζεστε ένα USB-to-RS-232 καλώδιο, το οποίο συνδέεται σε μια USB θύρα του υπολογιστή και στην άλλη άκρη του έχει το κλασσικό DB9 αρσενικό βύσμα του RS-232. Επομένως συνδέετε την μια άκρη του καλωδίου στην θύρα USB και την άλλη στην RS-232 θύρα της πλακέτας.

     

    Στο σημείο αυτό, πριν προγραμματίσετε την πλακέτα θα πρέπει πρώτα να καταγράψετε την MAC address που έχει ήδη η συσκευή. Αυτό δεν είναι απαραίτητο βήμα, αλλά δεν είναι κακό να χρησιμοποιήσετε την ήδη υπάρχουσα MAC, κυρίως για να μην υπάρχουν conflicts πάνω στο δίκτυο σας. Αν δεν σας νοιάζει, μπορείτε να χρησιμοποιήσετε όποια θέλετε. Επομένως, για να διαβάσετε την ήδη υπάρχουσα MAC address, συνδέστε το βύσμα του Ethernet στην συσκευή και δώστε της τροφοδοσία. Περιμένετε μερικά δευτερόλεπτα να συνδεθεί στο δίκτυο και μετά υπάρχουν διάφοροι τρόποι να δείτε την MAC. Αν έχετε πχ κινητό android μπορείτε να χρησιμοποιήσετε το Fing ή κάτι άλλο αντίστοιχο αν έχετε κάποιο i-phone. Μια άλλη μέθοδος είναι να χρησιμοποιήσετε το πρόγραμμα που δίνει η εταιρία στο cd με το οποίο έρχεται με την συσκευή, το οποίο θα χρειαστεί ούτως ή άλλως να τρέξετε για να δώσετε IP διεύθυνση στο module. Αφού δώσετε IP με τον τρόπο που περιγράφεται στο manual, τότε κάνετε από ένα command prompt την συσκευή ping με την εντολή π.χ. “ping 192.168.1.7”, αν αυτή είναι η IP της πλακέτας. Επομένως με τον τρόπο αυτό ενημερώνεται το ARP table του υπολογιστή, οπότε αν τρέξετε στο prompt την εντολή “arp -a”, τότε θα τυπωθεί μια λίστα με όλες τις γνωστές IP και τις MAC διευθύνσεις τους, οπότε σημειώνετε κάπου την MAC της συσκευής από την IP της.

     

    Ας επιστρέψουμε στον προγραμματισμό της συσκευής. Το Flash Magic λοιπόν, μπορεί να προγραμματίσει όλες τις συσκευές της NXP που ανήκουν στην κατηγορία LPC και επομένως τον LPC1114/301. Αφού κατεβάσετε το πρόγραμμα και το κάνετε εγκατάσταση, συνδέστε την συσκευή με το RS-232 καλώδιο, χωρίς τροφοδοσία. Πάνω στην συσκευή υπάρχει ένα pin header με ένα jumper το οποίο έχει 3 θέσεις, μια που λέει UDP μια GND και μια CFG. Η default θέση του είναι στο GND.

     

     

    USR-TCP232-24 v3.1 jumber

     

    Function mode selector jumper

     

    Τοποθετήστε το jumper αυτό στην θέση CFG και τροφοδοτήστε την με ένα dc τροφοδοτικό από 5 έως 12V (προσωπικά χρησιμοποιώ ένα τροφοδοτικό 6V). Μόλις δώσετε ρεύμα στην συσκευή, τότε αυτή μπαίνει σε flash mode, οπότε μπορείτε να την προγραμματίσετε. Στην συνέχεια στο Flash Magic πατήστε το Browse και διαλέξτε το HEX file (που κατεβάζετε από εδώ). Πατήστε “Select Device” και διαλέξτε τον LPC1114/301, διαλέξτε την COM port που αντιστοιχεί στο σειριακό σας καλώδιο, επιλέξτε “None (ISP)” στο Interface και πληκτρολογήστε 25 στο πεδίο του “Oscillator”, όσα δηλαδή τα Mhz του κρυστάλλου.

     

     

    Flash Magic

     

    Flash Magic

     

    Τέλος επιλέξτε στο Step 2 το “Erase all Flash+Code Rd Prot” και στο Step 4 το “Verify after programming” και πατήστε το κουμπί “Start” για να ξεκινήσει η εγγραφή του δικού μας firmware στην συσκευή.

     

     

    Flash Magic firmware write

     

    Flash Magic firmware write

     

    Συγχαρητήρια μόλις καταστρέψατε την προηγούμενη σας συσκευή και χάσατε την εγγύηση... Όμως τώρα έχετε ένα DMX controller, κάτι είναι και αυτό.

     

    Αυτή είναι και η λίστα με τις υποστηριζόμενες εντολές του Art-Net πρωτοκόλλου, που αναφέρθηκε στην αρχή (την κάνω copy-paste) κατευθείαν από τον κώδικα.
    typedef enum {
    ARTNET_POLL = 0x2000,
    ARTNET_REPLY = 0x2100,
    ARTNET_DMX = 0x5000,
    ARTNET_ADDRESS = 0x6000,
    ARTNET_INPUT = 0x7000,
    ARTNET_TODREQUEST = 0x8000,
    ARTNET_TODDATA = 0x8100,
    ARTNET_TODCONTROL = 0x8200,
    ARTNET_RDM = 0x8300,
    ARTNET_VIDEOSTEUP = 0xa010,
    ARTNET_VIDEOPALETTE = 0xa020,
    ARTNET_VIDEODATA = 0xa040,
    ARTNET_MACMASTER = 0xf000,
    ARTNET_MACSLAVE = 0xf100,
    ARTNET_FIRMWAREMASTER = 0xf200,
    ARTNET_FIRMWAREREPLY = 0xf300,
    ARTNET_IPPROG = 0xf800,
    ARTNET_IPREPLY = 0xf900,
    ARTNET_MEDIA = 0x9000,
    ARTNET_MEDIAPATCH = 0x9200,
    ARTNET_MEDIACONTROLREPLY = 0x9300
    } artnet_packet_en;
    Και αυτά είναι τα αποτελέσματα από το compilation του κώδικα, οπότε είναι ~21KB ο κώδικας στην flash και 4.5KB στην RAM.


     

     

    keil

     

    Για το compilation χρησιμοποιήθηκε ο compiler MDK-ARM για ARMv7 της Keil, ο οποίος για μέχρι 32ΚΒ κώδικα στην flash είναι δωρεάν και μπορείτε να τον κατεβάσετε από το site της Keil, σε περίπτωση που θελήσετε να επιχειρήσετε κάτι παρόμοιο. Επίσης η βιβλιοθήκη για το TCP/IP stack που χρησιμοποίησα είναι η UIP την οποία την έκανα port για τον LPC1114, αλλά χρειάστηκε να της κάνω αρκετές μετατροπές ώστε να υποστηρίζει UDP broadcasting και multicasting και το IGMP πρωτόκολλο, τα οποία δεν υποστηρίζει από μόνη της. Επίσης για όσους θελήσουν να ασχοληθούν, το πιο δύσκολο ακόμα και από το να κάνετε port το UIP στον ARM είναι να γράψετε τον driver για τον DM9000 ώστε να τον ενσωματώσετε στο UIP, οπότε αν κάποιος χρειαστεί βοήθεια με αυτό ας μου στείλει μήνυμα ή να μου γράψει εδώ, καθώς δεν θα βρείτε τίποτα έτοιμο από αυτά στο internet.

     


    Συνδεσμολογία

     

    Ήρθε η ώρα τώρα να ενώσετε το παζλ με όλα τα κομμάτια που χρειάζονται. Αρχικά ας κάνουμε μια λίστα με τα υλικά που χρειάζονται

    • USR-TCP232-24 (προγραμματισμένο με το δικό μου firmware)
    • PX24506, που είναι ο RGB decoder
    • Μια RGB ταινία LED
    • Ένα τροφοδοτικό 12V

     

     


    ebay










     

     

     

     

    GND για το RS485


     
    Στην συνέχεια θα πρέπει να συνδέσετε το DMX ανάμεσα στον controller και τον decoder. Η μικρή πράσινη κλέμα που φαίνεται στην εικόνα παρακάτω είναι η έξοδος του RS485 του DMX controller και αυτή θα πρέπει να συνδεθεί στον PX24506 decoder όπως δείχνει η παρακάτω εικόνα.




     

    connections 1 device

     

    Σύνδεση DMX


     
    Όπως βλέπετε και στην προηγούμενη εικόνα το D+ του DMX IN του decoder συνδέεται στο εσωτερικό μέρος της κλέμας του controller και το D- του DMX IN στο εξωτερικό. Επίσης το GND του DMX IN συνδέεται στο GND του controller που κολλήσαμε στο προηγούμενο βήμα. H τροφοδοσία του DMX decoder που είναι το V- και V+ στην κλέμα του 12V-24V DC INPUT, την συνδέετε σε ένα τροφοδοτικό όπως φαίνεται στην παρακάτω εικόνα.




     

    connection Psu

     

    Τροφοδοσία


     
    Βλέπετε πως το άσπρο/μαύρο καλώδιο συνδέετε στο V- και στις δυο περιπτώσεις, ενώ το σκέτο μαύρο στο V+. Χρειάζεται ιδιαίτερη προσοχή στην χρήση του τροφοδοτικού γιατί στην ίδια κλέμα βρίσκονται και τα 220V της AC τροφοδοσίας του τροφοδοτικού, οπότε ΠΡΟΣΟΧΗ!
     
    Αν τώρα έχετε περισσότερους από έναν decoders με διαφορετικές RGB ταινίες στον καθένα, τότε θα πρέπει το DMX output του κάθε decoder να συνδέεται στο DMX input του επόμενου decoder στην αλυσίδα, όπως φαίνεται στην παρακάτω εικόνα.




     

    connections 2 devices


     
    Για να συνδέσετε την ταινία LED με τον decoder θα πρέπει να συνδέσετε σωστά τα χρώματα και την άνοδο. Προσοχή όμως, καθώς κάποιες ταινίες LED μπορεί να μην έχουν την ίδια σειρά στα R,G,B, οπότε θα πρέπει να κάνετε μόνοι σας την σωστή αντιστοιχία βάση των γραμμάτων επάνω στην ταινία LED και στον decoder. Αλλά αυτό ορισμένες φορές δεν αρκεί! Όσο περίεργο και να ακούγεται, υπάρχουν και κινέζικες παρτίδες από ταινίες LED που η μεταξοτυπία πάνω στην ταινία είναι... λάθος. Οπότε μπορεί να γράφει G και να είναι μπλε και Β και να είναι πράσινο, δηλαδή να είναι ανάποδα τα δυο χρώματα. Αυτό μπορείτε να το καταλάβετε είτε στέλνοντας στον controller τρεις τιμές που να είναι [R,G,B] 255,0,0 - 0,255,0 - 0,0,255 ώστε να δείτε κάθε χρώμα ξεχωριστά.
     
    Αφού κάνετε τις συνδεσμολογίες τότε διπλο-τριπλο-ελέγξτε ότι είναι όλα σωστά πριν βάλετε κάτι στο ρεύμα, γιατί υπάρχει πάντα η πιθανότητα αντί για χρωματιστά φώτα να να δείτε χρωματιστούς καπνούς, οι οποίοι δεν θα μυρίζουν καθόλα ωραία.
     

    Πριν πάρετε την ταινία με τα LED είναι σημαντικό να ξέρετε εκ των προτέρων τις απαιτήσεις για την εφαρμογή που θέλετε να κάνετε. Δυστυχώς στο σημείο αυτό, δεν μπορώ να κάνω πλήρη ανάλυση, καθώς δεν είναι ο σκοπός του άρθρου, οπότε θα μείνω σε μερικά βασικά στοιχεία. Όσον αφορά την ταινία LED υπάρχουν 2 κύριες κατηγορίες και μετά διάφορες υποκατηγορίες. Οι 2 κύριες κατηγορίες είναι αν τα LED θα είναι μονοχρωματικά ή έγχρωμα (RGB). Ο καθένας χρησιμοποιεί ότι θέλει, αλλά προσωπικά χρησιμοποιώ RGB και αυτό θα δούμε και στο άρθρο. Ωστόσο θα κάνω μια παρένθεση εδώ για τα μονοχρωματικά για να επισημάνω ότι με το setup που έχουμε ο PX24506, μπορεί να χειριστεί 3 διαφορετικά κανάλια, οπότε μπορούμε να τον εκμεταλλευτούμε ώστε να χειριστούμε 3 μονοχρωματικές ταινίες LED αν θέλουμε. Συνεχίζοντας στις RGB ταινές LED, υπάρχουν 2 κατηγορίες ανάλογα με τον τύπο του LED, ο οποίος μπορεί να είναι ο 3528 ή ο 5050 (οι πιο διαδεδομένοι τύποι αυτή τη στιγμή). Οι κύριες διαφορές τους είναι από την μια το μέγεθος, η κατανάλωση και η φωτεινότητα που στην περίπτωση του 3528 είναι μικρότερα. Ο κωδικός 3528 σημαίνει 3.5x2.8mm που είναι η διάσταση του LED, οπότε αντίστοιχα 5050 σημαίνει 5.0x5.0mm. Επίσης η άλλη διαφορά είναι ότι η 3528 ταινία αποτελείται από 3 ξεχωριστά μονοχρωματικά LEDs που κάνουν το RGB, ενώ η 5050 μόνο από τριχρωματικά RGB LEDs. Τέλος θα συναντήσετε άλλες 2 κατηγορίες που είναι οι αδιάβροχες ή μη ταινίες, που η διαφορά τους είναι ότι οι πρώτες είναι κυρίως για εξωτερικούς χώρους. Ταινίες LED θα βρείτε πολύ φθηνές στο , απλά προτείνω να επιλέξτε να είναι 5050 και όχι αδιάβροχες αν είναι για κλειστό χώρο, γιατί αλλιώς θερμαίνονται πολύ. Για να παίξει κάποιος ένα reel των 5m RGB ταινίας είναι αρκετά, αλλά εξαρτάται και τι θέλει να κάνει κάποιος, οπότε θα πρέπει να υπολογίσει να έχει και κάποιο ανάλογο τροφοδοτικό που να μπορεί να δώσει τόσο ρεύμα. Συνήθως την κατανάλωση της ταινίας την μετράνε ανά μέτρο, οπότε μια RGB ταινία από αυτές που κυκλοφορούν στο ebay, μπορεί να έχει κατανάλωση από 7.5W/m μέχρι και 14W/m. Γενικά όμως στις φθηνές ταινίες LED που θα βρείτε στο ebay θα δείτε ότι είναι ταινίες με 60 LEDs ανά μέτρο και οι πωλητές δίνουν τροφοδοτικά των 12W/m, δηλαδή 60W στα 5m, οπότε κάτι παρόμοιο μπορείτε να υπολογίσετε και εσείς. Υπόψη ότι μέσα στην ισχύ αυτή έχει υπολογιστεί ένας “αέρας”, ώστε το τροφοδοτικό να μην δίνει το μέγιστο του ρεύμα και να δουλεύει οριακά, ώστε να μην υπερθερμαίνεται. Οπότε προχωράμε με τον κανόνα των 60W/m για τις ταινίες με RGB led τύπου 5050. Για μεγάλα μήκη θα χρειαστείτε περισσότερα τροφοδοτικά ή να φτιάξετε loops, αλλά δεν είναι αντικείμενο του παρόντος άρθρου. Από το ίδιο τροφοδοτικό μπορείτε αν θέλετε να τροφοδοτήσετε ταυτόχρονα και τον DMX controller και το PX24506. Εδώ θα χρειαστεί να κάνετε μια μικρή τροποποίηση στην πλακέτα ώστε να πάρετε ένα GND το οποίο χρειάζεται για το RS485. Για να το κάνετε αυτό θα πρέπει να κολλήσετε ένα καλώδιο στο GND της τροφοδοσίας που είναι πιο εύκολο. Η επόμενη εικόνα δείχνει που το κολλάτε στο κάτω μέρος της πλακέτας και όπως θα δείτε έχω κολλήσει ένα ποδαράκι από μια αντίσταση για ευκολία και να το χρησιμοποιώ και σαν pin για τον παλμογράφο και ότι άλλο χρειαστεί. 


    Χρήση και παραμετροποίηση
     
    Για να ρυθμίσετε τις παραμέτρους της συσκευής, αφαιρέστε την τροφοδοσία από την συσκευή και τοποθετήστε το jumper στην θέση CFG. Τώρα μόλις επαναφέρετε την τροφοδοσία η συσκευή θα μπει στο configuration mode που έχω φτιάξει. Στο mode αυτό, δεν λειτουργεί πια το RS485, αλλά το UART γίνεται ένα σειριακό με στοιχεία 115200 8Ν1. Για να συνδεθείτε στην συσκευή κατεβάστε το Terminal από εδώ, αποσυμπιέστε το και τρέξτε το exe αρχείο. Δώστε τα στοιχεία που φαίνονται στην παρακάτω εικόνα, αλλάζοντας την COM στην δική σας αντίστοιχη, πατήστε Connect, συνδέστε και ένα Ethernet καλώδιο στην συσκευή και δώστε τροφοδοσία και θα πρέπει να δείτε τα παρακάτω.



     

    terminal

     

    Br@y's Terminal


     
    Αυτό σημαίνει ότι ο επεξεργαστής τρέχει στα 48Mhz η MAC address είναι η default (10:20:30:40:50:60) και οι default πόρτες είναι οι 6454 (UDP για το Art-Net) και 7171 (TCP για το δικό μου πρωτόκολλο). Αν τώρα στο πεδίο του Send γράψετε HELP και πατήστε Enter, τότε θα δείτε έναν οδηγό με τις υποστηριζόμενες εντολές.



     

    terminal help

     

    Serial commands


     
    Με την TRACE μπορείτε το level με το οποίο θα κάνει debug tracing η συσκευή. Το default είναι να κάνει tracing τα πάντα, αλλά αν θέλετε να το αλλάξετε θα πρέπει να δηλώσετε τα levels που θέλετε βάση του επόμενου structure.
    typedef enum {
    TRACE_LEVEL_GENERIC = 1,
    TRACE_LEVEL_DM9K = 2,
    TRACE_LEVEL_UIP = 4,
    TRACE_LEVEL_RGB = 8,
    TRACE_LEVEL_DMX = 16,
    TRACE_LEVEL_ARTNET = 32,
    TRACE_LEVEL_UDP = 64
    } en_TRACE_LEVELS;
    Το level 1 δηλαδή το bit-0 είναι μόνο οι γενικές πληροφορίες, το οποίο μάλλον αυτό θα χρειαστείτε τις περισσότερες φορές. Το bit-1 είναι για το debugging του DM9000, το bit-2 για την βιβλιοθήκη του UIP, το bit-3 για το RGB, bit-4 για το DMX, bit-5 για το Art-Net και το bit-6 για το UDP. Οπότε αν θέλετε μόνο γενικές πληροφορίες στέλνετε το “TRACE=1”, αν θέλετε να δείτε τι trace level έχει τώρα στέλνετε “TRACE?”, οπότε η συσκευή θα απαντήσει 127.
     
    Οι σημαντικές εντολές είναι αυτές που προγραμματίζετε την συσκευή, οπότε αν θέλετε να δείτε πως είναι ήδη προγραμματισμένη στέλνετε τις εντολές με ερωτηματικό στο τέλος και για να αλλάξετε μια τιμή βάζετε ένα ίσον και την τιμή που θέλετε. Οπότε για να δείτε όλες τις παραμέτρους της συσκευής στέλνετε
     
    “HOSTIP?” και απαντά “Host IP: 192.168.1.234”
    “MAC?” και απαντά “MAC: 10:20:30:40:50:60”
    “GATEWAY?” και απαντά “Gateway: 192.168.1.1”
    “SUBNET?” και απαντά “Subnet: 255.255.255.0”
     
    Αυτά είναι οι default τιμές και μπορεί να μην έχουν καμία σχέση με το δίκτυο σας ή αυτές που θέλετε, οπότε για να τις αλλάξετε γράφετε τα παρακάτω:
    HOSTIP=192.168.0.12
    απάντηση: “IP from: 192.168.1.234 is set to: 192.168.0.12
     
    MAC= 34:34:DF:23:10:30
    απάντηση: “MAC from: 10:20:30:40:50:60 is set to: 34:34:DF:23:10:30
     
    GATEWAY= 192.168.0.1
    απάντηση: “Gateway from: 192.168.1.1 is set to: 192.168.0.1
     
    SUBNET= 255.255.0.0
    απάντηση: “Subnet from: 255.255.255.0 is set to: 255.255.0.0
     
    Οι τιμές είναι τυχαίες, οπότε θα πρέπει να χρησιμοποιήσετε τις δικές σας ή να αφήσετε τις default.
     
    Με την "RATE" αλλάζετε την ταχύτητα με την οποία αλλάζει ο controller από το ένα χρώμα στο άλλο, όταν χρησιμοποιήσετε το TCP πρωτόκολλο.
     
    Με την "TCPMODE" επιλέγεται το mode του TCP πρωτοκόλλου, το default είναι το 0, που είναι το ASCII πρωτόκολλο (θα δούμε λεπτομέρειες αργότερα).
     
    Με την "SAVE" σώζετε στην συσκευή τις αλλαγές που κάνατε και με την "RESTORE" επαναφέρεται τις default τιμές για όλο το configuration της συσκευής.
     
    Αφού προγραμματίσετε και σετάρετε την συσκευή είναι πλέον έτοιμη προς χρήση. Αφαιρέστε την τροφοδοσία, αλλάξτε το jumper στην θέση GND και επαναφέρετε την τροφοδοσία ώστε να ξεκινήσει η συσκευή κανονικά την λειτουργία της ως DMX controller.
     


    Παράδειγμα με την χρήση του TCP πρωτοκόλλου
     
    Αφού έχετε τελειώσει με όλα τα προηγούμενα βήματα, τώρα μπορείτε να παίξετε με τα φώτα σας. Όπως είπαμε υπάρχουν διάφοροι τρόποι να το κάνετε αυτό, ο ένας είναι με κάποιο Art-Net console software από το PC ή το κινητό σας και ο άλλος με το δικό μου TCP πρωτόκολλο που έχω γράψει για την συσκευή. Θα δούμε και τους δυο τρόπους ξεκινώντας από το δικό μου πρωτόκολλο.
     
    Το πρωτόκολλο είναι πολύ εύκολο, αλλά χρειάζεται μια μικρή διευκρίνηση για το πως λειτουργεί. Ενώ σε όλο το προηγούμενο άρθρο έχω αναφέρει για DMX slots κλπ, επέλεξα λόγο πρακτικής ευκολίας στο πρωτόκολλο να μην έχω slots, αλλά RGB πεδία. Επομένως έχω σπάσει τα 512 slots σε 170 RGB πεδία (οπότε περισσεύουν 2 slots στο τέλος), άρα στο πρωτόκολλο αυτό αναφερόμαστε σε RGB πεδία. Αυτό το έκανα ώστε να διευκολύνω την χρήση της συσκευής η οποία θα χρησιμοποιείται κατά κύριο λόγο σε RGB φωτισμό, που είναι και το πιο σύνηθες. Έτσι το κάθε RGB πεδίο πιάνει 3 slots ξεκινώντας από το πεδίο 1 που καταλαμβάνει τα slots 1,2 και 3 για τις τιμές του RGB του πρώτου πεδίου, οπότε αν έχετε πολλούς PX24506 RGB drivers (που ο καθένας χειρίζεται μια RGB ταινία LED), τότε μπορείτε μια εντολή να αλλάζετε την τιμή του driver και για τα τρία χρώματα. Ως αποτέλεσμα αυτού επίσης, διευκολύνεστε στο ότι όταν αναφέρεστε σε κάποιο πεδίο, τότε αυτό θα έχει τον ίδιο αριθμό με την DMX διεύθυνση του RGB controller γιατί και ο το κάθε PX24506 καταλαμβάνει ουσιαστικά 3 slots, ξεκινώντας από το slot της διεύθυνσης που έχει οριστεί στην συσκευή.
     
    Για να συνδεθείτε στην συσκευή χρειάζεστε ένα απλό TCP client όπως το Hercules. Αφού το κατεβάσετε και το τρέξετε, τότε στο tab TCP client δώστε για IP την διεύθυνση της συσκευής και ως TCP πόρτα την 7171, πατήστε το Ping ώστε να δείτε αν βλέπετε την συσκευή πάνω στο δίκτυο και εν συνεχεία αφού δείτε ότι λάβατε ICMP ECHO απάντηση, πατήστε connect. Αφού συνδεθεί η συσκευή, έχετε τώρα 3 διαθέσιμες εντολές να στείλετε οι οποίες είναι οι παρακάτω:
     
    RGB?
    - Μόλις στείλετε αυτή την εντολή τότε η συσκευή απαντά με όλες τις τιμές από όλα τα RGB πεδία.
    RGB=<πεδίο>,<R>,<G>,<B>
    όπου <πεδίο>: ο αριθμός του RGB πεδίου (που αντιστοιχεί σε ένα PX24506) με τιμή από 1 έως 512
    <R>: η τιμή του κόκκινου χρώματος από 0 έως 255
    <G>: η τιμή του πράσινου χρώματος από 0 έως 255
    <B>: η τιμή του μπλε χρώματος από 0 έως 255
    - Με την εντολή αυτή μπορείτε να αλλάξετε το χρώμα από οποιοδήποτε RGB πεδίο. Υπόψη το πεδίο θα έχει πάντα τον ίδιο αριθμό με την διεύθυνση του PX24506 που απευθύνεται.
    RATE=<color change rate>
    -Με την εντολή αυτή αλλάζετε την ταχύτητα με την οποία αλλάζει ο ρυθμός εναλλαγής από το ένα RGB χρώμα στο άλλο. Όσο πιο μικρός είναι ο αριθμός τόσο πιο γρήγορη η εναλλαγή.
     
    Στην παρακάτω εικόνα φαίνονται τα δεδομένα που παίρνει ο TCP client όταν έχουμε συνδεθεί και στέλνουμε την εντολή “RGB?”.



     

    hercules Tcp 1


     
    Και στην παρακάτω εικόνα αφού έχουμε στείλει στο RGB κανάλι 1, την τιμή 255 για το κόκκινο και 0 για το πράσινο και το μπλε.



     

    hercules Tcp 2


     
    Κλείνοντας με το παράδειγμα του απλού πρωτοκόλλου, μπορείτε να δείτε το παρακάτω βίντεο στο οποίο στέλνω διάφορες τιμές στον controller μέσω του TCP client.




     


     
    Το βίντεο δεν είναι πολύ καλής ποιότητας αφενός γιατί η κάμερα του κινητού μου είναι μιας παλιάς εποχής και αφετέρου οι κάμερες αυτές δυσκολεύονται πολύ στις εναλλαγές φωτεινότητας, καθώς προσπαθούν σε πραγματικό χρόνο να αντισταθμίσουν συνεχώς την φωτεινότητα ώστε να είναι σταθερή. Πράγμα το οποίο ειδικά στην περίπτωση είναι ότι χειρότερο, γιατί δεν φαίνονται οι εναλλαγές στην φωτεινότητα που είναι σημαντικές, οπότε σε πολλές περιπτώσεις θα βλέπετε το φως από τα LEDs να παραμένει σταθερό και να σκοτεινιάζει ή να γίνεται πιο φωτεινό το background.
     


    Παράδειγμα με την χρήση του Art-Net
     
    Εδώ τώρα μπαίνουμε στα χωράφια του επαγγελματικού φωτισμού, οπότε απευθύνεται κυρίως σε DJs που χρησιμοποιούν φωτισμό, light engineers, χομπίστες κλπ. Όπως είπαμε και πριν η συσκευή υποστηρίζει το πρωτόκολλο Art-Net v3 και επομένως η συσκευή υποστηρίζεται απ' όλες τις επαγγελματικές εφαρμογές φωτισμού που υποστηρίζουν το Art-Net πρωτόκολλο. Από όλες αυτές τις εφαρμογές θα αναφέρω μόνο το DMX-Workshop II της Artistic License, το οποίο αυτή τη στιγμή που γράφετε το άρθρο έχει φτάσει στην έκδοση 7.4, το αναπτύσσει η ίδια εταιρία που έχει φτιάξει το πρωτόκολλο του Art-Net και χρησιμοποιείται από τους κατασκευαστές για να πιστοποιούν την σωστή και εύρυθμη λειτουργία των συσκευών τους. Οπότε θα το χρησιμοποιήσουμε και εμείς για να κάνουμε debugging και testing τον controller που φτιάξαμε.
     
    Αφού έχουμε κάνει όλες τις συνδέσεις (controller, decoder, ταινίες LED και τροφοδοσία) και έχουμε βεβαιωθεί ότι όλα δουλεύουν σωστά, τότε κάνουμε εγκατάσταση και τρέχουμε το DMX-Workshop II και εμφανίζεται το παρακάτω παράθυρο.




     

    New Dmx workshop 1

     

    DMX-Workshop II


     
    Στο παράθυρο αυτό υπάρχουν πολλές επιλογές, αλλά ξεκινάμε πατώντας το "Node List". Πατώντας το, το πρόγραμμα ψάχνει (με τον τρόπο που θα δούμε παρακάτω) όλες τις συσκευές πάνω στο LAN δίκτυό μας, που υποστηρίζουν Art-Net. Αν όλα είναι σωστά, τότε θα δείτε στο παράθυρο του node status την συσκευή σας να αναφέρεται σαν "Jaco Art-Net Ethernet to DMX node", όπως φαίνεται και στην παρακάτω εικόνα.




     

    New Dmx workshop 2

     

    Art-Net nodes


     
    Κάνοντας expand βλέπουμε ότι είναι μια OEM συσκευή (καθώς δεν έχω πάρει κάποιον κωδικό και πιστοποίηση από την Artistic License), την IP της, την MAC address της, ότι δεν είναι RDM capable και ότι έχει ένα DMX input, το οποίο ανήκει στο Universe 00-0-0. Κάνοντας δεξί κλικ στην συσκευή και πατώντας το configure node ανοίγει το παρακάτω παράθυρο.




     

    New Dmx workshop 3


     
    Στο παράθυρο αυτό μπορείτε να κάνετε κάποιες ρυθμίσεις, αλλά έχω αφήσει ξεκλείδωτες στην συσκευή μόνο τις ρυθμίσεις του Universe, δηλαδή σε ποιο Net address και Sub-Net address ανήκει η συσκευή. Κανονικά μπορείς αν θες να προγραμματίσεις και το όνομα της συσκευής, αλλά στο παρών firmware το έχω κλειδωμένο. Επομένως, αν αλλάξετε το net ή sub-net πατήστε το κουμπί "Programme Node" και οι παράμετροι θα γίνουν upload στον controller και θα σωθούν στην flash του ARM.
     
    Για να ελέγξουμε την λειτουργία του controller, πατάμε στο κυρίως παράθυρο του DMX-Workshop το "Transmit" και επιλέγουμε το "Transmit preset", οπότε ανοίγει το παρακάτω παράθυρο.




     

    New Dmx workshop 4


     
    Στο παράθυρο αυτό αυτό μπορούμε να στείλουμε preset τιμές μέχρι και σε 10 slots στο universe που θέλουμε. Επειδή για το test αυτό έχω συνδέσει 2 decoders στον controller έχω δώσει στον ένα την διεύθυνση 1 και στον άλλο την διεύθυνση 4, ώστε ο πρώτος να έχει τα slots 1,2,3 για τα R,G,B ενώ ο άλλος τα slots 4,5,6 αντίστοιχα. Οι διευθύνσεις στους decoders φαίνονται και στην επόμενη εικόνα.




     

    New Dmx workshop 6


     
    Αφού λοιπόν έχετε δώσει τις προηγούμενες τιμές σαν preset (ή κάποιες άλλες), πατάτε το "On" στο πεδίο του "Output", οπότε θα δείτε κάτι σαν το παρακάτω.




     

    New Dmx workshop 7


     
    Αφήνοντας το ouput στο On, κάθε φορά που αλλάζετε ένα slider στα presets βλέπετε ακαριαία την αλλαγή να εμφανίζεται στα LEDs. Αν τα κλείσετε όλα τα sliders θα σβήσουν και όλα τα LEDs. Αυτό σημαίνει ότι το πρόγραμμα από πίσω στέλνει συνεχώς στο LAN δίκτυο τις τιμές για τα slots του DMX universe 00-0-0, ο controller μας τα αναγνωρίζει, ξεπακετάρει τα UDP δεδομένα, κάνει τις κατάλληλες μετατροπές και μετατρέπει το Art-Net σε DMX πάνω στο RS485. Και όλ' αυτά γίνονται σε πολύ υψηλές ταχύτητες και μεγάλες αποστάσεις!
     
    Επίσης από το "Transmit" του κεντρικού μενού μπορείτε να επιλέξετε την επιλογή "Transmit Dynamic DMX", οπότε θα ανοίξει το παρακάτω παράθυρο.




     

    New Dmx workshop 5


     
    Στο παράθυρο αυτό μπορείτε να κάνετε στέλνετε δυναμικές τιμές στο Art-Net δίκτυο με διάφορα modes. Για να το κάνετε αυτό, διαλέξτε το mode "Group RGB" και πατήστε το "On" στο output. Στην συνέχεια επιλέξτε στο Start το 1 και στο End το τελευταίο slot που έχετε στο setup σας, πχ τώρα που έχω συνδέσει 2 decoders είναι 2x3=6 slots. Μόλις πατήσετε το "On" θα δείτε τα χρώματα και στους δυο decoders να εναλλάσσονται με τον ίδιο τρόπο και ουσιαστικά να ξεκινάνε από λιγότερο έντονο κόκκινο, σε πολύ έντονο, μετά λιγότερο έντονο πράσινο σε εντονότερο και λιγότερο εντονότερο μπλε σε έντονο. Οπότε ουσιαστικά το πρόγραμμα στέλνει τιμές από 0 έως 255 σε κάθε slot ξεχωριστά. Από το slider του speed διαλέγετε πόσο γρήγορος είναι ο ρυθμός αυτής της εναλλαγής. Παρακάτω ακολουθεί ένα βίντεο που δείχνει το αποτέλεσμα, αλλά όμως προσοχή, για να το κάνω λίγο πιο εντυπωσιακό, έκανα shift ένα slot αριστερά τον δεύτερο decoder, δηλαδή του έδωσα την διεύθυνση 3, ώστε να μην φαίνονται τα ίδια χρώματα (αν μπερδευτήκατε παραλείψτε τι έγραψα). Επίσης σε κάποια στιγμή που δείχνω την οθόνη του υπολογιστή θα δείτε μια παλιότερη version του DMX-Workshop II (version 6.08), την οποία απεγκατέστησα όμως για να βάλω την τελευταία, ώστε να screenshots να αντιστοιχούν στην νεότερη version μιας και έχει αλλάξει όλο το user interface.




     

    DMX με 2 RGB decoders και Art-Net v3

     


     
    Όπως και στην προηγούμενη σελίδα, επαναλαμβάνω πως: το βίντεο δεν είναι πολύ καλής ποιότητας αφενός γιατί η κάμερα του κινητού μου είναι μιας παλιάς εποχής και αφετέρου οι κάμερες αυτές δυσκολεύονται πολύ στις εναλλαγές φωτεινότητας, καθώς προσπαθούν σε πραγματικό χρόνο να αντισταθμίσουν συνεχώς την φωτεινότητα ώστε να είναι σταθερή. Πράγμα το οποίο ειδικά στην περίπτωση είναι ότι χειρότερο, γιατί δεν φαίνονται οι εναλλαγές στην φωτεινότητα που είναι σημαντικές, οπότε σε πολλές περιπτώσεις θα βλέπετε το φως από τα LEDs να παραμένει σταθερό και να σκοτεινιάζει ή να γίνεται πιο φωτεινό το background.
     
    Φυσικά το DMX-Workshop επειδή είναι εργαλείο για την πιστοποίηση του Art-Net πρωτοκόλλου, παρέχει και ένα άλλο σωρό από εργαλεία για testing και debugging, τα οποία όμως δεν θα αναλύσω μιας και δεν είναι ο σκοπός του άρθρου, αλλά μπορεί όποιος θέλει να το ψάξει περισσότερο. Όμως θα κάνω μια αναφορά στα πακέτα του Art-Net που κυκλοφορούν επάνω στο LAN δίκτυο μας. Ένας τρόπος να τα δείτε είναι το πατώντας στο κεντρικό μενού του DMX-Workshop το "Developer" και επιλέγοντας το "Network packet dissector", οπότε θα ανοίξει ένα παράθυρο που μπορείτε να βλέπετε τα πακέτα του Art-Net.




     

    New Dmx workshop 8


     
    Δυστυχώς όμως αυτός ο τρόπος δεν είναι και ο πιο αξιόπιστος μιας και πρώτον, δεν φαίνονται όλα τα πακέτα και δεύτερον κατά την διάρκεια της ανάπτυξης που τα πακέτα δεν θα είναι κατά πάσα πιθανότητα σωστά εξ' αρχής δεν θα εμφανίζονται σ' αυτό το παράθυρο. Επομένως πρέπει να χρησιμοποιήσετε ποιο δραστικές λύσεις όπως το Winshark. Το Winshark είναι ένα πρόγραμμα ανάλυσης δικτυακών πακέτων, αλλά δυστυχώς δεν μπορώ να αναλύσω σε βάθος το πως το χρησιμοποιείται, λόγο χρόνου, χώρου και δυσκολίας, οπότε θεωρώ πως ξέρετε να το χρησιμοποιείτε. Επομένως, αφού τρέξουμε το Winshark, επιλέξουμε το φίλτρο "udp.port == 6454" ώστε να βλέπουμε μόνο τα πακέτα που χρησιμοποιούν την UDP πόρτα 6454 που χρησιμοποιείται για το Art-Net και στην συνέχεια κάνοντας δεξί κλικ στα δεδομένα επιλέγουμε να τα κάνει decode ως Art-Net πακέτα (ναι! το wireshark έχει ενσωματωμένο Art-Net dissector). Οπότε κάνοντας τα βήματα αυτά, μόλις τροφοδοτήσουμε την συσκευή ενώ τρέχουμε το DMX-Workshop θα δούμε το παρακάτω.




     

    wireshark 1


     
    Εδώ φαίνονται τα εξής:

    • το πρόγραμμα κάνει poll στο δίκτυο (με broadcast) για να δει αν υπάρχουν Art-Net συσκευές (ArtPoll)
    • η συσκευή απαντά με (ArtPollReply)
    • το πρόγραμμα ζητά αν η συσκευή υποστηρίζει προγραμματισμό της IP της (ArtIpProg)
    • η συσκευή απαντά ότι υποστηρίζει (ArtIpProgReply)
    • το πρόγραμμα ρωτά τον πίνακα των RDM συσκευών (ArtTodControl)
    • η συσκευή αγνοεί το πακέτο, αφού έχουμε πει ότι δεν θα υποστηρίξουμε RDM σ' αυτό το firmware.
    • συνεχίζει ένα συνεχόμενο ArtPoll / ArtPollReply μεταξύ προγράμματος και συσκευής.

    Στην επόμενη εικόνα βλέπουμε μια αλληλουχία ArtDMX πακέτων από το πρόγραμμα στον controller. Όπως βλέπετε τα πακέτα αυτά που στέλνονται από το πρόγραμμα δεν παίρνουν ποτέ απάντηση, δεν υποστηρίζουν δηλαδή κάποιο reply και αυτό γίνεται λόγο ταχύτητας της επικοινωνίας. Επίσης βλέπεται ότι οι τιμές 0-255 μεταφράζονται ως ποσοστά, γιατί ουσιαστικά η τιμή για κάθε slot σημαίνει το ποσοστό της μέγιστης τιμής της μεταβλητής, είτε είναι ένταση χρώματος, είτε μοίρες κλπ.

     

     

     

     

     

     

     



     

     

    wireshark 2

     

    Στο σημείο τελειώσαμε και με το τεστάρισμα της συσκευής και εξακριβώσαμε ότι υποστηρίζει σωστά το πρωτόκολλο του Art-Net, οπότε μπορούμε πλέον να χρησιμοποιήσουμε τον controller με οποιοδήποτε άλλο επαγγελματικό πρόγραμμα για Art-Net φωτισμό.

     


    Χρήσεις του DMX512-A

     

    Υπάρχουν πραγματικά πάρα πολλές εφαρμογές στις οποίες μπορεί να χρησιμοποιηθεί ένας DMX decoder σαν αυτό που φτιάξαμε. Στην ενότητα αυτή θα δείξω ορισμένες μόνο, αλλά το ουσιαστικό είναι με μία ή περισσότερες συσκευές σαν αυτή που φτιάξαμε σε αυτό το άρθρο, μπορούμε να κάνουμε όλα τα παρακάτω.


     

     

    24x56 pixels DMX οθόνη

     

     

     

     

     

     

     

     


     

     

    Art-Net control

     

     

     

     

     

     

     

     


     

     

    Συναυλία με DMX φωτισμό

     

     

     

     

     

     

     

     


     

     

    Χειρισμός strobe light με Art-Net

     

     

     

     

     

     

     

     


     

     

    176 DMX Universes

     

     

     

     

     

     

     

     


     

     

    Infinity mirror με DMX θα είναι ένα από τα επόμενά μου projects σπίτι

     

     

    Και έτσι κλείνει και αυτό το άρθρο! Είδαμε ωραίες τεχνολογίες, μπήκαμε σε αρκετές λεπτομέρειες σχετικά με τον σύγχρονο φωτισμό και φτιάξαμε και έναν DMX Ethernet controller γενικής χρήσης, που υποστηρίζει και σύγχρονα πρωτόκολλα όπως το Art-Net. Ο φωτισμός είναι ένα βαρέλι χωρίς πάτο απ' όλες τις απόψεις, οπότε και οικονομικής άποψης, αλλά είδαμε ότι με πολύ λίγα χρήματα μπορούμε να φτιάξουμε συσκευές που κοστίζουν πολύ περισσότερα. Με τον ίδιο τρόπο μπορούμε να φτιάξουμε και δικά μας φώτα και προβολείς, αλλά αυτό δεν είναι του παρόντος και ίσως απασχολήσει κάποιο επόμενο άρθρο.

     

    Καλό παιχνίδι σε όσους ασχοληθούν (και ελπίζω να υπάρξουν κάποιοι που να ασχοληθούν με αυτό το ενδιαφέρον project).

     

    ΥΓ. Ακολουθεί μια τελευταία σελίδα με κάποια video tutorials για το DMX.

     

    ΥΓ2. Για τους TL;DR τύπους (respect) ή γι' αυτούς που τους φάνηκαν όλ' αυτά βουνό, είναι απλά τα πράγματα. Αγοράζετε απλά το υλικά, γράφετε στην συσκευή το firmware που δίνω στην σελίδα [Firmware] με τον τρόπο που περιγράφετε εκεί, κάνετε τις συνδέσεις και είστε έτοιμοι. Αυτό είναι όλο και δεν χρειάζεται άλλες τεχνικές ή εξειδικευμένες γνώσεις, πέρα από τα προγράμματα που θα χρησιμοποιήσετε εσείς μετά ή χρησιμοποιείτε ήδη.

     


    DMX video tutorials

     

    Και τέλος μερικά video tutorials για το DMX, στα οποία αναφέρονται και οι controllers, σαν αυτόν που φτιάξαμε.

     

     

     

     

     

    <

    Συντελεστές Review
    Reviewers: Jaco
    Photographers: Jaco
    Editing:
    Αξιολόγηση
    Χαρακτηριστικά:Select
    Χρηστικότητα:Select
    Ποιότητα:Select
    Επιδόσεις:Select
    Γραφικά:Select
    Ήχος:Select
    Gameplay:Select
    Αντοχή στο Χρόνο:Select
    Απόδοση/Τιμή:Select
    Editor's ChoiceNo
    Innovation AwardNo
    Design AwardNo
    Value for MoneyNo

    • Like 23

    User Feedback

    Recommended Comments

    Καταπληκτικό project, ασχολούμαι επαγγελματικά με το dmx - 512 σαν φωτιστής και έχω μερικές γνώσεις στα ηλεκτρονικά. Μπορώ να συνδέσω ένα xlr βύσμα στην έξοδο rs485 και να <<οδηγήσω>> από εκεί τις dmx συσκευές μου; Σκέφτομαι πολύ σοβαρά να αγοράσω μια πλακετούλα τέτοια και να προσπαθήσω να την προγραμματίσω.

    Link to comment
    Share on other sites

    Γεια σου Σπύρο. Έχουν περάσει πολλά χρόνια από τότε και πλέον έχουν αλλάξει πολλά πράγματα στο DMX. Νομίζω ότι δεν συμφέρει πλέον να κάνεις κάτι τέτοιο, καθώς θα δυσκολευτείς να βρεις αυτή την πλακέτα.

     

    Υπάρχουν όμως άλλες λύσεις όπως το DMX Arduino shield, το οποίο λίγο πολύ είναι ένα RS232 -> RS485 converter με midi connectors. Επίσης υπάρχει αρκετό έτοιμο software γι' αυτό στο ίντερνετ και μπορείς να κάνεις σχεδόν ότι θες.

     

    Για ArtNet δεν το έχω ψάξει, αλλά σίγουρα κάτι θα υπάρχει πάλι για το Arduino. Και όταν λέω Arduino δεν αναφέρομαι μόνο στο παλιό, αλλά και σε όλες τις καινούργιες παραλλαγές που υποστηρίζουν το ίδιο ΑΡΙ.

    Link to comment
    Share on other sites

    Καλησπέρα . Σε ευχαριστώ πάρα πολύ για την γρήγορη απάντηση. Την πλακετούλα τη βρήκα !!! στο ισραήλ από τη σελίδα την οποία δίνεις εδώ και έρχεται γύρω στα 25 - 30 ευρώ. Το Arduino ξεφευγει οικονομικά μαζί με το sheild κλπ. στο κομμάτι της artnet Υλοποίησης (έχω βρει κανενα δυο σοβαρά projects αλλά χρησιμοποιούν πολλά παρελκόμενα όπως πχ. οθονίτσες κλπ.) Εχω κατασκευάσει με φοβερή επιτυχία dmx interface από usb - dmx και <<λειτουργεί>>  ακριβώς όπως το enttec open , δλδ ένα ft232 - ένα max 485 , λίγα εξαρτηματάκια , προγραμματισμός με το ftprog της ftdi και τέλος. Ερώτηση τελευταία. Αν καταφέρω και αποκτήσω μια δυο τέτοιες πλακετούλες , μπορώ να ενοχλήσω στην κατασκευη του project?

     

    Ευχαριστώ προκαταβολικά 

    Link to comment
    Share on other sites

    Ρώτησε με ότι θες, ναι. Αλλά να ξέρεις ότι μπορεί να καθηστερώ λίγο με τις απαντήσεις λόγο χρόνου.

     

    Η πλακέτα ελπίζω να έχει τον ίδιο επεξεργαστή, γιατί πολλές φορές αλλάζουν τα components και αφήνουν το ίδιο όνομα. Αν δεν έχει τον ίδιο επεξεργαστή, δεν θα δουλέψει το firmware.

    Link to comment
    Share on other sites

    Καλησπέρα, εδώ και κάποιους μήνες κοιτάω για κάποιο DIY ArtNet Node και σήμερα έπεσα πάνω σε αυτό
    Καταρχάς να πω ενα μεγάλο μπράβο Jaco για αυτο το "μυθιστόρημα" σου πάνω στο DMX, ArtNet, RS485/232 και ότι αλλο έχεις γράψει.
    Έχω δύο ερωτήσεις
    Η πρώτη είναι εάν θα μπορούσες να ανεβάσεις πάλι το HEX file που ανέφερες πιο πάνω το οποίο έχει διαγραφεί απο το Dropbox
    και η 2η είναι δυνατόν με κάποιο τρόπο να χρησημοποιήσω αυτή τη πλακέτα χώρις να χρειαστεί να αλλάξει τελίος ο κώδικας?
    Δεν θέλω να αγοράσω κάποιο έτοιμο Node γιατί ήδη αγόρασα license (Avolites Editor AvoKey, 85 ευρώ) για ένα πρόγραμμα DMX (Avolites TitanGo 15.1) το οποίο streamάρει (και) μέσω ArtNet (θα το αγόραζα έτσι κι αλλιώς το πρόγραμμα) και επομένως το να αγοράσω ένα Node απ'το να φτιάξω θα υπερβεί πολύ το budget μου.

    Ευχαριστώ προκαταβολικά
    Νίκος
     

    Link to comment
    Share on other sites



    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.