Jump to content

Jaco

Premium Members
  • Posts

    6.819
  • Εγγραφή

  • Τελευταία Επίσκεψη

  • Ημέρες που κέρδισε

    33

Everything posted by Jaco

  1. Jaco

    DIY project 1: PC remote control

    Μαζεύω τα κομμάτια μου από διακοπές
  2. Jaco

    DIY project 1: PC remote control

    @Dj_ALeX, ευχαριστώ. @Seafalco, το εκτιμώ ιδιαίτερα αυτό που λες, γιατί προέρχεται από κάποιο του οποίου η ποιότητα της δουλειάς του είναι γνωστή εδώ μέσα. Επίσης, ευχαριστώ και δημόσια για τις διορθώσεις και τις επισημάνσεις.
  3. Jaco

    DIY project 1: PC remote control

    @DJD, όπως ίσως είδες από το επόμενο που ακολουθεί, ξεκίνησα από τα χαλαρά
  4. Εισαγωγή Ήρθε η ώρα για το δεύτερο 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Ω. Η συνδεσμολογία φαίνεται στην παρακάτω εικόνα. 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. DMX512-A data bytes Όπως βλέπουμε στην φωτογραφία από τον παλμογράφο, το data rate είναι 250Khz δηλαδή 250Kbps, όπως ορίζει το DMX standard. 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 και η επεξεργαστική ισχύ που χρειάζεται. Enntec OpenDMX USB controller Ο άλλος τύπος DMX controller είναι ο Ethernet (ή Art-Net όπως θα δούμε παρακάτω) και αυτοί οι τύποι controller είναι πιο ακριβοί, ξεκινώντας από $150 στην πιο απλή μορφή τους. Οι πιο “γνωστές” συσκευές αυτού του τύπου είναι το OpenDMX ODE της Enttec στα €199 και το eDMX1 της DMXking. Φυσικά υπάρχουν και άλλες πολλές που μπορείτε να βρείτε στο eBay, απλά αυτές είναι μέχρι στιγμής οι πιο διαδομένες στον χώρο, αν και οι δυναμικές στον χώρο αλλάζουν γρήγορα και μπορεί να βρει κανείς ακόμα και controllers από το Ισραήλ που να υποστηρίζουν μέχρι και 6 Universes στα ίδια χρήματα. 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 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 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. 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 Τέλος επιλέξτε στο Step 2 το “Erase all Flash+Code Rd Prot” και στο Step 4 το “Verify after programming” και πατήστε το κουμπί “Start” για να ξεκινήσει η εγγραφή του δικού μας firmware στην συσκευή. 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. Για το 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 όπως δείχνει η παρακάτω εικόνα. Σύνδεση DMX Όπως βλέπετε και στην προηγούμενη εικόνα το D+ του DMX IN του decoder συνδέεται στο εσωτερικό μέρος της κλέμας του controller και το D- του DMX IN στο εξωτερικό. Επίσης το GND του DMX IN συνδέεται στο GND του controller που κολλήσαμε στο προηγούμενο βήμα. H τροφοδοσία του DMX decoder που είναι το V- και V+ στην κλέμα του 12V-24V DC INPUT, την συνδέετε σε ένα τροφοδοτικό όπως φαίνεται στην παρακάτω εικόνα. Τροφοδοσία Βλέπετε πως το άσπρο/μαύρο καλώδιο συνδέετε στο V- και στις δυο περιπτώσεις, ενώ το σκέτο μαύρο στο V+. Χρειάζεται ιδιαίτερη προσοχή στην χρήση του τροφοδοτικού γιατί στην ίδια κλέμα βρίσκονται και τα 220V της AC τροφοδοσίας του τροφοδοτικού, οπότε ΠΡΟΣΟΧΗ! Αν τώρα έχετε περισσότερους από έναν decoders με διαφορετικές RGB ταινίες στον καθένα, τότε θα πρέπει το DMX output του κάθε decoder να συνδέεται στο DMX input του επόμενου decoder στην αλυσίδα, όπως φαίνεται στην παρακάτω εικόνα. Για να συνδέσετε την ταινία 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 καλώδιο στην συσκευή και δώστε τροφοδοσία και θα πρέπει να δείτε τα παρακάτω. Br@y's Terminal Αυτό σημαίνει ότι ο επεξεργαστής τρέχει στα 48Mhz η MAC address είναι η default (10:20:30:40:50:60) και οι default πόρτες είναι οι 6454 (UDP για το Art-Net) και 7171 (TCP για το δικό μου πρωτόκολλο). Αν τώρα στο πεδίο του Send γράψετε HELP και πατήστε Enter, τότε θα δείτε έναν οδηγό με τις υποστηριζόμενες εντολές. 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?”. Και στην παρακάτω εικόνα αφού έχουμε στείλει στο RGB κανάλι 1, την τιμή 255 για το κόκκινο και 0 για το πράσινο και το μπλε. Κλείνοντας με το παράδειγμα του απλού πρωτοκόλλου, μπορείτε να δείτε το παρακάτω βίντεο στο οποίο στέλνω διάφορες τιμές στον 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 και εμφανίζεται το παρακάτω παράθυρο. DMX-Workshop II Στο παράθυρο αυτό υπάρχουν πολλές επιλογές, αλλά ξεκινάμε πατώντας το "Node List". Πατώντας το, το πρόγραμμα ψάχνει (με τον τρόπο που θα δούμε παρακάτω) όλες τις συσκευές πάνω στο LAN δίκτυό μας, που υποστηρίζουν Art-Net. Αν όλα είναι σωστά, τότε θα δείτε στο παράθυρο του node status την συσκευή σας να αναφέρεται σαν "Jaco Art-Net Ethernet to DMX node", όπως φαίνεται και στην παρακάτω εικόνα. Art-Net nodes Κάνοντας expand βλέπουμε ότι είναι μια OEM συσκευή (καθώς δεν έχω πάρει κάποιον κωδικό και πιστοποίηση από την Artistic License), την IP της, την MAC address της, ότι δεν είναι RDM capable και ότι έχει ένα DMX input, το οποίο ανήκει στο Universe 00-0-0. Κάνοντας δεξί κλικ στην συσκευή και πατώντας το configure node ανοίγει το παρακάτω παράθυρο. Στο παράθυρο αυτό μπορείτε να κάνετε κάποιες ρυθμίσεις, αλλά έχω αφήσει ξεκλείδωτες στην συσκευή μόνο τις ρυθμίσεις του Universe, δηλαδή σε ποιο Net address και Sub-Net address ανήκει η συσκευή. Κανονικά μπορείς αν θες να προγραμματίσεις και το όνομα της συσκευής, αλλά στο παρών firmware το έχω κλειδωμένο. Επομένως, αν αλλάξετε το net ή sub-net πατήστε το κουμπί "Programme Node" και οι παράμετροι θα γίνουν upload στον controller και θα σωθούν στην flash του ARM. Για να ελέγξουμε την λειτουργία του controller, πατάμε στο κυρίως παράθυρο του DMX-Workshop το "Transmit" και επιλέγουμε το "Transmit preset", οπότε ανοίγει το παρακάτω παράθυρο. Στο παράθυρο αυτό αυτό μπορούμε να στείλουμε preset τιμές μέχρι και σε 10 slots στο universe που θέλουμε. Επειδή για το test αυτό έχω συνδέσει 2 decoders στον controller έχω δώσει στον ένα την διεύθυνση 1 και στον άλλο την διεύθυνση 4, ώστε ο πρώτος να έχει τα slots 1,2,3 για τα R,G,B ενώ ο άλλος τα slots 4,5,6 αντίστοιχα. Οι διευθύνσεις στους decoders φαίνονται και στην επόμενη εικόνα. Αφού λοιπόν έχετε δώσει τις προηγούμενες τιμές σαν preset (ή κάποιες άλλες), πατάτε το "On" στο πεδίο του "Output", οπότε θα δείτε κάτι σαν το παρακάτω. Αφήνοντας το ouput στο On, κάθε φορά που αλλάζετε ένα slider στα presets βλέπετε ακαριαία την αλλαγή να εμφανίζεται στα LEDs. Αν τα κλείσετε όλα τα sliders θα σβήσουν και όλα τα LEDs. Αυτό σημαίνει ότι το πρόγραμμα από πίσω στέλνει συνεχώς στο LAN δίκτυο τις τιμές για τα slots του DMX universe 00-0-0, ο controller μας τα αναγνωρίζει, ξεπακετάρει τα UDP δεδομένα, κάνει τις κατάλληλες μετατροπές και μετατρέπει το Art-Net σε DMX πάνω στο RS485. Και όλ' αυτά γίνονται σε πολύ υψηλές ταχύτητες και μεγάλες αποστάσεις! Επίσης από το "Transmit" του κεντρικού μενού μπορείτε να επιλέξετε την επιλογή "Transmit Dynamic DMX", οπότε θα ανοίξει το παρακάτω παράθυρο. Στο παράθυρο αυτό μπορείτε να κάνετε στέλνετε δυναμικές τιμές στο 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. Δυστυχώς όμως αυτός ο τρόπος δεν είναι και ο πιο αξιόπιστος μιας και πρώτον, δεν φαίνονται όλα τα πακέτα και δεύτερον κατά την διάρκεια της ανάπτυξης που τα πακέτα δεν θα είναι κατά πάσα πιθανότητα σωστά εξ' αρχής δεν θα εμφανίζονται σ' αυτό το παράθυρο. Επομένως πρέπει να χρησιμοποιήσετε ποιο δραστικές λύσεις όπως το Winshark. Το Winshark είναι ένα πρόγραμμα ανάλυσης δικτυακών πακέτων, αλλά δυστυχώς δεν μπορώ να αναλύσω σε βάθος το πως το χρησιμοποιείται, λόγο χρόνου, χώρου και δυσκολίας, οπότε θεωρώ πως ξέρετε να το χρησιμοποιείτε. Επομένως, αφού τρέξουμε το Winshark, επιλέξουμε το φίλτρο "udp.port == 6454" ώστε να βλέπουμε μόνο τα πακέτα που χρησιμοποιούν την UDP πόρτα 6454 που χρησιμοποιείται για το Art-Net και στην συνέχεια κάνοντας δεξί κλικ στα δεδομένα επιλέγουμε να τα κάνει decode ως Art-Net πακέτα (ναι! το wireshark έχει ενσωματωμένο Art-Net dissector). Οπότε κάνοντας τα βήματα αυτά, μόλις τροφοδοτήσουμε την συσκευή ενώ τρέχουμε το DMX-Workshop θα δούμε το παρακάτω. Εδώ φαίνονται τα εξής: το πρόγραμμα κάνει poll στο δίκτυο (με broadcast) για να δει αν υπάρχουν Art-Net συσκευές (ArtPoll) η συσκευή απαντά με (ArtPollReply) το πρόγραμμα ζητά αν η συσκευή υποστηρίζει προγραμματισμό της IP της (ArtIpProg) η συσκευή απαντά ότι υποστηρίζει (ArtIpProgReply) το πρόγραμμα ρωτά τον πίνακα των RDM συσκευών (ArtTodControl) η συσκευή αγνοεί το πακέτο, αφού έχουμε πει ότι δεν θα υποστηρίξουμε RDM σ' αυτό το firmware. συνεχίζει ένα συνεχόμενο ArtPoll / ArtPollReply μεταξύ προγράμματος και συσκευής. Στην επόμενη εικόνα βλέπουμε μια αλληλουχία ArtDMX πακέτων από το πρόγραμμα στον controller. Όπως βλέπετε τα πακέτα αυτά που στέλνονται από το πρόγραμμα δεν παίρνουν ποτέ απάντηση, δεν υποστηρίζουν δηλαδή κάποιο reply και αυτό γίνεται λόγο ταχύτητας της επικοινωνίας. Επίσης βλέπεται ότι οι τιμές 0-255 μεταφράζονται ως ποσοστά, γιατί ουσιαστικά η τιμή για κάθε slot σημαίνει το ποσοστό της μέγιστης τιμής της μεταβλητής, είτε είναι ένταση χρώματος, είτε μοίρες κλπ. Στο σημείο τελειώσαμε και με το τεστάρισμα της συσκευής και εξακριβώσαμε ότι υποστηρίζει σωστά το πρωτόκολλο του 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, σαν αυτόν που φτιάξαμε. <
  5. Με αυτό το άρθρο σκοπεύω να ξεκινήσω μια μίνι σειρά άρθρων με ηλεκτρονικές κατασκευές από μικρής μέχρι μεσαίας δυσκολίας και με υλικά που βρίσκει κανείς πλέον φθηνά μέσω ίντερνετ. Όσον αφορά την δυσκολία, η εξέλιξη πλέον των ηλεκτρονικών και η μαζική τους παραγωγή σε συνδυασμό με την ενασχόληση πολλών ανθρώπων και το ίντερνετ, έχουν κάνει εύκολη την κατασκευή μικρών projects, πολλές φορές χωρίς να χρειάζεται κανείς να έχει ιδιαίτερες γνώσεις για το αντικείμενο. Αυτό εν μέρει είναι καλό γιατί έρχονται σε επαφή με το κομμάτι αυτό πολλοί οι οποίοι δεν θα το έκαναν υπό άλλες συνθήκες, ωστόσο κρύβοντας την πολυπλοκότητα σε τόσο μεγάλο βαθμό, μπορεί να οδηγήσει πολλούς στην απογοήτευση όταν χρειαστεί να κάνουν κάτι εκτός των οριοθετημένων γραμμών. Από την άλλη όμως, μπορεί να ενισχύσει το πείσμα και να ασχοληθεί κάποιος σοβαρότερα με αποτέλεσμα να διευρύνει τις γνώσεις του. Οπότε μένοντας πιστός στην ιδεολογία περί ελεύθερης διακίνησης της γνώσης και των εμπειριών, ελπίζω να κάνω μια αρχή και αναλόγως το ενδιαφέρον να συνεχίσω. Τελειώνοντας με τις βαρετές σε όλους εισαγωγές, το καλύτερο σημείο να ξεκινήσει κανείς δεν είναι άλλο παρά η πλατφόρμα του arduino. Για όσους δεν την ξέρουν λοιπόν, ο arduino δεν είναι τίποτα άλλο παρά ένας απλός 8-bit μικρο-επεξεργαστής, ο οποίος δεν παρουσιάστηκε ξαφνικά δια μαγείας με την εμφάνιση του arduino που έγινε ευρέως γνωστό, αλλά προϋπήρχε πολλά χρόνια πριν. Όμως το arduino τον έκανε ευρείας αποδοχής λόγω κάποιων ευκολιών που δημιουργήθηκαν γύρω από αυτό και λόγω του ότι πολύς κόσμος ασχολήθηκε μαζί του. Ουσιαστικά γράφτηκαν πολλές βιβλιοθήκες κώδικα για τον επεξεργαστή αυτό και λόγω του συγκεκριμένου τρόπου με τον οποίο χρησιμοποιούνται, είναι πολύ εύκολο και απλό στην χρήση του. Στο σημείο αυτό θα πρέπει να πω, πως για λόγους οικονομίας θα θεωρήσω ότι αυτοί που διαβάζουν τα άρθρα αυτά έχουν ήδη κάποιες βασικές γνώσεις ηλεκτρονικών και στοιχειωδώς προγραμματισμού, Σε αντίθετη περίπτωση όμως το ίντερνετ είναι πολύ μεγάλο και έχει όλες τις πληροφορίες που ενδέχεται να σας χρειαστούν. Σαν πρώτη κατασκευή επέλεξα να παρουσιάσω έναν USB Ir receiver, ο οποίος είναι πολύ εύκολος στην κατασκευή του και δεν έχει πολύ κώδικα, αλλά σε κάποιο άλλο άρθρο ίσως δούμε και άλλες παραλλαγές του ίδιου receiver, λίγο πιο εξελιγμένες. Η πρώτη ερώτηση που πρέπει να έρχεται στο μυαλό κάποιου είναι, τι μπορεί να κάνει κανείς με αυτό και τι χρησιμότητα έχει; Πολλά και διάφορα, είναι η απάντηση και ουσιαστικά ο μόνος περιορισμός είναι η φαντασία, αλλά για αρχή ας πούμε ότι μπορεί κανείς να ελέγχει τον υπολογιστή του με ένα οποιοδήποτε τηλεκοντρόλ, πχ σε ένα htpc. Όμως θα μπορούσε κανείς ακόμα να φτιάξει και ένα αυτοματισμό σπιτιού με αυτό και άλλα πολλά. Λογικά η πρώτη ερώτηση που θα έρχεται στο μυαλό κάποιου είναι: «Τι μπορεί να κάνει κανείς με αυτό και τι χρησιμότητα έχει;» «Πολλά και διάφορα!» είναι η απάντηση καθώς, ουσιαστικά ο μόνος περιορισμός είναι η φαντασία, αλλά για αρχή, ας πούμε ότι μπορεί κάποιος να ελέγχει το HTPC του με ένα οποιοδήποτε τηλεκοντρόλ καθισμένος στον καναπέ τουc. Όμως θα μπορούσε κανείς ακόμα, να φτιάξει και ένα αυτοματισμό σπιτιού με αυτό και άλλα πολλά. 2. Υλικά κατασκευής Τα υλικά που θα χρειαστείτε είναι τα εξής: - 1 arduino nano - 1 TSOP-1736 (ή 1136) - 1 led (πχ κόκκινο) - 2 αντιστάσεις (100Ω και 150Ω) - 1 πυκνωτής (1mF στα 25 ή 50V) - 1 καλώδιο micro (ή mini) usb (εξαρτάται από την υποδοχή του arduino) - 1 οποιοδήποτε τηλεχειριστήριο TSOP-1736 Το TSOP είναι ένας κοινός IR δέκτης (ουσιαστικά μια φωτοδίοδος) από τους πολλούς που υπάρχουν στην αγορά και ο λόγος που τον χρησιμοποίησα δεν είναι άλλος παρά το ότι τον είχα ήδη. Μπορείτε να χρησιμοποιήσετε οποιοδήποτε IR δέκτη, αρκεί όμως να έχει φέρουσα συχνότητα 36KHz ώστε να είναι συμβατός με το πρωτόκολλο RC-5/6 το οποίο υποστηρίζουν τα περισσότερα τηλεκοντρόλ. Επομένως το 36 στο TSOP-1736 αναφέρεται ακριβώς σε αυτό, δηλαδή την συχνότητα και γι' αυτό το λόγο είναι ακριβότερο, οπότε μην ξεγελαστείτε πχ από την τιμή ενός TSOP-1738 και πάρετε αυτό γιατί η φέρουσα θα είναι 38ΚΗz και δεν θα δουλέψει (εκτός και αν το τηλεκοντρόλ είναι 38Khz). Η τιμή του στο ebay είναι λίγο παραπάνω από 2 ευρώ. Το module αυτό έχει 3 ακροδέκτες, που είναι η τάση τροφοδοσίας, η γη και το pin εξόδου των δεδομένων το οποίο πάει στον arduino ώστε να διαβάζει τις εισερχόμενες εντολές από το τηλεχειριστήριο. Εναλλακτικά, μπορείτε να χρησιμοποιήσετε τον TSOP1136, τον οποίο μπορείτε να βρείτε στο 1/5 της τιμής του 1736 στο Ebay. Arduino nano v3.0 Το arduino όπως είπαμε και πιο πριν, δεν είναι κάτι άλλο παρά ένας 8-bit μικρο-επεξεργαστής της Atmel της σειράς AVR και το μοντέλο του είναι το ATmega328. Οι δυνατότητές του σε σχέση με την τιμή του δεν είναι κάτι αξιόλογο (κρίνοντας πάντα από τον ανταγωνισμό και την ισοπέδωση των πάντων από τους ARM), αλλά είναι υπεραρκετός για μικρές εφαρμογές, χωρίς μεγάλες απαιτήσεις. Το κόστος του είναι στα 2.5 ευρώ στο ebay και στα κύρια χαρακτηριστικά του συγκαταλέγονται τα 32KB flash (για τον κώδικα), 2 ΚΒ sram μνήμη, 1ΚΒ EEPROM, 2x SPI, 1x I2C, 1x UART, 8x 10bit ADC και η συχνότητα λειτουργίας του είναι το μέγιστο 20MHz. Αυτό που τον κάνει να ξεχωρίζει ωστόσο είναι η αρχιτεκτονική του καθώς σε αντίθεση με άλλους παρεμφερείς μικρο-επεξεργαστές, μπορεί να εκτελέσει 1 εντολή ανά κύκλο ρολογιού, ενώ άλλοι χρειάζονται 4 κύκλους ανά εντολή (π.χ. PIC, C51) με αποτέλεσμα σε εφαρμογές που η ταχύτητα ελέγχου κάποιων περιφερειακών είναι κρίσιμη να κερδίζει (ένα παράδειγμα που θα δούμε σε άλλο άρθρο είναι ο φωτισμός με RGB led όπως πχ το WS2812B, του οποίου το πρωτόκολλο απαιτεί πολύ μεγάλη ταχύτητα και παλμούς της τάξης των nanoseconds). Τα υπόλοιπα υλικά -των οποίων τη χρήση θα δούμε παρακάτω- είναι απλά ένα LED, που θα δείχνει ότι το arduino έλαβε μια εντολή από το τηλεχειριστήριο, δυο αντιστάσεις και ένας πυκνωτής. Τα υλικά της κατασκευής μαςΑς τα δούμε όμως ένα-ένα περιληπτικά. 3. Περιβάλλον Arduino (IDE) Εδώ είναι σημαντικό να πούμε λίγα λόγια για το περιβάλλον προγραμματισμού των arduino. Αυτό αποτελείται από ένα πρόγραμμα στο οποίο συνδυάζονται πολλαπλές λειτουργίες, όπως το τμήμα που γράφουμε τον κώδικα, ο compiler/linker που μετατρέπει το πρόγραμμα σε γλώσσα μηχανής, ο προγραμματιστής που φορτώνει το πρόγραμμα στον μικρο-επεξεργαστή και τέλος ένα σειριακό τερματικό που χρησιμοποιείται για την επικοινωνία του υπολογιστή και του arduino. O IDE του arduino έχει τα θετικά του και τα αρνητικά του, στα θετικά είναι ότι όλες οι λειτουργίες που χρειάζονται είναι συγκεντρωμένες και δουλεύουν όπως πρέπει χωρίς να χρειάζεται ο χρήστης να κάνει κάποιες ρυθμίσεις, αρκεί να έχει εγκατεστημένη την java. Στα αρνητικά του είναι ότι ο IDE του είναι στοιχειώδης και του λείπουν κάποιες λειτουργίες, όπως να αναγνωρίζει αυτόματα τις συναρτήσεις από τις βιβλιοθήκες και να συμπληρώνει τα ονόματά τους την ώρα που γράφετε κώδικα, πράγμα το οποίο προσωπικά θεωρώ ότι πρέπει να είναι στάνταρ εξοπλισμός σε έναν IDE. Για τα αρνητικά αυτά υπάρχουν λύσεις όπως το να εγκαταστήσει κανείς το Atmel Studio, τον επίσημο IDE της Atmel που υποστηρίζει τους AVR, μαζί με το Visual Micro for Arduino plugin το οποίο αναλαμβάνει να ενσωματώσει τις λειτουργίες του Arduino IDE στο Atmel Studio. Όποιος έχει ήδη εμπειρία με το Visual Studio της Microsoft δεν θα δυσκολευτεί να το δουλέψει. Μια άλλη εναλλακτική, κυρίως για linux, είναι το Eclipse IDE μαζί με το αντίστοιχο plugin για το arduino, μια διαδικασία λίγο πιο δύσκολη η οποία περιγράφεται εδώ. Προσωπικά χρησιμοποιώ και τις 3 μεθόδους ανάλογα το λειτουργικό και την περίσταση, αλλά για ευκολία θα αναφερόμαστε πάντα στο Arduino IDE. Στα περισσότερα project με τον arduino θα χρειαστούν έτοιμες βιβλιοθήκες άλλων χρηστών που έχουν κάνει την δύσκολη δουλειά να γράψουν τον κώδικα ο οποίος ενσωματώνεται εύκολα στον Arduino IDE. Η εγκατάσταση των βιβλιοθηκών είναι εύκολη και αρκεί να γίνουν αντιγραφή στον φάκελο: C:\Users\<username>\Documents\Arduino\libraries αφού έχουμε εγκαταστήσει τον Arduino IDE και έχουμε φροντίσει να μην τρέχει το πρόγραμμα. Μετά την εγκατάσταση των βιβλιοθηκών, μόλις τρέξουμε το πρόγραμμα, αυτό τις αναγνωρίζει αυτόματα και μπορούμε να τις χρησιμοποιήσουμε. Στο σημείο αυτό θα χρειαστούμε μια εξωτερική βιβλιοθήκη και συγκεκριμένα την IR Remote, η οποία αναλαμβάνει το decode από τις RC-5 εντολές. Αφού την κατεβάσουμε την βάζουμε στον φάκελο με τις βιβλιοθήκες που είπαμε παραπάνω, όμως θα χρειαστεί να σβήσουμε και μια βιβλιοθήκη του Arduino IDE, η οποία έχει το ίδιο όνομα και μπερδεύεται με αυτή που θέλουμε να χρησιμοποιήσουμε. Για να το κάνουμε αυτό σβήνουμε τον φάκελο RobotIRremote που βρίσκεται μέσα στο C:\Program Files (x86)\Arduino\libraries. 4. Κατασκευή Για να κατασκευάσουμε την πλακέτα χρειαζόμαστε τα υλικά που περιγράψαμε προηγουμένως. Το κύκλωμα που πρέπει να κατασκευάσουμε είναι το παρακάτω: Σημείωση: Μην σας προβληματίζει ότι στο σχηματικό φαίνεται ο arduino mini, επειδή το pinout του είναι ίδιο με τον nano η επιλογή του σωστού pcb component θα πρέπει να γίνει όταν κάνετε export σε pcb. Ο πυκνωτής του οποίου η τιμή δεν φαίνεται, είναι όπως αναφέρθηκε παραπάνω 1mF στα 25 ή 50V. Αν θέλει κάποιος μπορεί να σχεδιάσει και ένα pcb και να το παραγγείλει, αλλά η κατασκευή είναι τόσο απλή που δεν χρειάζεται καθώς μια διάτρητη πλακέτα είναι υπέρ-αρκετή. Η πλακέτα πρέπει να είναι διάτρητη χωρίς ενώσεις ανάμεσα στις νησίδες της. Το tsop1736 τροφοδοτείται από το arduino μέσω μιας αντίστασης 100Ω, ενός πυκνωτή παράλληλα και έχει κοινή γη με αυτό, ενώ το pin των δεδομένων συνδέεται απ' ευθείας στο pin D3 του arduino. Το LED γειώνει την κάθοδό του στη γη του arduino και η άνοδός του συνδέεται στο pin D2 μέσω μιας αντίστασης 150Ω. Οι αντιστάσεις μπορεί να είναι είτε through-hole είτε SMD, ότι μπορείτε να βρείτε πιο εύκολα. Αφού κάνουμε τις κατάλληλες κολλήσεις το αποτέλεσμα μπορεί είναι το παρακάτω. Όσων αφορά την τοπολογία των εξαρτημάτων επειδή είναι πολύ απλό το κύκλωμα, απλά προπαθήστε να τοποθετήσετε με τέτοιο τρόπο ώστε να μην έχετε πολλά καλώδια και βάλτε το LED και το tsop μπροστά ώστε το arduino να τα καπακώνει και να είναι σταθερά. Ο καθένας φυσικά μπορεί να κάνει ότι διάταξη νομίζει ότι είναι καλύτερη για τα υλικά. Από εδώ μπορείτε να κατεβάσετε τα αρχεία για το σχηματικό, τα οποία έχουν γίνει με το KiCad και μέσα στα αρχεία υπάρχουν και οι απαιτούμενες βιβλιοθήκες. Σχηματικό κυκλώματοςΤο αποτέλεσμα 5. Κώδικας arduino Αφού τελειώσουμε με το κύκλωμα σιγουρευόμαστε ότι όλες οι συνδέσεις είναι σωστές και κυρίως ότι δεν βραχυκυκλώνουν τα 5V με το GND. Στην συνέχεια και εφόσον έχετε εγκαταστήσει το arduino IDE ανοίγετε αυτό το αρχείο, εδώ να πούμε ότι το αρχείο *.ino που είναι ο κώδικας του arduino θα πρέπει να βρίσκεται πάντα μέσα σε ένα φάκελο που έχει το ίδιο όνομα με το αρχείο, οπότε στην περίπτωσή μας είναι ard_ir/ard_ir.ino. Αφού ανοίξει ο κώδικας θα δείτε το παρακάτω παράθυρο Στην συνέχεια πρέπει να δηλώσετε στον IDE τον τύπο του arduino, τον επεξεργαστή του και την USB πόρτα στην οποία βρίσκεται το arduino. Οπότε συνδέετε το arduino, περιμένετε μέχρι να αναγνωρίσει το λειτουργικό την συσκευή και να βρει την σειριακή πόρτα. Ύστερα από το μενού Tools->Board διαλέγετε το arduino nano, μετά από το Tools->Processor τον ATmega328 και από το Tools->Port την COM πόρτα στην οποία βρίσκεται το arduino. Στην συνέχεια πατήστε το κουμπί με το tick (verify), ώστε να γίνει compile o κώδικας. Λογικά δεν θα πρέπει να συναντήσετε κάποιο πρόβλημα (αν συναντήσετε κλείστε τα όλα και πηγαίνετε για καφέ), οπότε θα δείτε το παρακάτω μήνυμα. Αυτό σημαίνει ότι είστε έτοιμοι να “κάψετε” τον κώδικα στο arduino, οπότε πατώντας το κουμπί του upload δίπλα από το verify, θα προγραμματιστεί το arduino και θα πρέπει να δείτε το παρακάτω μήνυμα. Για να δοκιμάσετε ότι δούλεψε ανοίξτε από το Tools το Serial Monitor, επιλέξτε την ταχύτητα του σειριακού (baud rate) στα 9600bps και με ένα τηλεκοντρόλ σημαδέψτε τον δέκτη και πατήστε ένα κουμπί. Θα πρέπει να εμφανιστεί στο σειριακό μόνιτορ ο κωδικός του κουμπιού που πατήθηκε. Στο παρακάτω παράδειγμα φαίνεται το κουμπί ΟΚ ενός τηλεκοντρόλ τηλεόρασης LG. Τα FFFFFFFF που φαίνονται σημαίνει ότι το κουμπί ΟΚ κρατήθηκε πατημένο, οπότε ισχύει ο προηγούμενος κωδικός, δηλαδή το δεκαεξαδικό 20DF22DD. Επομένως καταφέρατε να φτιάξετε ένα αποκωδικοποιητή για RC-5 πρωτόκολλο που μπορεί να αναγνωρίζει όλα τα RC-5 τηλεχειριστήρια. Τώρα όπως και στην εισαγωγή θα αναρωτηθεί κάποιος: «Ωραία και τώρα τι;» Οπότε πάμε να δούμε ένα πολύ απλό παράδειγμα για το που μπορεί να χρησιμοποιηθεί αυτό (φυσικά το τι μπορεί να κάνει κανείς τελειώνει εκεί που τελειώνει η φαντασία). 6. IR & Kodi Ένα απλό παράδειγμα χρήσης του IR αποκωδικοποιητή είναι να μπορείτε να χειριζόσαστε το Kodi από ένα τηλεχειριστήριο. Αν και υπάρχουν διάφοροι clients όπως το Yatse στο android που κάνουν την ίδια και καλύτερη δουλειά, πολλές φορές αποδεικνύεται πως οι απλές λύσεις είναι καλύτερες σε πραγματική χρήση. Για παράδειγμα προσωπικά περισσότερο με βολεύει να χρησιμοποιώ το τηλεκοντρόλ, παρά το κινητό ή το tablet για χειρίζομαι το Kodi. Επίσης το Kodi υποστηρίζει και το πρωτόκολλο CEC, το οποίο χρησιμοποιείται για να την ανταλλαγή εντολών και δεδομένων μεταξύ HDMI συσκευών, αλλά όπως θα ξέρουν αρκετοί παθόντες, κάποιοι κατασκευαστές (όπως η LG) όχι μόνο δεν αφήνουν όλες τις εντολές από το τηλεχειριστήριο να περνούν μέσω του CEC, αλλά αυτές που τελικά περνούν είναι τόσο λίγες που δεν φτάνουν ούτε για τις βασικές λειτουργίες. Όσον αφορά τον υπολογιστή τώρα, υπάρχουν διάφορα προγράμματα τα οποία υποστηρίζουν κάποιους IR δέκτες του εμπορίου και μπορούν να κάνουν διάφορους αυτοματισμούς. Τέτοια προγράμματα είναι πχ το WinLIRC και το EventGhost, αλλά λόγο του ότι είναι ολίγον παρατημένα projects και ορισμένες φορές λίγο δύσχρηστα, επέλεξα να γράψω για τις ανάγκες μου ένα άλλο πρόγραμμα που κάνει παρόμοια δουλειά και ο κώδικάς του φυσικά είναι ανοιχτός για όποιον θέλει να το επεξεργαστεί ή να το εμπλουτίσει (για το source code δείτε την σημείωση στο τέλος του άρθρου). Αυτό που κάνει ουσιαστικά, είναι απλά να αντιστοιχεί τους κωδικούς του τηλεκοντρόλ σε shortcuts του πληκτρολογίου ή να τρέχει αρχεία, scripts κ.λ.π. με το πάτημα ενός κουμπιού του τηλεχειριστηρίου. Επίσης για όσους επιθυμούν να χρησιμοποιήσουν κάποιο άλλο πρόγραμμα, θα εξομοιώσουμε με το arduino έναν IR δέκτη της αγοράς και συγκεκριμένα τον Irman, του οποίου το κόστος ανέρχεται περίπου στα 100 ευρώ. Οι αλλαγές που χρειάζεται να κάνετε στον κώδικα βρίσκονται στο παρακάτω αρχείο, οπότε το ανοίξτε το και ακολουθώντας την προηγούμενη διαδικασία γράψτε το νέο πρόγραμμα στο arduino. Οπότε τώρα πλέον έχετε ένα Irman με κόστος μόνο μερικά ευρώ. ard_irman.ino Στην συνέχεια εγκαταστήστε και τρέξτε το παρακάτω πρόγραμμα. IR Key Repeater Αφού το τρέξετε θα δείτε το παρακάτω παράθυρο. Σε αυτό βλέπουμε μερικά κουμπιά και μια λίστα. Τα κουμπιά αυτά είναι τα εξής (αριστερά προς τα δεξιά): (1) Connect, σύνδεση του προγράμματος στον δέκτη. (2) Disconnect, αποσύνδεση από τον δέκτη. (3) Settings, τα settings του προγράμματος, στα οποία ρυθμίζεται την σειριακή usb θύρα. (4) Learn, εκμάθηση νέου τηλεχειριστηρίου. Πατάτε μια φορά το κουμπί και παραμένει ενεργοποιημένο, για να απενεργοποιήσετε την εκμάθηση πατήστε ξανά το κουμπί. (5) Import, εισαγωγή αρχείου εντολών ενός άλλου τηλεχειριστηρίου. (6) Save, σώσιμο των κωδικών σε ένα αρχείο (7) Bind, capture ενός shortcut του πληκτρολογίου. (8) Process, επιλέγοντας μια εντολή και πατώντας αυτό το κουμπί, ανοίγει ένα παράθυρο στο οποίο μπορείτε να επιλέξετε μια εφαρμογή ή ένα αρχείο το οποίο θέλετε να τρέχει με την εντολή αυτή. (9) Test, διαλέγοντας μια εντολή από την λίστα και πατώντας αυτό το κουμπί, εξομοιώνετε τι θα συμβεί όταν το πρόγραμμα λάβει αυτή την εντολή από τον δέκτη. (10) Delete, επιλέξτε μια εντολή και πατήστε το για να την σβήσετε από τον πίνακα. (11) Clear, σβήσιμο όλων των υποστηριζόμενων εντολών. Επομένως αρχικά πατήστε στο γρανάζι για να ανοίξουν τα settings του προγράμματος και από εκεί επιλέξτε την σειριακή θύρα στην οποία έχει βρει το λειτουργικό τον δέκτη και στην συνέχεια πατήστε Apply για να αποθηκευτούν οι αλλαγές. Ύστερα πατήστε το κουμπί (1) για να συνδεθείτε στο arduino και στην συνέχεια πατήστε το κουμπί (4). Στην συνέχεια αρχίστε να πατάτε ένα-ένα τα πλήκτρα του τηλεχειριστηρίου σας μέχρι να δείτε τους κωδικούς να εμφανίζονται στο παράθυρο. Είναι σημαντικό να θυμάστε με ποια σειρά τα πατήσατε ώστε να θυμάστε ποιο είναι το κάθε κουμπί ώστε να ρυθμίσετε μετά τα shortcuts. Μια απλή μέθοδος είναι να ξεκινάτε πάντα από πάνω προς τα κάτω και με φορά από αριστερά προς τα δεξιά ή όπως αλλιώς σας βολεύει. Αφού τελειώσετε με την εκμάθηση του τηλεχειριστηρίου, ξαναπατήστε στο πρόγραμμα το κουμπί (4) ώστε να βγει το πρόγραμμα από το learning mode και στην συνέχεια πατήστε το (6) για να αποθηκευτούν οι αλλαγές. Παρακάτω βλέπετε ένα παράδειγμα από το δικό μου τηλεχειριστήριο. Για να δώσετε τώρα λειτουργία σε κάθε πάτημα του κουμπιού του τηλεκοντρόλ υπάρχουν δυο τρόποι. Ο ένας είναι να κάνετε διπλό κλικ στο μεσαίο κελί της γραμμής της εντολής που θέλετε και να γράψετε μόνοι σας τον συνδυασμό που θέλετε (πχ Ctrl+Alt+A), αλλά αυτό μην το προτιμάται γενικά αν δεν ξέρετε ακριβώς την αναπαράσταση του κάθε πλήκτρου (πχ Control = Ctrl). Ο δεύτερος είναι να πατήστε μονό κλικ στο μεσαίο κελί και μετά το κουμπί (7) στο πρόγραμμα και στην συνέχεια πατήστε τον συνδυασμό των πλήκτρων που επιθυμείτε να δώσετε στην εντολή αυτή. Επίσης για να αντιστοιχήσετε τα shortcuts του Kodi με το τηλεχειριστήριο θα χρειαστείτε αυτό το link, στο οποίο αναγράφονται όλες οι συντομεύσεις του Kodi. To αποτέλεσμα στην περίπτωση μου είναι το παρακάτω, αλλά αν δεν έχει κάποιος το ίδιο ακριβώς χειριστήριο δεν έχει νόημα να χρησιμοποιήσει το ίδιο αρχείο. Τέλος το checkbox δίπλα από κάθε εντολή (στο τρίτο κελί) ενεργοποιεί ή απενεργοποιεί το repeat μιας εντολής. Αν παρατηρήσετε στα περισσότερα τηλεχειριστήρια όταν κρατάτε πατημένο ένα πλήκτρο τότε το LED του δέκτη συνεχίζει και αναβοσβήνει, πράγμα που σημαίνει ότι το χειριστήριο συνεχίζει να στέλνει την τελευταία εντολή (αυτό ουσιαστικά το κάνει στέλνοντας τον κωδικό 0xFFFFFFFF). Επομένως επειδή σε κάποιες περιπτώσεις είναι μη λειτουργικό ή ενοχλητικό κάτι τέτοιο, αν δεν έχετε επιλέξει το repeat, τότε το πρόγραμμα θα στείλει μόνο μια φορά την συντόμευση των πλήκτρων στο σύστημα ανεξάρτητα με το πόσο θα το κρατήσετε πατημένο. Για παράδειγμα στο κουμπί του volume χρειάζεται το repeat, αλλά στο OK/Enter όχι, στην περίπτωση του Kodi. Τώρα όσων αφορά τα τηλεχειριστήρια, μπορείτε να χρησιμοποιήσετε σχεδόν οποιοδήποτε της αγοράς, μια ιδέα ωστόσο είναι να πάρετε ένα φθηνό κοντρόλ από το ebay, σαν αυτά που χρησιμοποιούν για τις RGB led-οταινίες και να φτιάξετε ένα δικό σας layout να το εκτυπώσετε σε έναν έγχρωμο εκτυπωτή και με μια μεμβράνη να το βάλετε πάνω στο κοντρόλ. Διαφορετικά μπορείτε να αναστήσετε το τηλεκοντρόλ της παλιάς σας τηλεόρασης. Προσωπικά βρήκα ένα παλιό τηλεκοντρόλ, το οποίο δεν θυμάμαι από που είναι και πλέον το χρησιμοποιώ και είναι το παρακάτω. Ακολουθεί και ένα βίντεο με την χρήση του. Κάτω από την τηλεόραση θα δείτε και το arduino να αναβοσβήνει το LED του όταν λαμβάνει μια εντολή. Όποιος θέλει το source code από το IR Key Repeater μπορεί να μου στείλει προσωπικό μήνυμα και θα του τον στείλω. Υπόψιν, ότι ο κώδικας υπάγεται στο LGPL v3, επομένως όποιες αλλαγές γίνουν και είναι προς την ευκολία των υπολοίπων, καλό θα ήταν να κοινοποιηθούν και στο άρθρο. Τέλος το κόστος κατασκευής ανέρχεται στα 4 έως 10 ευρώ, ανάλογα με του που ψωνίζετε (αν τα πάρετε από ebay με την ανάλογη αναμονή, τότε υπολογίστε 4-5 ευρώ). Σε όσους γενναίους τολμήσουν καλή επιτυχία και ότι σχόλια ή βοήθεια χρειαστείτε γράψτε μου εδώ.
×
×
  • Δημιουργία...

Important Information

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