Παρακολούθηση οπίσθιου φωτισμού από λωρίδα LED Arduino. Ο φωτισμός Pixel είναι απλός και γρήγορος. Πιθανές επιλογές υλοποίησης

Οι τηλεοράσεις με δυναμικό οπίσθιο φωτισμό γύρω από το πλαίσιο της οθόνης είναι ένα από τα χαρακτηριστικά γνωρίσματα της Philips. Και σε αντίθεση με πολλούς άλλους, λειτουργεί. Ωστόσο, όλα έχουν ένα τίμημα και οι τηλεοράσεις με Ambilight και αυξημένη βύθιση είναι πιο ακριβές από πολλά άλλα μοντέλα.

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

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

Υπάρχουν δύο κύρια διαθέσιμα μοντέλα: μια έκδοση οθόνης (30 LED) και μια έκδοση τηλεόρασης (60 LED). Υπάρχει επίσης ένα πολύ απλό - για 10 LED, αλλά είναι κατάλληλο μόνο για τις μικρότερες οθόνες.

Η έκδοση τηλεόρασης είναι εξοπλισμένη με εξωτερικό τροφοδοτικό. Επίσης υπέρ του είναι ένας μεγαλύτερος αριθμός LED, που δίνει μεγαλύτερη περιοχή φωτισμού (θα λάμπει όλο και πιο ψηλά, με άλλα λόγια). Εάν τέτοιες επιλογές δεν είναι κατάλληλες για οποιονδήποτε λόγο, μπορείτε να επικοινωνήσετε με τους προγραμματιστές: για μια μικρή επιπλέον πληρωμή θα προσφέρουν μια τροποποιημένη έκδοση.

Minrunway.ru

Το PaintPack, στην πραγματικότητα, είναι μια μικρή θήκη στην οποία συνδέονται αφαιρούμενες λωρίδες LED και στις δύο πλευρές. Το κουτί με τη γέμιση περιέχει ενδείξεις και υποδοχή τροφοδοσίας, καθώς και microUSB για σύνδεση σε υπολογιστή. Υπάρχει επίσης μια κύρια υποδοχή (ιδιόκτητη) για τη σύνδεση δύο συσκευών σε σειρά.

Το σώμα της συσκευής τοποθετείται στο πίσω μέρος της τηλεόρασης ή της οθόνης. Στη συνέχεια, οι λωρίδες LED τοποθετούνται σύμφωνα με τις οδηγίες, το ρεύμα συνδέεται και η μαγεία αρχίζει. Όταν συνδέετε το PaintPack σε έναν υπολογιστή μέσω υποδοχής USB, πρέπει να εγκαταστήσετε προγράμματα οδήγησης και να διαμορφώσετε τη συσκευή στο πακέτο του προγράμματος.


mysku.ru

Η ρύθμιση γίνεται χρησιμοποιώντας το πακέτο AmbiBox. Πρέπει να μεταβείτε στο μενού «Έξυπνος οπίσθιος φωτισμός», να επιλέξετε τη μέθοδο λήψης οθόνης και έναν από τους τρόπους λειτουργίας που προσφέρονται στο πρόγραμμα:

  1. Στατικό φόντο - μπορεί να ρυθμιστεί οποιοδήποτε χρώμα, η λάμψη LED μπορεί να ρυθμιστεί.
  2. Έγχρωμη μουσική - ο οπίσθιος φωτισμός θα αναβοσβήνει με τον καιρό με τον ήχο της μουσικής. Το χρώμα του οπίσθιου φωτισμού έχει οριστεί σε πράσινο-κίτρινο.
  3. Δυναμικό φόντο - μια ομαλή ροή ενός χρώματος σε άλλο.
  4. Η λήψη οθόνης είναι ο κύριος τρόπος λειτουργίας.

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

Το PaintPack λειτουργεί λίγο πιο αργά από το επίσημο ανάλογο της Philips. Λαμβάνοντας όμως υπόψη τη διαφορά κόστους και τη δυνατότητα αναβάθμισης οποιασδήποτε συσκευής, η επιλογή είναι προφανής.

Καλησπέρα σας κυρίες και κύριοι.
Σήμερα θα σας πω πώς, σε πέντε έως δέκα λεπτά, χρησιμοποιώντας ένα κολλητήρι, τρία καλώδια και μια βρισιά (καλά, επίσης ένα Arduino με ταινία ws2812b) να συναρμολογήσετε ένα ανάλογο του Ambilight της Philips, το οποίο από ορισμένες απόψεις θα είναι ανώτερη από αυτήν.

Προσοχή! Υπάρχουν πολλές φωτογραφίες κάτω από το κόψιμο!

Ενημέρωση 22/11/14: Εγκατάσταση σε Android, κάπως...

Ενημέρωση 26/11/16: Νέο πρισματικό πιρούνι με εκπληκτική απόδοση σε παιχνίδια και βίντεο


Είχα το βλέμμα μου στα ελεγχόμενα LED ws2812b για πολύ καιρό, αγόρασα ένα ζευγάρι για να «παίξω», αλλά ο φρύνος δεν μου επέτρεψε να κάνω μια μεγάλη παραγγελία, αλλά τελικά ωρίμασα, στραγγάλισα τον φρύνό μου και παρήγγειλα ένα 4 -μετρική λωρίδα 60 διόδων ανά μέτρο. Η παραγγελία έφτασε σχετικά γρήγορα. Υποδοχή στην Κίνα 3.11 - απόδειξη 17.11.

Έφτασε ένα δέμα (ή μάλλον μια μικρή συσκευασία) βάρους 134 g, τα πάντα ήταν συσκευασμένα σε μια χάρτινη σακούλα με ένα στρώμα φυσαλίδων μέσα, η ίδια η λωρίδα ήταν συσκευασμένη σε μια ασημένια τσάντα με κούμπωμα, τυπική για λωρίδες LED.

Η ίδια η ταινία μοιάζει με αυτό.

Συγκολλητικό στρώμα.

Οι σύνδεσμοι είναι κολλημένοι στην ταινία και στις δύο πλευρές. Στη μία πλευρά για τη σύνδεση του ελεγκτή και της τροφοδοσίας, από την άλλη για την επέκταση της ταινίας σε μήκος (οι ταινίες μπορούν να συνδεθούν σε μια αλυσίδα). Το κιτ περιλαμβάνει υποδοχές για σύνδεση ισχύος και ελεγκτή.

Έχοντας συνδέσει γρήγορα την κασέτα με το Arduino και άνοιξα το ρεύμα, διασκέδασα πολύ και αποφάσισα ότι ήρθε η ώρα να κάνω κάτι με αυτό. Δεν σκέφτηκα για πολύ καιρό ότι ήθελα να συναρμολογήσω τον οπίσθιο φωτισμό για την οθόνη 3D μου για πολύ καιρό και τα εξαρτήματα ήταν διαθέσιμα, οπότε άρχισα γρήγορα να ασχοληθώ. Θα συναρμολογήσουμε έναν ελαφρώς τροποποιημένο οπίσθιο φωτισμό Adalight.

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

Για να δημιουργήσετε τη δική σας οθόνη ή οπίσθιο φωτισμό τηλεόρασης θα χρειαστείτε:

  • Arduino (το Arduino Nano στο ATmega328 θα ήταν ιδανικό)
  • Λωρίδα LED στο ws2812b (στην περίπτωσή μου χρειάστηκε λίγο περισσότερο από 1 μέτρο λωρίδας για μια οθόνη 23")
  • Συγκολλητικό σίδερο χαμηλής ισχύος (ροή και συγκόλληση)
  • Τρεις καλωδιώσεις
  • Τροφοδοτικό πέντε volt (ένα μέτρο ταινίας καταναλώνει το πολύ 14,4 watt)
Τοποθετούμε την οθόνη με την πλάτη της προς το μέρος μας. Εφαρμόζοντας την ταινία στο σώμα της οθόνης από την πίσω πλευρά, μετράμε πόση ταινία χρειαζόμαστε για κάθε πλευρά. Αποφάσισα να επισημάνω μόνο τρεις πλευρές, αφήνοντας το κάτω μέρος χωρίς φωτισμό, γιατί... Από κάτω υπάρχει ένα όχι πολύ όμορφο περίπτερο. Πρέπει να μετρήσετε την ταινία από την κάτω αριστερή άκρη και δεξιόστροφα (μην ξεχνάτε ότι πρέπει να γυρίσετε την οθόνη με την πλάτη της σε εμάς) Εάν η τηλεόραση ή η οθόνη σας κρέμεται στον τοίχο, τότε είναι λογικό να κάνετε φωτισμό γύρω από το ολόκληρη την περίμετρο. τότε πρέπει να μετρήσετε από το κέντρο της κάτω άκρης και δεξιόστροφα (Αυτό θα διευκολύνει τη διαμόρφωση του λογισμικού στα τελευταία στάδια. Χρησιμοποιώντας ένα συνηθισμένο ψαλίδι, κόψτε κομμάτια του απαιτούμενου μήκους κατά μήκος της γραμμής κοπής, μπορείτε να το αναγνωρίσετε με Το εικονίδιο του ψαλιδιού πάνω του Ξεκινήστε το κόψιμο από τα πλάγια των βυσμάτων για τη σύνδεση του ελεγκτή, μέσω αυτών θα συνδέσουμε τα κομμένα σημεία με τρία καλώδια, αποκαθιστώντας την επαφή με τις μόλις κομμένες γραμμές της ταινίας μαζί Μην ανακατεύετε την κατεύθυνση προς το τέλος της ταινίας.

Θα βγει ως εξής:

Αφού κολλήσετε όλα τα κομμάτια μεταξύ τους, μπορείτε να κολλήσετε την ταινία μας σε όλη την περίμετρο της οθόνης (από την αριστερή πλευρά και δεξιόστροφα ξεκινώντας από τους συνδέσμους στην ταινία)

Μετά από αυτή τη διαδικασία θα πρέπει να λάβετε αυτό:

Συγκολλάμε το κόκκινο καλώδιο (+5V) ή το συνδέουμε στον πείρο +5V στο Arduino, συνδέουμε το λευκό καλώδιο στη γείωση και το πράσινο (κεντρικό) καλώδιο στον πείρο D6

Συνδέουμε το τροφοδοτικό στο δεύτερο παρεχόμενο βύσμα με δύο καλώδια: κόκκινο σε +5V, λευκό προς μείον. Είναι σημαντικό η τάση τροφοδοσίας να είναι εντός 5-5,2V. Είναι καλύτερο να τροφοδοτήσετε μια μακριά λωρίδα σε πολλά σημεία για να αποφύγετε μια μεγάλη πτώση τάσης στις διόδους.

Αυτό είναι όλο, η κύρια σωματική εργασία έχει τελειώσει.

Χρήστης tidehunterrrσυνιστά να χρησιμοποιήσετε αυτό το σκίτσο εάν αντιμετωπίζετε πρόβλημα με τις διόδους που τρεμοπαίζουν

Αποσυσκευάζουμε το Arduino IDE σε οποιοδήποτε βολικό μέρος, ρίχνουμε τον φάκελο FastLED από το αρχείο με τα αρχεία μέσα στον φάκελο βιβλιοθήκες, ο οποίος βρίσκεται στο φάκελο ArduinoIDE. Εκτελούμε το αρχείο με το arduino.exe, αυτό θα δημιουργήσει τον φάκελο "arduino" στο φάκελο των εγγράφων, σε αυτόν δημιουργούμε το φάκελο NeoPixel και ρίχνουμε το σκίτσο μας σε αυτόν. Έξοδος από το Arduino IDE.

Συνδέουμε το Arduino μας στον υπολογιστή, τα προγράμματα οδήγησης θα πρέπει να εγκατασταθούν αυτόματα, αν δεν συμβεί αυτό, τότε υποδεικνύουμε στο σύστημα τη διαδρομή προς τον φάκελο μας με το Arduino IDE και θα πρέπει να εγκατασταθούν τα προγράμματα οδήγησης.

Εκκινήστε το arduino.exe.

Βλέπουμε τα εξής:

Ανοίξτε το σκίτσο μας

Στο μενού Service-> Board, επιλέξτε το nano μας
Στο μενού Εργαλεία -> Επεξεργαστής επιλέξτε ATmega328
Στο μενού Εργαλεία -> Θύρα, επιλέξτε την εικονική θύρα Com στην οποία αναφέρεται το Arduino μας (συνήθως αυτή που δεν είναι com1)

Στη θέση που επισημαίνεται με κίτρινο υποδεικνύουμε τον συνολικό αριθμό των διόδων στον οπίσθιο φωτισμό μας (πήρα 69).

Κάντε κλικ σε αυτό το κουμπί:

Αυτό θα μεταγλωττίσει και θα φορτώσει το σκίτσο στο νανο μας. Κατά τη διάρκεια αυτής της διαδικασίας, οι δίοδοι στο Arduino θα πρέπει να αναβοσβήνουν έντονα. Αφού ανεβάσετε το σκίτσο, κλείστε το IDE, αποσυνδέστε το Arduino από τον υπολογιστή, συνδέστε το στην ταινία χρησιμοποιώντας το βύσμα 3 καλωδίων και συνδέστε το τροφοδοτικό στην ταινία. Τώρα επανασυνδέστε το nano στο USB.

Κατεβάστε το υπέροχο πρόγραμμα Prismatik
Από το υπέροχο έργο Lightpack και εγκαταστήστε το.

Ενημέρωση: Κατεβάστε το νέο fork από εδώ

Σχεδόν μηδενικός φορτίο CPU στην επιφάνεια εργασίας, σε βίντεο και κυρίως σε παιχνίδια!
Όταν εκκινήσετε θα δείτε αυτό:

Κάντε κλικ στο "Επόμενο"

Επιλέξτε Adalight και κάντε κλικ στο "Επόμενο"

Εδώ γράφουμε τον αριθμό της θύρας μας, και αφήνουμε τα υπόλοιπα ήσυχα

Στη συνέχεια επιλέξτε το όνομα που σας αρέσει

Εδώ πρέπει να υποδείξετε τον συνολικό αριθμό των διόδων μας

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

Ένα εικονίδιο με μια εικόνα ενός ήλιου θα εμφανιστεί στο δίσκο δίπλα στο ρολόι, κάντε δεξί κλικ πάνω του και μεταβείτε στις ρυθμίσεις.

Βεβαιωθείτε ότι είναι επιλεγμένη η λειτουργία λήψης οθόνης

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

ΟΛΑ! Ο ΦΩΤΙΣΜΟΣ ΜΑΣ ΕΙΝΑΙ ΕΤΟΙΜΟΣ! Συγχαρητήρια!

Εκπληκτικό εφέ φωτισμού. Η οθόνη άρχισε να φαίνεται μεγαλύτερη και τα μάτια μου κουράζονταν λιγότερο όταν έβλεπα βίντεο σε ένα σκοτεινό δωμάτιο.

Μου πήρε 10 λεπτά για να συναρμολογήσω τον οπίσθιο φωτισμό και ξόδεψα άλλα δέκα για τη ρύθμιση του λογισμικού.

Ένας προσεκτικός αναγνώστης θα πρέπει να αγανακτήσει αυτή τη στιγμή και να πει κάτι σαν «Περιμένετε ένα λεπτό! Πού είναι η βρισιά;» Και η ίδια λέξη βγήκε από μέσα μου όταν άρχισα να δοκιμάζω τον οπίσθιο φωτισμό μου και εξέφραζε εξαιρετική απόλαυση με αυτό που είδα.

Πώς είναι καλύτερο από το Ambilight; Πήρα 69 ανεξάρτητες ζώνες οπίσθιου φωτισμού, οι οποίες, από όσο ξέρω, είναι πολύ περισσότερες από τις Philips.

Πώς μπορεί να βελτιωθεί; Πάρτε πιο ισχυρές διόδους, για παράδειγμα αυτές

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

Πώς να χρησιμοποιήσετε αυτόν τον οπίσθιο φωτισμό με το android; Εδώ ο τύπος δίνει έναν σύνδεσμο στο σενάριό του για το XBMC για Android. Υπάρχουν και άλλες επιλογές που δεν ξέρω.

Λειτουργεί με παιχνίδια; Ναι λειτουργεί, αλλά όχι με όλους. Και πρέπει να απενεργοποιήσετε όλες τις επικαλύψεις (steam, msi afterburner). Υπάρχουν πληροφορίες ότι το πρόγραμμα Ambibox χειρίζεται καλύτερα τα παιχνίδια, αλλά δεν λειτούργησε για μένα.

Τι άλλο μπορείτε να κάνετε με αυτήν την κασέτα; Μπορείτε να συναρμολογήσετε μια μήτρα LED (οθόνη) και να μεταδώσετε gif σε αυτήν χρησιμοποιώντας το πρόγραμμα Glediator, μπορείτε να βρείτε ένα σκίτσο για το arduino στον ιστότοπο του προγράμματος.

Προσοχή! Όσο περισσότερες ζώνες οπίσθιου φωτισμού, τόσο μεγαλύτερο είναι το φορτίο στον επεξεργαστή του υπολογιστή. Σε μια δοκιμαστική διάταξη με 240 διόδους, το Arduino πάγωσε.

Εκσυγχρονίζω:

Θαυμάσια νέα! Όχι άλλα προβλήματα απόδοσης! Δοκίμασα το καταπληκτικό και δωρεάν πρόγραμμα Ambibox
και εδώ είναι τα αποτελέσματα των δοκιμών απόδοσης σε tablet με intel baytrail

Όπως μπορείτε να δείτε, ακόμη και το tablet μπορεί να χειριστεί εύκολα τον οπίσθιο φωτισμό με 300 διόδους και η ταχύτητα ενημέρωσης είναι μεγαλύτερη από 40 fps!
Έχει πρόσθετο για xbmc.
Αναφέρεται επίσης καλή συμβατότητα με παιχνίδια, αν και μέσω πληρωμένου playclaw.

Δυστυχώς, δεν κατάφερα να δοκιμάσω τη λειτουργία του οπίσθιου φωτισμού στο Android, επειδή καμία από τις συσκευές μου δεν έχει προγράμματα οδήγησης για το Arduino στον πυρήνα.

Ενημέρωση 21/11/14

Ρύθμιση Ambibox

Τελικά άλλαξα από το Prismatic στο Ambibox και τώρα θα σας πω πώς να ρυθμίσετε τον οπίσθιο φωτισμό σας ώστε να λειτουργεί μαζί του.

Κατεβάστε την πιο πρόσφατη έκδοση του προγράμματος από εδώ

Και το εγκαθιστούμε. Στο τέλος της διαδικασίας εγκατάστασης, θα εμφανιστεί αυτό το παράθυρο

Επιλέξτε «Adalight» και η διαδικασία εγκατάστασης ολοκληρώθηκε. Μετά την εγκατάσταση, ξεκινήστε το πρόγραμμα, θα εμφανιστεί ένα έγχρωμο τετράγωνο στο δίσκο δίπλα στο ρολόι, κάντε διπλό κλικ πάνω του και θα ανοίξει το παράθυρο ρυθμίσεων. Η γλώσσα του προγράμματος μπορεί να αλλάξει στις ρυθμίσεις του προγράμματος και οι κύριες ρυθμίσεις οπίσθιου φωτισμού βρίσκονται εδώ

Τώρα προσοχή! Γι' αυτό δεν μπόρεσα να ρυθμίσω το πρόγραμμα την πρώτη φορά; Ναι, γιατί δεν υπάρχουν ρυθμίσεις πουθενά. Αλλά αποδείχθηκε ότι ήταν εκεί, αλλά δεν χωρούσαν στο παράθυρο, οπότε τεντώνουμε το παράθυρο από την κάτω δεξιά άκρη και κάνουμε κλικ στο κουμπί "Περισσότερες ρυθμίσεις"

Και στις ρυθμίσεις που εμφανίζονται επιλέξτε τη θύρα του Arduino μας και τον αριθμό των διόδων. Το πρόγραμμα μπορεί να επανεκκινηθεί κατά την επιλογή μιας θύρας. Εδώ μπορείτε να επιλέξετε τον τρόπο λειτουργίας για το τρέχον προφίλ και τη μέθοδο λήψης, στα παιχνίδια μπορείτε να επιλέξετε τη λειτουργία παιχνιδιού τους με το playclaw και για τον κινηματογράφο, τη λειτουργία Windows 8 (το πιο γρήγορο, κατά τη γνώμη μου).
Όταν είναι ενεργοποιημένες οι πρόσθετες ρυθμίσεις, κάντε κλικ στο κουμπί "Εμφάνιση ζωνών λήψης", θα εμφανιστούν χρωματιστά τετράγωνα γύρω από την περίμετρο και πρόσθετα κουμπιά στο μενού, κάντε κλικ στο "Οδηγός ρύθμισης ζώνης".

Σε αυτόν τον διαμορφωτή είναι πολύ βολικό να διαμορφώσετε έναν μεγάλο αριθμό ζωνών, μπορείτε να επιλέξετε τον αριθμό των πλευρών με οπίσθιο φωτισμό, τον αριθμό των διόδων κάθετα και οριζόντια, να ορίσετε τη μετατόπιση, να επιλέξετε τη μορφή της περιοχής προς λήψη, το μέγεθος της αποκοπής στο κάτω άκρο για τη βάση, την οθόνη από την οποία θα τραβήξετε, ακόμη και τη διαμόρφωση εικόνων 3d (εάν εξάγετε ένα σήμα 3d σε μια τηλεόραση σε μορφή side-by-side ή over-under). Αφού ρυθμίσετε τις παραμέτρους, κάντε κλικ στο «Εφαρμογή» και, στη συνέχεια, αποθηκεύστε τις ρυθμίσεις στο κύριο μενού. Οι ρυθμίσεις για το σύστημά μου είναι στο στιγμιότυπο οθόνης.

Ολα! Αυτό ολοκληρώνει τις βασικές ρυθμίσεις του προγράμματος, αλλά υπάρχει ακόμα ένας ΠΟΛΥ μεγάλος αριθμός ρυθμίσεων σε αυτό το πρόγραμμα! Μπορείτε να προσαρμόσετε τον οπίσθιο φωτισμό προσαρμόζοντας τα κανάλια χρώματος ξεχωριστά για κάθε δίοδο, να προσαρμόσετε το anti-aliasing, το gamma, το δυναμικό κ.λπ... Μπορείτε να δημιουργήσετε ξεχωριστά προφίλ για κινηματογράφο μεγάλου μεγέθους και να μεταβείτε σε αυτό με μια συντόμευση πληκτρολογίου ή αυτόματα όταν ανοίξτε το πρόγραμμα και ενεργοποιήστε ακόμη και τη λειτουργία έγχρωμης μουσικής όταν ανοίγετε το Winamp! Πείραμα!

Ενημέρωση 22/11/14

Ρύθμιση σε Android

Όλη τη νύχτα προσπάθησα να ξεκινήσω τον οπίσθιο φωτισμό στο Android... κοιτάζοντας μπροστά, θα πω ότι το αποτέλεσμα της έρευνας: -1 arduino mega, αλλά υπάρχουν ακόμα κάποια αποτελέσματα: αποδείχθηκε ότι το mega μου δεν θέλει απολύτως αγκυροβολήστε με την κασέτα, ούτε σε καμία καρφίτσα, ούτε με ένα σκίτσο, και με προγράμματα και στα Windows, και στο τέλος, το πρωί, κάνοντας εντελώς νεύμα, το έκαψα από βλακεία. Αλλά παρά το γεγονός ότι δεν μπορούσε να ελέγξει την ταινία, όλα τα άλλα λειτουργούσαν κανονικά, τα δεδομένα λήφθηκαν, ο οπίσθιος φωτισμός καθορίστηκε από τα προγράμματα, γι 'αυτό δεν μπορώ να πω με απόλυτη σιγουριά ότι ο οπίσθιος φωτισμός λειτουργεί.

Όπως έγραψα ήδη στα σχόλια, δεν υπάρχουν προγράμματα οδήγησης για το Arduino nano, ή μάλλον για το τσιπ ft232r, στον πυρήνα των συσκευών μου Android, οπότε έχοντας αφαιρέσει το "Mega" από άλλο έργο και βεβαιωθείτε ότι το smartphone μου το εντοπίζει σωστά και το τοποθετεί ως ttyACM0, άρχισα να πειραματίζομαι. Και ναι, θα χρειαστούμε root.

Αρχικά, κατέβασα την πιο πρόσφατη σταθερή έκδοση του xbmc για android από και την εγκατέστησα.

Μετά κατέβασα το σενάριο από αυτόν τον τύπο
χρειαζόταν και το module libboblight.so, το βρήκα στο Google, το κατέβασα, φαίνεται, από εδώ

Ανοίξτε το XBMC και μεταβείτε στις ρυθμίσεις -> Πρόσθετα και εγκαταστήστε το πρόσθετο που ονομάζεται boblight από το επίσημο αποθετήριο και μετά κλείστε το XBMC

Χρησιμοποιώντας έναν διαχειριστή αρχείων, ανοίξτε το φάκελο Android/data/org.xbmc.xbmc/files/.xbmc/addons και αντικαταστήστε τον φάκελο script.xbmc.boblight με τον φάκελο που πήραμε από το YouTube. (Εκτέλεσα αυτή τη διαδικασία επειδή δεν ήμουν σίγουρος ότι το σενάριο θα εγκατασταθεί σωστά εάν απλώς άφηνα τον φάκελο που κατέβασα).

Βάζουμε το αρχείο libboblight.so στο /system/lib/ και για να είμαι σίγουρος, το έβαλα και στο Android/data/org.xbmc.xbmc/files/.xbmc/addons/script.xbmc.boblight/resources/lib /

Μετά την εκκίνηση του XBMC, το σενάριο σταμάτησε να δίνει σφάλμα (όπως όταν το έτρεξα χωρίς συνδεδεμένο arduino), εντόπισε τον οπίσθιο φωτισμό μου και, κρίνοντας από τις διόδους στο rx/tx, άρχισε να λειτουργεί όπως αναμενόταν, αλλά όπως έγραψα ήδη, το η ίδια η ταινία δεν άναβε.

Αυτό το σενάριο έχει ρυθμιστεί στο αρχείο hyperion.config.json στο φάκελο script, μπορείτε να το επεξεργαστείτε χρησιμοποιώντας τον διαμορφωτή HyperCon.jar εδώ

Πρόσθετες πληροφορίες από τον χρήστη andryvlad:

Για όσους το χρειάζονται για Android, δούλεψε με την πλακέτα Arduino Uno R3. Δοκιμασμένο σε TV-Box με επεξεργαστή Amlogic AML8726-M6(MX), Android 4.2.2, Kodi 14.2 Helix με την προσθήκη Boblight. Μια προειδοποίηση - το Arduino πρέπει να συναρμολογηθεί σύμφωνα με το αρχικό κύκλωμα (με το ATmega16U2 ως USB-Com) - ορίζεται στο Android ως ttyACM0 (εγώ πήρα αυτό). Το Arduino Nano (με FT232RL) δυστυχώς, δεν ανιχνεύεται. Στο βοηθητικό πρόγραμμα HyperCon.jar, στην πρώτη καρτέλα γράφουμε:
Τύπος συσκευής: Adalite
Έξοδος: /dev/ttyACM0
Baudrate: 115200
Λοιπόν, υποδεικνύουμε τη θέση και τον αριθμό των LED (κατά τη μεταφόρτωση ενός σκίτσου στο Arduino, πρέπει να καταχωρίσετε τον ίδιο αριθμό από αυτά), δεν άγγιξα τις άλλες παραμέτρους. Τοποθετήστε το αρχείο hyperion.config.json που δημιουργήθηκε στον φάκελο script. Δεν διαμόρφωσα τίποτα στην ίδια την προσθήκη Boblight.
Τώρα, όταν ξεκινάτε το Kodi, εμφανίζεται ένα μήνυμα ότι η προσθήκη είναι συνδεδεμένη και η κορδέλα αναβοσβήνει με τη σειρά της σε τρία χρώματα (αυτός είναι ένας τύπος δοκιμής, μπορεί να απενεργοποιηθεί στις ρυθμίσεις του Boblight). Ας ενεργοποιήσουμε την ταινία και ας απολαύσουμε!)

Αυτό είναι μάλλον όλο... Παρήγγειλα ένα νέο "mega" από τον Ali για να αντικαταστήσει το παλιό και επίσης uno r3 για αυτό και θα συνεχίσω τα πειράματα αργότερα, αλλά τώρα είμαι πολύ ευχαριστημένος με τον οπίσθιο φωτισμό της οθόνης μου που ελέγχεται μέσω "nano" από το υπέροχο πρόγραμμα Ambibox, και ναι... το προϊόν που προτείνω να αγοράσετε ;-)

ΥΣΤΕΡΟΓΡΑΦΟ. Μετά από αρκετές ημέρες, μπορώ να πω ότι για μια οθόνη η πυκνότητα των 60 διόδων ανά μέτρο είναι υπερβολική: η υπερβολική φωτεινότητα και οι μικρές κινήσεις φωτός είναι λίγο κουραστικές. Στις ρυθμίσεις του προγράμματος κατέβασα τη φωτεινότητα στο ελάχιστο, ανέβασα το anti-aliasing και κατέβασα τη δυναμική. Εξάλλου, αυτός είναι ένας οπίσθιος φωτισμός και όχι μια συνέχεια της οθόνης. Από μεγάλη απόσταση δεν υπάρχουν τέτοια προβλήματα και ο οπίσθιος φωτισμός δεν παρεμβαίνει.
Σχετικά με τον οπίσθιο φωτισμό στα παιχνίδια: από όσο καταλαβαίνω, η δοκιμαστική έκδοση του Playclaw 5 είναι επαρκής για οπίσθιο φωτισμό στα παιχνίδια, εκτός από το παράθυρο κατά την εκκίνηση, δεν έχω δει ακόμη περιορισμούς στον οπίσθιο φωτισμό

Συλλογή χρηστών

Χρήστης vreδημοσίευσε ένα σύντομο βίντεο με τον οπίσθιο φωτισμό του (τηλεόραση 42", οπίσθιος φωτισμός στις 3 πλευρές, 125 δίοδοι).

Χρήστης βεντούραμοιράστηκε επίσης ένα βίντεο με το σύστημά του

Χρήστης chalocέστειλε μια φωτογραφία της οθόνης μου με κασέτα ws2812b

Χρήστης fp777δημοσίευσε φωτογραφίες και βίντεο από τον φωτισμό του, ο οποίος χρησιμοποιεί μεγάλα LED αντί για λωρίδα (αν επαναλάβετε το σύστημά του, οι δίοδοι πρέπει να γυρίσουν έτσι ώστε η ροή φωτός να κατευθύνεται προς τον τοίχο)

110 δίοδοι WS2812B + ARUINO Nano + AmbiBox 2.1.7.
Το Foobar παίζει και η εικόνα σε μια τηλεόραση 50" παράγεται από το πρόσθετο MilkDrop2...

Βίντεο από χρήστη Ερνέστο

WS2811+Arduino nano, εγκατεστημένο στη ζώνη Samsung 40" 81

Εξαιρετικό βίντεο της οθόνης χρήστη l0 μεγαλύτερος

112 δίοδοι σε 27" monica...

Η τηλεόραση του συντρόφου nukezzz

- 120 pixel σε τηλεόραση 29" (ακριβώς 2 μέτρα),
- Πήρα την ταινία με προστασία IP65 (μια εξαιρετική επιλογή).
- arduino nano σε CH340

Τηλεόραση χρήστη Fedor


Δεν έκανα τον πάτο. Τηλεόραση 55 ιντσών.

Όμορφο βίντεο με τα highlight του χρήστη Bron888


Το μάζεψα πριν από πολύ καιρό, όταν αυτό το θέμα δεν υπήρχε ακόμα, ω, και μετά υπέφερα ψάχνοντας πληροφορίες))) Εξαιρετικό άρθρο και εδώ υπάρχει ένα νέο σκίτσο που αφαιρεί το πρόβλημα με τις διόδους που τρεμοπαίζουν, το πάλεψα χρησιμοποιώντας το Watchdog) εδώ είναι το αποτέλεσμά μου.

Άλλη μια μέρα και άλλος ένας ικανοποιημένος χρήστης του σπιτικού φωτισμού.
Χρήστης lesha_01έστειλε ένα βίντεο για τον φωτισμό του.
Το έκανα πριν από πολύ καιρό, το χρησιμοποιώ εδώ και ένα χρόνο - όλα λειτουργούν σταθερά με το Amnibox, ένα μέτρο ταινίας πηγαίνει ακριβώς στις 3 πλευρές.

τρελός βράχοςέστειλε μια πολύ όμορφη φωτογραφία της οθόνης του

AlexNerfμοιράστηκα επίσης την οθόνη μου

Οθόνη 20", Windows 8, τροφοδοτείται από τροφοδοτικό μονάδας συστήματος, μονωμένη ταινία

Τηλεόραση χρήστη Ο Δάντης


Να τι πήρα. Λυγίζω την ταινία στις γωνίες, δεν αντιγράφω το τροφοδοτικό, δεν νομίζω ότι είναι απαραίτητο. Πάνελ 60", αποδείχθηκε ότι είναι 118 δίοδοι και ζώνες, στο κάτω μέρος υπάρχει μια εγκοπή για βάση. Χρησιμοποίησα το σκίτσο από τα σχόλια, επειδή το σκίτσο τρεμοπαίζει.

Οθόνη χρήστη Αλβερτος

AVR ATmega32U4 - 1 τεμ (~ 3 $)
Λωρίδα LED ws2812b - 100 τεμ (~ 9 $)
PSU Xiaomi 5V 10W - 1 τεμ
LCD Acer 24" - 1 τεμ
Λογισμικό - Ambibox

Το κόστος χωρίς το διαθέσιμο τροφοδοτικό και οθόνη ήταν 12 δολάρια.

Τραβήχτηκε με το χέρι σε έξυπνο τηλέφωνο σε συνθήκες όπου η οθόνη βρίσκεται σε βραχίονα 15 cm από το λευκό τούλι.


Οθόνη χρήστη Aimo

TS, ευχαριστούμε για την αναλυτική κριτική, γιατί... Στον οδηγό adafruit, ορισμένες αποχρώσεις δεν αναφέρθηκαν.
Συνέδεσα την ταινία με γωνίες 3 ακίδων, πολύ βολικό.
Τροφοδοτικό + πυκνωτής 1000uF 6,3v συνδέθηκε μέσω βύσματος, και πάλι πολύ βολικό.
Έχοντας συνδέσει προσεκτικά όλα τα καλώδια και κολλήσει μια αντίσταση 470 ohm, το Arduino nano τοποθετήθηκε στο «αυγό» της Kinder Surprise.

Και μια ενημερωμένη έκδοση των ρυθμίσεων

Τηλεόραση χρήστη Tauntik

Έφτιαξα μόνος μου 60 δίοδοι ανά μέτρο από ταινία 55", βγήκαν 233 δίοδοι (περίπου 4 μέτρα)

Μπορείτε επίσης να στείλετε τα βίντεο και τις φωτογραφίες σας, θα χαρώ να τα προσθέσω στην κριτική

Σκοπεύω να αγοράσω +605 Προσθήκη στα αγαπημένα Μου άρεσε η κριτική +305 +714

Καλό απόγευμα.

Για το πρώτο μου άρθρο, επέλεξα μια από τις πιο επιτυχημένες χειροτεχνίες μου: ένα ανάλογο HDMI-passthrough του Ambilight από τη Philips, στο εξής θα ονομάζω αυτή τη σύνθεση "Atmosvet".

Εισαγωγή
Στο Διαδίκτυο δεν είναι πολύ δύσκολο να βρείτε έτοιμες/ανοιχτές λύσεις και άρθρα σχετικά με το πώς να φτιάξετε το Ambilight για οθόνη/τηλεόραση εάν προβάλλετε μια εικόνα από υπολογιστή. Αλλά στο σύστημα πολυμέσων μου, η έξοδος εικόνων σε μια τηλεόραση από υπολογιστή καταλαμβάνει μόνο το 5% του χρόνου χρήσης που παίζω περισσότερο από τις κονσόλες παιχνιδιών, πράγμα που σημαίνει ότι έπρεπε να βρω κάτι δικό μου.
Αρχικά δεδομένα:
  • Τηλεόραση Plasma 60".
  • HTPC που βασίζεται στο Asrock Vision 3D 137B
  • Xbox 360
Οι περισσότερες συσκευές χρησιμοποιούν HDCP για την αναπαραγωγή περιεχομένου ακόμα και κατά τη διάρκεια του παιχνιδιού.
Απαίτηση:
Είναι απαραίτητο να παρέχεται κεντρική υποστήριξη Atmosvet για όλες τις συσκευές που είναι συνδεδεμένες στην τηλεόραση.
Εκτέλεση
Δεν θα σας πω πώς προσάρτησα μια λωρίδα LED 4,5 μέτρων στην τηλεόραση και τι πρέπει να γίνει με το Arduino, μπορείτε να το χρησιμοποιήσετε ως βάση.

Η μόνη επιφύλαξη:
Παρατήρησα ότι υπήρχαν περίεργα τρεμοπαίζει στο κάτω μέρος της οθόνης, στην αρχή έκανα ένα λάθος στο σήμα, κούμπωσα το deflicker, άλλαξα το μέγεθος της εικόνας και έσκαψα ένα σωρό άλλα πράγματα, έγινε καλύτερα, αλλά δεν βοήθησε με το τρεμόπαιγμα. Άρχισα να παρακολουθώ. Αποδείχθηκε ότι το τρεμόπαιγμα ήταν μόνο στο τέλος της ταινίας και στη συνέχεια κατά τη διάρκεια φωτεινών σκηνών. Λαμβάνοντας ένα πολύμετρο, μέτρησα την τάση στην αρχή, στη μέση και στο τέλος της ταινίας και μάντεψα την αιτία του τρεμουλιάσματος: στην αρχή της ταινίας ήταν 4,9 V (ναι, το κινεζικό τροφοδοτικό δίνει μια απόκλιση τάσης, αυτό είναι μη σημαντικό), στη μέση 4,5 στο τέλος 4,22 - Η πτώση τάσης είναι πολύ σημαντική , έπρεπε να λύσω το πρόβλημα απλά - Συνέδεσα το ρεύμα από το τροφοδοτικό στη μέση της ταινίας και έτρεξα το καλώδιο πίσω από την τηλεόραση. Βοήθησε αμέσως, κάθε τρεμούλιασμα σταμάτησε τελείως.

Λήψη εικόνας με κάμερα web
Η πρώτη δοκιμαστική έκδοση για τη δοκιμή της ιδέας και την οπτικοποίησή της επιλέχθηκε με λήψη μιας εικόνας μέσω κάμερας web) φαινόταν κάπως έτσι:

Η χαμηλή απόδοση χρωμάτων και η υψηλή καθυστέρηση έδειξαν ότι αυτή η υλοποίηση δεν μπορεί να χρησιμοποιηθεί με κανέναν τρόπο.

Λήψη εικόνων μέσω HDMI

Κατά τη διαδικασία της έρευνας πιθανών επιλογών, επιλέχθηκε το ακόλουθο σχήμα ως το πιο αξιόπιστο και οικονομικά αποδοτικό:

  • Το σήμα από όλες τις συσκευές τροφοδοτείται σε διακόπτη HDMI 5 in-1out που υποστηρίζει HDCP
  • Το σήμα εξόδου τροφοδοτείται σε διαχωριστή HDMI 1 σε 2 εξόδου, ο οποίος όχι μόνο υποστηρίζει HDCP, αλλά το απενεργοποιεί και στην έξοδο (χάρη στους Κινέζους).
  • Ένα από τα σήματα εξόδου πηγαίνει στην τηλεόραση
  • Η άλλη έξοδος πηγαίνει στον μετατροπέα HDMI σε AV
  • Το σήμα S-Video πηγαίνει στο πλαίσιο λήψης από το ICONBIT
  • Το κιβώτιο λήψης συνδέεται με ένα HTCP πάντα ενεργοποιημένο μέσω USB, το οποίο είναι συνδεδεμένο στην ταινία του ελεγκτή Arduino στην τηλεόραση.

Αρχικά μοιάζει άγριο και σαν πατερίτσες, αλλά:

  • Δουλεύει.
  • Συνολικά, όλο αυτό το πράγμα, η παραγγελία από την Κίνα, μου κόστισε 3-4 χιλιάδες ρούβλια.

Γιατί δεν χρησιμοποίησα μια πλακέτα λήψης HDMI; Είναι απλό: η φθηνότερη και πιο προσιτή επιλογή είναι το Blackmagic Intensity Shuttle, αλλά δεν μπορεί να λειτουργήσει με σήμα 1080p/60fps, μόνο 1080p/30fps - κάτι που δεν είναι αποδεκτό, γιατί... Δεν ήθελα να χαμηλώσω τον ρυθμό καρέ για να μπορέσω να τραβήξω την εικόνα. + αυτό το πράγμα κόστισε γύρω στα 10 χιλιάδες. ρούβλια - που δεν είναι φθηνό με άγνωστο αποτέλεσμα.

Οι απώλειες στη μετατροπή HDMI σε S-video είναι αμελητέες για την καταγραφή χρώματος στην ανάλυση 46x26 του οπίσθιου φωτισμού LED.

Αρχικά, προσπάθησα να χρησιμοποιήσω το EasyCap για να τραβήξω το S-video (έχει πολλές κινεζικές παραλλαγές), αλλά το θέμα είναι ότι το τσιπ που χρησιμοποιείται εκεί είναι εξαιρετικά φτωχό και δεν μπορεί να χρησιμοποιηθεί με το openCV.

Το μόνο αρνητικό είναι ότι το σήμα εξόδου S-Video περιείχε μαύρες ρίγες στις άκρες, κόβοντας το πραγματικό περιεχόμενο (περίπου 2-5%), έκοψα την εικόνα εξόδου από τον πίνακα λήψης για να αφαιρέσω αυτές τις ρίγες, την απώλεια της εικόνας σε αυτούς τους τομείς στην πράξη δεν επηρέασε το αποτέλεσμα.

Λογισμικό
Για μένα αυτό ήταν το πιο ενδιαφέρον κομμάτι, γιατί... Δεν μου αρέσει πολύ να ασχολούμαι με το υλικό.

Για να τραβήξω την εικόνα, χρησιμοποίησα το openCV και συγκεκριμένα το .NET wrapper emgu CV.

Αποφάσισα επίσης να χρησιμοποιήσω μερικές διαφορετικές τεχνικές για τη μεταγενέστερη επεξεργασία της εικόνας και την προετοιμασία της πριν στείλω τη λίστα χρωμάτων στον ελεγκτή.

Επεξεργασία πλαισίου
1. Λήψη τραβηχθέντος καρέ
2. Κόψτε το πλαίσιο για να εξαφανίσετε τις μαύρες ρίγες
Όλα είναι απλά εδώ:
frame.ROI = new Rectangle(8, 8, frame.Width - 8, frame.Height - 18 - 8);
Περικοπή 8 pixel από πάνω, 8 από δεξιά και 18 από κάτω (Δεν υπάρχει λωρίδα στα αριστερά).
3. Θα αλλάξουμε το μέγεθος του πλαισίου στην ανάλυση οπίσθιου φωτισμού, δεν χρειάζεται να κουβαλάμε μαζί μας μια υγιή εικόνα
Ούτε τίποτα περίπλοκο, το κάνουμε χρησιμοποιώντας το openCV:
frame.Resize(LedWidth - 2*LedSideOverEdge,
LedHeight - LedBottomOverEdge - LedTopOverEdge,
INTER.CV_INTER_LINEAR);
Ο προσεκτικός αναγνώστης θα παρατηρήσει την αφθονία των μεταβλητών. Το γεγονός είναι ότι το πλαίσιο της τηλεόρασής μου είναι αρκετά μεγάλο, καταλαμβάνει 1 LED στα πλαϊνά, 1 στο πάνω μέρος και 3 στο κάτω μέρος, οπότε η αλλαγή μεγέθους γίνεται στα LED που βρίσκονται ακριβώς απέναντι από την οθόνη και προσθέτουμε τις γωνίες αργότερα . Όταν αλλάζουμε το μέγεθος, παίρνουμε απλώς τα μέσα χρώματα που πρέπει να έχουν τα εικονοστοιχεία LED.
4. Χαρτογραφούμε LED από το κομμένο πλαίσιο
Λοιπόν, και εδώ, όλα είναι απλά, πηγαίνουμε ανόητα σε κάθε πλευρά και γεμίζουμε διαδοχικά μια σειρά 136 τιμών με το χρώμα των LED. Συμβαίνει ότι αυτή τη στιγμή όλες οι άλλες λειτουργίες είναι πιο εύκολο να εκτελεστούν με μια σειρά από LED παρά με ένα πλαίσιο, το οποίο είναι πιο δύσκολο να επεξεργαστεί. Επίσης, για το μέλλον, πρόσθεσα μια παράμετρο για το "βάθος" λήψης (ο αριθμός των εικονοστοιχείων από το περίγραμμα της οθόνης, για τον μέσο όρο του χρώματος του LED), αλλά στην τελική ρύθμιση, αποδείχθηκε ότι ήταν καλύτερο χωρίς αυτό.
5. Εκτελέστε διόρθωση χρώματος (ισορροπία λευκού/ισορροπία χρώματος)
Οι τοίχοι πίσω από την τηλεόραση είναι κατασκευασμένοι από ξύλο, η ξυλεία είναι κίτρινη, οπότε πρέπει να αντισταθμίσω την κιτρινιά.
var blue = 255.0f/(255.0f + blueLevelFloat)*pixelBuffer[k];
var green = 255.0f/(255.0f + greenLevelFloat)*pixelBuffer;
var red = 255.0f/(255.0f + redLevelFloat)*pixelBuffer;
Γενικά, πήρα αρχικά την ισορροπία χρωμάτων από τον πηγαίο κώδικα κάποιου προγράμματος επεξεργασίας ανοιχτού κώδικα, αλλά δεν άλλαξε το λευκό (το λευκό παρέμεινε λευκό), άλλαξα λίγο τους τύπους, έκανα ένα τυπογραφικό λάθος και πήρα ακριβώς αυτό που χρειαζόμουν: εάν το επίπεδο του στοιχείου χρώματος είναι αρνητικό (καταλαβαίνω πώς - αυτό το χρώμα λείπει), τότε προσθέτουμε την έντασή του και αντίστροφα. Για τους τοίχους μου αποδείχθηκε: RGB(-30,5,85).

Στη διόρθωση χρώματος κάνω επίσης ισοστάθμιση επιπέδου μαύρου (το μαύρο μπαίνει κάπου γύρω στα 13,13,13 σε RGB) αφαιρώντας απλά 13 από κάθε στοιχείο.

6. Εκτελέστε αποκορεσμό (μειώνοντας τον κορεσμό της εικόνας)
Στην τελική ρύθμιση, δεν χρησιμοποιώ αποκορεσμό, αλλά μπορεί κάποια στιγμή να χρειαστεί, μάλιστα κάνει τα χρώματα πιο «παστέλ», όπως το Philips Ambilight. Δεν θα δώσω τον κωδικό, απλώς μετατρέπουμε από RGB -> HSL, μειώνουμε το στοιχείο Saturation και επιστρέφουμε στο RGB.
7. Deflicker
Συμβαίνει ότι η εικόνα εισόδου "κουνιέται" - αυτό είναι συνέπεια της μετατροπής σε αναλογικό σήμα, όπως πιστεύω. Στην αρχή προσπάθησα να το λύσω με τον δικό μου τρόπο, μετά κοίταξα τις πηγές του φίλτρου Defliker που χρησιμοποιείται στο VirtualDub, το ξαναέγραψα σε C# (ήταν σε C++), κατάλαβα ότι δεν λειτουργεί, γιατί είναι τόσο εντυπωσιακό ότι παλεύει με το τρεμόπαιγμα μεταξύ των καρέ, Στο τέλος, συνδύασα τη λύση μου και αυτό το deflicker και πήρα κάτι περίεργο, αλλά λειτούργησε καλύτερα από το αναμενόμενο. Ο αρχικός αποσβεστήρας δούλευε μόνο με την ένταση ολόκληρου του πλαισίου Χρειάζομαι κάθε LED ξεχωριστά. Το αρχικό deflicker συνέκρινε την αλλαγή έντασης ως άθροισμα, προτιμώ να συγκρίνω το μήκος του διανύσματος χρώματος Το αρχικό deflicker συνέκρινε το δέλτα της αλλαγής έντασης σε σύγκριση με το προηγούμενο πλαίσιο, αυτό δεν είναι κατάλληλο και το άλλαξα στη μέση ένταση. τιμή εντός του παραθύρου των προηγούμενων πλαισίων. Και υπάρχουν πολλά άλλα μικροπράγματα, με αποτέλεσμα να μείνουν ελάχιστα από το αρχικό deflicker.
Η κύρια ιδέα: με βάση τη μέση ένταση των προηγούμενων καρέ, εκτελέστε μια τροποποίηση του τρέχοντος καρέ εάν η έντασή του δεν είναι μεγαλύτερη από ένα ορισμένο όριο (έχω αυτό το όριο στην τελική ρύθμιση των 25), εάν το όριο ξεπεραστεί, τότε το παράθυρο επαναφέρεται, χωρίς τροποποίηση.
Ελαφρώς τροποποιημένος (για αναγνωσιμότητα εκτός πλαισίου) κώδικας από το deflicker μου:
Array.Copy(_leds, _ledsOld, _leds.Length); για (var i = 0; i< _leds.Length; i++) { double lumSum = 0; // Calculate the luminance of the current led. lumSum += _leds[i].R*_leds[i].R; lumSum += _leds[i].G*_leds[i].G; lumSum += _leds[i].B*_leds[i].B; lumSum = Math.Sqrt(lumSum); // Do led processing var avgLum = 0.0; for (var j = 0; j < LedLumWindow; j++) { avgLum += _lumData; } var avg = avgLum/LedLumWindow; var ledChange = false; if (_strengthcutoff < 256 && _lumData != 256 && Math.Abs((int) lumSum - avg) >= _strengthcutoff) ( _lumData = 256; ledChange = true; ) // Υπολογίστε τον συντελεστή προσαρμογής για το τρέχον led. Κλίμακα var = 1,0; int r, g, b; if (ledChange) (για (var j = 0; j< LedLumWindow; j++) { _lumData = (int) lumSum; } } else { for (var j = 0; j < LedLumWindow - 1; j++) { _lumData = _lumData; } _lumData = (int) lumSum; if (lumSum >0) ( κλίμακα = 1,0f/((avg+lumSum)/2); var filt = 0,0f; for (var j = 0; j< LedLumWindow; j++) { filt += (float) _lumData/LedLumWindow; } scale *= filt; } // Adjust the current Led. r = _leds[i].R; g = _leds[i].G; b = _leds[i].B; // save source values var sr = r; var sg = g; var sb = b; var max = r; if (g >max) max = g; αν (b > max) max = b; διπλό s; εάν (κλίμακα*μέγ. > 255) s = 255,0/μέγ. else s = κλίμακα; r = (int)(s*r); g = (int) (s*g); b = (int) (s*b); // διατήρηση επισήμανσης διπλό k; if (sr > _lv) ( k = (sr - _lv)/(double) (255 - _lv); r = (int) ((k*sr) + ((1.0 - k)*r)); ) if ( sg > _lv) ( k = (sg - _lv)/(double) (255 - _lv); g = (int) ((k*sg) + ((1.0 - k)*g)); ) if (sb > _lv) ( k = (sb - _lv)/(double) (255 - _lv); b = (int) ((k*sb) + ((1.0 - k)*b)); ) _led[i] = Χρώμα .FromArgb(r, g, b); ) /* Φάση χρονικής μαλάκυνσης. */ if (ledChange || _softening == 0) συνέχεια; var diffR = Math.Abs(_leds[i].R - _ledsOld[i].R); var diffG = Math.Abs(_leds[i].G - _ledsOld[i].G); var diffB = Math.Abs(_leds[i].B - _ledsOld[i].B); r = _leds[i].R; g = _leds[i].G; b = _leds[i].B; int άθροισμα? εάν (διαφορά R< _softening) { if (diffR >(_softening >> 1)) ( sum = _leds[i].R + _leds[i].R + _ledsOld[i].R; r = sum/3; ) ) if (diffG< _softening) { if (diffG >(_softening >> 1)) ( sum = _leds[i].G + _leds[i].G + _ledsOld[i].G; g = sum/3; ) ) if (diffB< _softening) { if (diffB >(_μαλάκωμα >> 1)) ( sum = _leds[i].B + _leds[i].B + _ledsOld[i].B; b = άθροισμα/3; ) ) _leds[i] = Color.FromArgb(r, ζ, β); )
Έστω _leds μια συστοιχία LED της κατηγορίας Color, _ledsOld είναι οι τιμές του πλαισίου πριν από τη μετατροπή, LedLumWindow το πλάτος του παραθύρου των προηγούμενων καρέ, για την εκτίμηση της μέσης αλλαγής στην ένταση, στην τελική ρύθμιση είχα ένα παράθυρο 100, το οποίο σε περίπου 30 καρέ/δευτερόλεπτα είναι ίσο με 3 δευτερόλεπτα. _lumData - πίνακας τιμών έντασης προηγούμενων καρέ.

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

8. Εξομάλυνση LED από γείτονες.
Γενικά, στην τελική ρύθμιση, δεν μου άρεσε πολύ το anti-aliasing και το απενεργοποίησα, αλλά σε ορισμένες περιπτώσεις μπορεί να είναι χρήσιμο. Εδώ απλώς υπολογίζουμε τον μέσο όρο του χρώματος κάθε LED σε σχέση με τους γείτονές του.
var smothΔιάμετρος = 2*_smoothRadius + 1; Array.Copy(_leds, _ledsOld, _leds.Length); για (var i = 0; i< _ledsOld.Length; i++) { var r = 0; var g = 0; var b = 0; for (var rad = -_smoothRadius; rad <= _smoothRadius; rad++) { var pos = i + rad; if (pos < 0) { pos = _ledsOld.Length + pos; } else if (pos >_ledsOld.Length - 1) ( pos = pos - _ledsOld.Length; ) r += _ledsOld.R; g += _ledsOld.G; b += _ledsOld.B; ) _leds[i] = Color.FromArgb(r/smothDiameter, g/smothDiameter, b/smothDiameter); )
9. Αποθηκεύστε την τρέχουσα κατάσταση έτσι ώστε το νήμα αποστολής πακέτου να το αρπάξει και να το στείλει στον ελεγκτή οπίσθιου φωτισμού.
Διαχώρισα εσκεμμένα τη διαδικασία επεξεργασίας πλαισίων και αποστολής πακέτων στον ελεγκτή: τα πακέτα αποστέλλονται μία φορά σε ένα συγκεκριμένο διάστημα (για μένα είναι 40 ms) έτσι ώστε το Arduino να μπορεί να επεξεργαστεί το προηγούμενο, επειδή πιο συχνά από 30 ms πνίγει, οπότε γυρίζει ότι δεν εξαρτόμαστε άμεσα από τη λήψη του ρυθμού καρέ και δεν παρεμβαίνουμε σε αυτή τη διαδικασία (αλλά η αποστολή ενός πακέτου επίσης χάνει χρόνο).
Λίγα λόγια για το Arduino
Δεν μπορείτε απλώς να πάρετε και να στείλετε ένα τεράστιο πακέτο μέσω της σειράς στο Arduino, επειδή θα υπερβεί την προεπιλεγμένη μνήμη Serial Hardware και θα χάσετε το τέλος του.
Αυτό μπορεί να λυθεί πολύ απλά: ορίστε το μέγεθος της προσωρινής μνήμης HardwareSerial σε ένα μέγεθος αρκετά μεγάλο ώστε να χωράει ολόκληρο το σταλμένο πακέτο με μια σειρά χρωμάτων για μένα.
UI
Το ίδιο το λογισμικό υλοποιήθηκε ως υπηρεσία win, για να διαμορφώσω όλες τις παραμέτρους + ενεργοποίηση/απενεργοποίηση Έκανα ένα UI Web που επικοινωνούσε με την υπηρεσία μέσω WebService στην υπηρεσία. Η τελική διεπαφή στην οθόνη του κινητού τηλεφώνου μοιάζει με αυτό:
Αποτέλεσμα
Τελικά, το αποτέλεσμα ανταποκρίθηκε σε όλες τις προσδοκίες και τώρα όταν παίζω παιχνίδια σε κονσόλες βυθίζομαι ακόμα περισσότερο στην ατμόσφαιρα του παιχνιδιού.

Ως γενικό αποτέλεσμα της εργασίας, ηχογράφησα ένα βίντεο με το φως της ατμόσφαιρας να λειτουργεί σύμφωνα με το πρόγραμμά μου:

Δείγμα δοκιμής 1: Χείλος Ειρηνικού, σκηνή μάχης της Σαγκάης, αυτή η ταινία είναι καλή για δοκιμή και προβολή, πολλές φωτεινές σκηνές και φλας, κεραυνοί κ.λπ.:

Δείγμα δοκιμής 2: Κάποιο βίντεο από το MLP, που διέρρευσε από το YouTube, είναι πολύ κατάλληλο για δοκιμή σκηνών με έντονα χρώματα (μου άρεσαν οι ρίγες), καθώς και για γρήγορη αλλαγή σκηνών (στο τέλος του βίντεο μπορείτε να δείτε τα αποτελέσματα της καθυστέρησης , ορατό μόνο στο βίντεο, όταν αυτό δεν είναι αισθητό στην πραγματική προβολή, προσπάθησα να μετρήσω την καθυστέρηση χρησιμοποιώντας βίντεο - αποδείχθηκε ότι ήταν 10-20 ms):

Και τέλος, αξίζει να σημειωθεί σχετικά με την κατανάλωση πόρων από το HTPC:
HTPC Έχω ASRock Vision 3D στο i3, η υπηρεσία ατμοσφαιρικού φωτός τρώει το 5-10% της CPU και 32MB RAM.

Σας ευχαριστώ για την προσοχή σας, ελπίζω πραγματικά ότι το άρθρο μου θα βοηθήσει κάποιον.

Όλοι πιθανότατα έχουν δει πόσο δυναμικός οπίσθιος φωτισμός στις τηλεοράσεις Philips, που ονομάζονται Amilight, λειτουργεί. Αυτό το άρθρο παρουσιάζει μια συσκευή που σας επιτρέπει να δημιουργήσετε δυναμικό οπίσθιο φωτισμό για τηλεόραση ή οθόνη. Η τηλεόραση/οθόνη πρέπει να είναι συνδεδεμένη στον υπολογιστή στον οποίο θα αναπαράγεται το περιεχόμενο βίντεο.

Έτσι, για να συναρμολογήσετε τη συσκευή θα χρειαστείτε:
1. Ελεγκτής Arduino
2. με πυκνότητα LED 30 τμχ ανά μέτρο (για την τηλεόρασή μου 32" χρειάστηκαν 2 μέτρα)
3. Πρόγραμμα οδήγησης LED TLC5940
4. Τροφοδοτικό 12V

Παρακάτω είναι μια σχηματική αναπαράσταση της συσκευής οπίσθιου φωτισμού:

Υπάρχουν 4 λωρίδες LED κολλημένες στο πίσω μέρος της τηλεόρασης (αριστερά, πάνω αριστερά, πάνω δεξιά, δεξιά). Κάθε ταινία συνδέεται με ένα πρόγραμμα οδήγησης LED TLC4950 και ένα τροφοδοτικό 12V. Το πρόγραμμα οδήγησης LED TLC4950 παρέχει έλεγχο PWM της φωτεινότητας κάθε χρώματος: κόκκινο, πράσινο και μπλε. Το πρόγραμμα οδήγησης LED ελέγχεται από τον ελεγκτή Arduino, ο οποίος με τη σειρά του λαμβάνει εντολές από τον υπολογιστή. Ο υπολογιστής εκτελεί ένα ειδικό πρόγραμμα γραμμένο στη γλώσσα επεξεργασίας, το οποίο αναλύει κάθε καρέ της εικόνας βίντεο και δίνει τις κατάλληλες εντολές στο Arduino.

Στη συνέχεια πρέπει να προετοιμάσετε τις λωρίδες LED. Για την τηλεόρασή μου 32 ιντσών, κάθε λωρίδα αποδείχθηκε ότι είχε 15 LED. Οι λωρίδες έχουν ειδικές θέσεις όπου μπορείτε να τις κολλήσετε με ασφάλεια αφού τις κόψετε.

Τέσσερα καλώδια πρέπει να συγκολληθούν σε κάθε λωρίδα RGB. Χρησιμοποίησα κανονικούς συνδέσμους αυτοκινήτου στα άκρα, έτσι ώστε οι ταινίες να μπορούν να αποσυνδεθούν εάν είναι απαραίτητο.

Σύνδεση Arduino και TLC5940:
Arduino TLC5940
Καρφίτσα 2 ======= Καρφίτσα 27 (VPRG)
Καρφίτσα 3 ======= Καρφίτσα 26 (SIN)
Καρφίτσα 7 ======= Καρφίτσα 25 (SCLK)
Καρφίτσα 4 ======= Καρφίτσα 24 (XLAT)
Καρφίτσα 5 ======= Καρφίτσα 23 (ΚΕΝΗ)
Καρφίτσα 6 ======= Καρφίτσα 19 (DCPRG)
Καρφίτσα 8 ======= Καρφίτσα 18 (GSCLK)

Συνδέουμε τις υπόλοιπες ακίδες TLC5940 σύμφωνα με τον παρακάτω πίνακα:
Pin 22 (GND) === Arduino Ground
Pin 21 (VCC) === Arduino +5V
Pin 20 (IREF) === Arduino Ground μέσω αντίστασης 2 kOhm
Pin 1-15.28 === Έξοδος PWM (Έξοδος PWM σε λωρίδες RGB)

Συνέδεσα το τροφοδοτικό +12V στις λωρίδες LED και το «κοινό» τροφοδοτικό στο Arduino Ground.

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

Το πρόγραμμα που εκτελείται στον υπολογιστή είναι γραμμένο στη γλώσσα Επεξεργασία(επίσημος ιστότοπος http://www.processing.org). Το πρόγραμμα λαμβάνει συνεχώς στιγμιότυπα οθόνης της οθόνης και στη συνέχεια υπολογίζει τις μέσες τιμές τριών χρωμάτων (κόκκινο, πράσινο, μπλε) για διαφορετικές θέσεις στην οθόνη (αριστερά, πάνω αριστερά, πάνω δεξιά, δεξιά). Μετά τους υπολογισμούς, το πρόγραμμα στέλνει τα δεδομένα στη θύρα στην οποία είναι συνδεδεμένος ο ελεγκτής Arduino.

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

Το 2007, η Philips κατοχύρωσε με δίπλωμα ευρεσιτεχνίας μια απίστευτα απλή, αλλά, χωρίς υπερβολή, εκπληκτική τεχνολογία οπίσθιου φωτισμού τηλεόρασης. Με τέτοιο προσαρμοστικό οπίσθιο φωτισμό, τα μάτια γίνονται λιγότερο κουρασμένα κατά την προβολή στο σκοτάδι, το εφέ παρουσίας αυξάνεται, η περιοχή της οθόνης επεκτείνεται κ.λπ. Το Ambilight ισχύει όχι μόνο για περιεχόμενο βίντεο και φωτογραφιών, αλλά και για παιχνίδια. Το Ambilight έχει γίνει χαρακτηριστικό των τηλεοράσεων Philips. Από τότε, η Philips επαγρυπνούσε στενά, ώστε κανένας από τους μεγάλους κατασκευαστές να μην σκεφτεί καν να καταπατήσει τα ιερά δημιουργώντας κάτι παρόμοιο. Είναι πιθανώς δυνατό να χορηγηθεί άδεια χρήσης αυτής της τεχνολογίας, αλλά οι συνθήκες είναι κατά κάποιο τρόπο απαγορευτικές και άλλοι παράγοντες της αγοράς δεν είναι ιδιαίτερα πρόθυμοι να το κάνουν. Οι μικρές εταιρείες προσπάθησαν επίσης (και υπάρχουν τώρα εταιρείες που το κάνουν αυτό) να εισαγάγουν παρόμοια τεχνολογία με τη μορφή ξεχωριστών κιτ, αλλά η τιμωρία από τη Philips ήταν αναπόφευκτη. Έτσι, στην καλύτερη περίπτωση, εάν η εταιρεία δεν ανανεώσει με κάποιο τρόπο το δίπλωμα ευρεσιτεχνίας ή το παράγωγό του, άλλοι κατασκευαστές θα μπορούν να παράγουν κάτι παρόμοιο μόνο το 2027.

Αλλά μια τέτοια τιμωρία δεν ισχύει για εμάς, τους απλούς καταναλωτές. Είμαστε ελεύθεροι να κάνουμε ό,τι θεωρούμε κατάλληλο. Σήμερα θα σας πω λεπτομερώς πώς να φτιάξετε τον δικό σας προσαρμοστικό οπίσθιο φωτισμό για μια τηλεόραση ή οθόνη όπως η Philips Ambilight (στο εξής απλώς Ambilight). Για κάποιους το άρθρο δεν θα περιέχει κάτι νέο, γιατί... Υπάρχουν δεκάδες τέτοια έργα και εκατοντάδες άρθρα έχουν γραφτεί σε διαφορετικές γλώσσες, και υπάρχουν χιλιάδες άνθρωποι που το έχουν κάνει ήδη για τον εαυτό τους. Αλλά για πολλούς όλα αυτά μπορεί να είναι πολύ ενδιαφέροντα. Δεν χρειάζεστε ιδιαίτερες δεξιότητες. Μόνο βασικές γνώσεις φυσικής για την 8η λυκείου. Λοιπόν, μόνο λίγη συγκόλληση καλωδίων.

Για να καταλάβετε καλύτερα για τι πράγμα μιλάω, θα σας δώσω το παράδειγμά μου για το τι συνέβη. Το πραγματικό κόστος για μια τηλεόραση 42" είναι περίπου 1000 ρούβλια και 2 ώρες εργασίας.


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

Πιθανές επιλογές υλοποίησης

Υπάρχουν πολλές επιλογές για την υλοποίηση του Ambilight. Εξαρτώνται από την πηγή του βίντεο.

Η φθηνότερη, απλούστερη και πιο αποτελεσματική επιλογή είναι ένας υπολογιστής με Windows, Mac OS X ή Linux ως πηγή σήματος. Τα κουτιά Windows σε επεξεργαστές Atom, που κοστίζουν από 70 $, είναι πλέον πολύ συνηθισμένα. Όλα είναι ιδανικά για την υλοποίηση του Ambilight. Χρησιμοποιώ διάφορα κουτιά Windows (σε βάση τηλεόρασης) ως media player εδώ και αρκετά χρόνια, έχω γράψει μια μικρή χούφτα κριτικές και τα θεωρώ ως τους καλύτερους αποκωδικοποιητές τηλεόρασης για περιεχόμενο πολυμέσων. Η εφαρμογή υλικού αυτής της επιλογής είναι η ίδια για όλα τα αναφερόμενα λειτουργικά συστήματα. Είναι αυτή η επιλογή για την οποία θα μιλήσω στο άρθρο.. Το τμήμα λογισμικού θα σχετίζεται με το σύστημα των Windows. Μπορεί να χρησιμοποιηθεί με Mac OS X και Linux.

Η δεύτερη επιλογή είναι ότι η πηγή σήματος είναι ένας αποκωδικοποιητής πολυμέσων με βάση το Android, από τον οποίο υπάρχει επίσης ένας τεράστιος αριθμός. Αυτή η επιλογή είναι η πιο προβληματική. Πρώτον, η επισήμανση θα λειτουργήσει μόνο στη συσκευή συγκομιδής μέσων Kodi (και στις παραφυάδες της). Δεύτερον, στη συντριπτική πλειοψηφία των περιπτώσεων, όλα λειτουργούν μόνο με απενεργοποιημένη την αποκωδικοποίηση βίντεο υλικού, κάτι που είναι απαράδεκτο για τα περισσότερα κουτιά. Η υλοποίηση υλικού του έργου επιβάλλει επίσης ορισμένες απαιτήσεις. Δεν θα το θίξω, αλλά αν υπάρχει κάτι συγκεκριμένο που σας ενδιαφέρει, θα προσπαθήσω να απαντήσω στα σχόλια.

Η τρίτη επιλογή είναι μια λύση ανεξάρτητη από την πηγή σήματος. Αυτή είναι η πιο ακριβή, αλλά απολύτως καθολική λύση, γιατί... το σήμα λαμβάνεται απευθείας από το καλώδιο HDMI. Για αυτό θα χρειαστείτε έναν αρκετά ισχυρό μικροϋπολογιστή (όπως ένα Raspberry Pi), έναν διαχωριστή HDMI, έναν μετατροπέα AV HDMI-RCA, μια αναλογική συσκευή λήψης βίντεο USB 2.0. Μόνο με αυτήν την επιλογή μπορείτε να είστε σίγουροι ότι θα χρησιμοποιήσετε το Ambilight με οποιονδήποτε αποκωδικοποιητή/δέκτη τηλεόρασης, κουτιά Android, Apple TV, κονσόλες παιχνιδιών (για παράδειγμα, Xbox One, PlayStation 4) και άλλες συσκευές που διαθέτουν έξοδο HDMI. Για την έκδοση με υποστήριξη 1080p60, το κόστος των εξαρτημάτων (χωρίς λωρίδα LED) θα είναι περίπου $70, με υποστήριξη 2160p60 - περίπου $100. Αυτή η επιλογή είναι πολύ ενδιαφέρουσα, αλλά πρέπει να γραφτεί ένα ξεχωριστό άρθρο σε αυτήν.

Σκεύη, εξαρτήματα

Για να το εφαρμόσετε, θα χρειαστείτε τρία κύρια εξαρτήματα: μια ελεγχόμενη λωρίδα LED RGB, ένα τροφοδοτικό και έναν μικροϋπολογιστή Arduino.

Πρώτα μια μικρή εξήγηση.

Το WS2811 είναι ένας ελεγκτής/πρόγραμμα οδήγησης τριών καναλιών (τσιπ) για LED RGB με έλεγχο ενός καλωδίου (απευθύνεται σε αυθαίρετο LED). Το WS2812B είναι ένα RGB LED σε πακέτο SMD 5050, το οποίο έχει ήδη ενσωματωμένο ελεγκτή WS2811.

Για απλότητα, οι λωρίδες LED που είναι κατάλληλες για το έργο ονομάζονται WS2811 ή WS2812B.

Η ταινία WS2812B είναι μια λωρίδα στην οποία τοποθετούνται σε σειρά τα LED WS2812B. Η λωρίδα λειτουργεί με τάση 5 V. Υπάρχουν ταινίες με διαφορετικές πυκνότητες LED. Συνήθως είναι: 144, 90, 74, 60, 30 ανά μέτρο. Υπάρχουν διαφορετικοί βαθμοί προστασίας. Τις περισσότερες φορές αυτές είναι: IP20-30 (προστασία από στερεά σωματίδια), IP65 (προστασία από σκόνη και πίδακες νερού), IP67 (προστασία από σκόνη και προστασία από μερική ή βραχυπρόθεσμη βύθιση σε νερό σε βάθος 1 m). Πίσω σε ασπρόμαυρο.

Εδώ είναι ένα παράδειγμα τέτοιας ταινίας:


Η ταινία WS2811 είναι μια ταινία στην οποία τοποθετούνται σε σειρά ένας ελεγκτής WS2811 και κάποιο είδος LED RGB. Υπάρχουν επιλογές σχεδιασμένες για τάσεις 5 V και 12 V. Η πυκνότητα και η προστασία είναι παρόμοια με την προηγούμενη επιλογή.

Εδώ είναι ένα παράδειγμα τέτοιας ταινίας:


Υπάρχουν επίσης "λωρίδες" WS2811 με μεγάλα και ισχυρά LED, όπως στην παρακάτω φωτογραφία. Είναι επίσης κατάλληλα για την εφαρμογή Ambilight για κάποιο τεράστιο πάνελ.


Ποια κασέτα να επιλέξετε, WS2812B και WS2811;

Σημαντικός παράγοντας είναι το τροφοδοτικό της ταινίας, για το οποίο θα μιλήσω λίγο αργότερα.

Εάν έχετε στο σπίτι τροφοδοτικό κατάλληλο για ρεύμα (συχνά τα τροφοδοτικά αφήνονται στο σπίτι από παλιό ή κατεστραμμένο εξοπλισμό), τότε επιλέξτε μια ταινία με βάση την τάση του τροφοδοτικού, π.χ. 5 V - WS2812B, 12 V - WS2811. Σε αυτή την περίπτωση, απλά θα εξοικονομήσετε χρήματα.

Από τον εαυτό μου μπορώ να κάνω μια σύσταση. Εάν ο συνολικός αριθμός των LED στο σύστημα δεν είναι μεγαλύτερος από 120, τότε το WS2812B. Εάν είναι πάνω από 120, τότε WS2811 με τάση λειτουργίας 12 V. Θα καταλάβετε γιατί συμβαίνει αυτό όταν πρόκειται για τη σύνδεση της ταινίας στο τροφοδοτικό.

Τι επίπεδο προστασίας ταινίας πρέπει να επιλέξω;

Για τους περισσότερους, το IP65 είναι κατάλληλο, επειδή... Στη μία πλευρά είναι επικαλυμμένη με “σιλικόνη” (εποξειδική ρητίνη), και στην άλλη υπάρχει αυτοκόλλητη επιφάνεια 3M. Αυτή η ταινία είναι βολική για τοποθέτηση σε τηλεόραση ή οθόνη και είναι βολική για να σκουπίζει τη σκόνη.

Τι πυκνότητα LED να επιλέξω;

Για το έργο, είναι κατάλληλες λωρίδες με πυκνότητα 30 έως 60 LED ανά μέτρο (φυσικά, 144 είναι δυνατά, κανείς δεν απαγορεύει). Όσο μεγαλύτερη είναι η πυκνότητα, τόσο μεγαλύτερη είναι η ανάλυση Ambilight (αριθμός ζωνών) και τόσο μεγαλύτερη είναι η μέγιστη συνολική φωτεινότητα. Αλλά αξίζει να ληφθεί υπόψη ότι όσο περισσότερα LED στο έργο, τόσο πιο περίπλοκο θα είναι το κύκλωμα τροφοδοσίας της ταινίας και θα χρειαστεί πιο ισχυρό τροφοδοτικό. Ο μέγιστος αριθμός LED σε ένα έργο είναι 300.

Αγορά ταινίας

Εάν η τηλεόραση ή η οθόνη σας κρέμεται στον τοίχο και και οι 4 πλευρές έχουν πολύ ελεύθερο χώρο κοντά, τότε η ταινία τοποθετείται καλύτερα στο πίσω μέρος κατά μήκος της περιμέτρου και στις 4 πλευρές για μέγιστο αποτέλεσμα. Εάν η τηλεόραση ή η οθόνη σας είναι εγκατεστημένη σε βάση ή υπάρχει λίγος ελεύθερος χώρος στο κάτω μέρος, τότε η ταινία πρέπει να τοποθετηθεί στο πίσω μέρος και στις 3 πλευρές (δηλαδή στο κάτω μέρος χωρίς ταινία).

Για τον εαυτό μου, επέλεξα μια λευκή λωρίδα WS2812B IP65 με 30 LED ανά μέτρο. Είχα ήδη ένα κατάλληλο τροφοδοτικό 5V. Αποφάσιζα αν θα χρησιμοποιήσω 60 ή 30 LED ανά μέτρο, αλλά επέλεξα το δεύτερο αφού κοίταξα το βίντεο με έτοιμα παραδείγματα υλοποίησης - η φωτεινότητα και η ανάλυση μου ταίριαζαν και το τροφοδοτικό ήταν πιο εύκολο να οργανωθεί και υπήρχαν λιγότερα καλώδια. Το Aliexpress έχει έναν τεράστιο αριθμό από πολλές ταινίες WS2812B. Παρήγγειλα 5 μέτρα για 16 $. Για την τηλεόρασή μου (42", 3 όψεων) χρειαζόμουν μόνο 2 μέτρα, δηλαδή μπορούσα να την αγοράσω για 10 $, τα υπόλοιπα τρία μέτρα για έναν φίλο. Οι τιμές αλλάζουν συχνά μεταξύ των πωλητών, υπάρχουν πολλές προσφορές, οπότε απλώς επιλέξτε μια φθηνή παρτίδα στο Aliexpress με υψηλή βαθμολογία (λέξεις-κλειδιά αναζήτησης - WS2812B IP65 go WS2811 12V IP65).




Αγορά τροφοδοτικού για την ταινία

Το τροφοδοτικό επιλέγεται ανάλογα με την ισχύ και την τάση. Για WS2812B - τάση 5 V. Για WS2811 - 5 ή 12 V. Η μέγιστη κατανάλωση ενέργειας ενός LED WS2812B είναι 0,3 W. Για το WS2811 στις περισσότερες περιπτώσεις είναι το ίδιο. Εκείνοι. Η ισχύς του τροφοδοτικού πρέπει να είναι τουλάχιστον N * 0,3 W, όπου N είναι ο αριθμός των LED στο έργο.

Για παράδειγμα, έχετε μια τηλεόραση 42", επιλέξατε μια ταινία WS2812B με 30 LED ανά μέτρο, χρειάζεστε 3 μέτρα ταινία και στις 4 πλευρές. Θα χρειαστείτε τροφοδοτικό με τάση 5 V και μέγιστη ισχύ 0,3 * 30 * 3 = 27 W , δηλαδή 5 V / 6 A. Η εφαρμογή μου χρησιμοποιεί μόνο 3 πλευρές, συνολικά 60 LED (57 για την ακρίβεια) - ισχύς από 18 W, δηλαδή 5 V / 4 A.

Έχω τον φορτιστή USB πολλαπλών θυρών ORICO CSA-5U (8 A) σε αδράνεια για μεγάλο χρονικό διάστημα, που έχει απομείνει από μια παλιά κριτική. Οι θύρες του τροφοδοτούνται παράλληλα (αυτό είναι εξαιρετικά σημαντικό), αυτός ο φορτιστής είναι ιδανικός για μένα ως τροφοδοτικό, γιατί... Θα συνδέσω την ταινία μέσω 2 παράλληλων συνδέσεων (οι εξηγήσεις θα είναι αργότερα στο άρθρο).


Αν δεν είχα αυτόν τον φορτιστή, θα τον επέλεγα (υπάρχουν πληροφορίες ότι το συγκεκριμένο τροφοδοτικό είναι εξοπλισμένο με εσωτερικά 2,5 A, οπότε πρέπει να μελετήσετε αυτό το θέμα λεπτομερέστερα με τον πωλητή ή να δείτε άλλα μοντέλα) .

Αγορά μικροϋπολογιστή

Το Ambilight θα ελέγχεται από έναν μικροϋπολογιστή Arduino. Το Arduino Nano στο Aliexpress κοστίζει περίπου το ένα.

Κόστος για την επιλογή μου (για τηλεόραση 42"):

$10 - 2 μέτρα WS2812B IP65 (30 LED ανά μέτρο)
4 $ - 5 V / 4 A τροφοδοτικό (δεν ξόδεψα χρήματα για τροφοδοτικό, δίνω το κόστος για λόγους σαφήνειας)
2,5 $ - Arduino Nano
-----------
16,5$ ή 1000 ρούβλια

Εφαρμογή υλικού

Το πιο σημαντικό πράγμα είναι να οργανώσετε σωστά την παροχή ρεύματος για την ταινία. Η ταινία είναι μεγάλη, η τάση πέφτει στα υψηλά ρεύματα, ειδικά στα 5 V. Τα περισσότερα προβλήματα που προκύπτουν για όσους φτιάχνουν το δικό τους Ambilight σχετίζονται με την παροχή ρεύματος. Χρησιμοποιώ τον κανόνα - πρέπει να κάνετε ξεχωριστό τροφοδοτικό για κάθε 10 W μέγιστης κατανάλωσης ισχύος στα 5 V και 25 W κατανάλωσης ισχύος στα 12 V. Το μήκος του τροφοδοτικού (από το τροφοδοτικό μέχρι την ίδια την ταινία) θα πρέπει να είναι ελάχιστη (χωρίς ρεζέρβα), ειδικά στα 5 IN.

Το γενικό διάγραμμα σύνδεσης έχει ως εξής (το διάγραμμα δείχνει τη σύνδεση ρεύματος για την έκδοσή μου):


Τροφοδοτείται ρεύμα στην ταινία και στα δύο άκρα - δύο παράλληλες συνδέσεις. Για παράδειγμα, αν άναψα και στις 4 πλευρές και η ταινία είχε 60 LED ανά μέτρο (δηλαδή μέγιστη ισχύς 54 W), τότε θα έκανα το εξής τροφοδοτικό:


Τα καλώδια σύνδεσης πρέπει να χρησιμοποιούνται κατάλληλα, όσο μικρότερο είναι το μετρητή (AWG), τόσο το καλύτερο, ώστε να είναι επαρκή για την υπολογιζόμενη ισχύ ρεύματος.

Δύο επαφές πηγαίνουν στο Arduino από την κασέτα. GND, το οποίο πρέπει να συνδεθεί στην αντίστοιχη ακίδα στο Arduino. Και DATA, τα οποία πρέπει να συνδεθούν στην έκτη ψηφιακή ακίδα μέσω μιας αντίστασης 300-550 Ohm (κατά προτίμηση 470 Ohm). Εάν δεν έχετε αντίσταση, τότε στις περισσότερες περιπτώσεις όλα θα λειτουργήσουν καλά χωρίς αυτήν, αλλά είναι καλύτερα να έχετε. Μπορείτε να αγοράσετε μια αντίσταση για μερικά καπίκια σε οποιοδήποτε κατάστημα ραδιοφώνου. Ο ίδιος ο μικροϋπολογιστής Arduino μπορεί να τοποθετηθεί σε οποιαδήποτε βολική θήκη, πολλοί άνθρωποι χρησιμοποιούν ένα αυγό έκπληξη για αυτό. Το Arduino θα πρέπει να τοποθετηθεί όσο το δυνατόν πιο κοντά στην ταινία, έτσι ώστε η σύνδεση DATA να έχει ελάχιστο μήκος.

Η συγκόλληση καλωδίων στην ταινία είναι απλή. Ο κύριος κανόνας είναι ότι ο χρόνος επαφής με το συγκολλητικό σίδερο πρέπει να είναι ελάχιστος.

Στην περίπτωσή μου έγινε έτσι:



Δύο μαύρα καλώδια USB υψηλής ποιότητας χρησιμοποιήθηκαν για τροφοδοσία και ένα λευκό για σύνδεση στον υπολογιστή. Μου τελείωσαν οι λευκές σωλήνες θερμικής συρρίκνωσης, οπότε χρησιμοποίησα κόκκινες. Όχι τόσο "όμορφο", αλλά μου ταιριάζει (είναι κρυμμένο πίσω από την τηλεόραση ούτως ή άλλως).

Μια σημαντική ερώτηση είναι πώς να λυγίσετε την ταινία σε ορθή γωνία; Εάν έχετε μια λωρίδα 60 LED, τότε η λωρίδα πρέπει να κοπεί και να συνδεθεί με κοντά καλώδια (τοποθετώντας τα όλα σε ένα θερμοσυστελλόμενο σωλήνα). Μπορείτε να αγοράσετε ειδικούς γωνιακούς συνδέσμους τριών ακίδων για λωρίδες LED (υπάρχουν 4 ακίδες στην εικόνα, για παράδειγμα):


Εάν έχετε μια λωρίδα 30 LED, τότε η απόσταση μεταξύ των LED είναι μεγάλη, μπορείτε εύκολα να κάνετε μια γωνία χωρίς να κόψετε. Αφαιρέστε ένα κομμάτι από την επίστρωση "σιλικόνης", μονώστε (μπορείτε ακόμη και να χρησιμοποιήσετε ταινία) το μαξιλάρι επαφής και λυγίστε το σύμφωνα με το διάγραμμα:

Έκοψα ένα κομμάτι ταινία για εξάσκηση. Το κύριο πράγμα δεν είναι να το παρακάνετε - λυγίστε το ελαφρώς μία φορά και αυτό είναι όλο. Δεν χρειάζεται να το λυγίζετε εδώ κι εκεί, δεν χρειάζεται να πιέζετε πολύ τη γραμμή κάμψης.


Εδώ είναι μια άποψη από το πίσω μέρος της τηλεόρασης, όλα τα καλώδια περνούν από την τρύπα στο ντουλάπι:

Μέρος λογισμικού

Αυτό είναι το πιο απλό πράγμα.

Συνδέουμε τον μικροϋπολογιστή Arduino μέσω USB. Το πρόγραμμα οδήγησης (σειριακή διεπαφή CH340) θα εγκατασταθεί αυτόματα. Εάν αυτό δεν συμβεί, τότε στον φάκελο Arduino IDE υπάρχει ένας φάκελος Drivers με όλα όσα χρειάζεστε.

Εκκινήστε το Arduino IDE και ανοίξτε το αρχείο Adalight.ino.


Αλλάζουμε τον αριθμό των LED στον κωδικό. Είμαι 57.


Εργαλεία > Πίνακας > Arduino nano
Εργαλεία > Θύρα > Επιλέξτε τη θύρα COM (η επιθυμητή επιλογή θα υπάρχει)

Κάντε κλικ στο κουμπί "Λήψη":


Το πρόγραμμα θα σας ενημερώσει όταν ολοκληρωθεί η λήψη (αυτό είναι κυριολεκτικά μερικά δευτερόλεπτα).

Ετοιμος. Πρέπει να αποσυνδέσετε το Arduino από το USB και να το συνδέσετε ξανά. Η ταινία θα ανάψει διαδοχικά σε κόκκινο, πράσινο και μπλε - το Arduino έχει ενεργοποιηθεί και είναι έτοιμο για χρήση.

Κατεβάστε και εγκαταστήστε το πρόγραμμα. Στο πρόγραμμα, κάντε κλικ στο "Περισσότερες ρυθμίσεις" και καθορίστε τη συσκευή - Adalight, θύρα COM και τον αριθμό των LED. Επιλέξτε τον αριθμό των καρέ που θέλετε να τραβήξετε (έως 60).


Στη συνέχεια, κάντε κλικ στο «Εμφάνιση ζωνών λήψης» > «Οδηγός ρύθμισης ζώνης». Επιλέξτε τη διαμόρφωση της κορδέλας σας.


Κάντε κλικ στην επιλογή Εφαρμογή και αποθήκευση ρυθμίσεων. Αυτό ολοκληρώνει τις βασικές ρυθμίσεις. Στη συνέχεια, μπορείτε να πειραματιστείτε με το μέγεθος των ζωνών λήψης, να διορθώσετε χρώμα την ταινία κ.λπ. Το πρόγραμμα έχει πολλές διαφορετικές ρυθμίσεις.


Για να ενεργοποιήσετε ένα προφίλ, απλώς κάντε διπλό κλικ στο αντίστοιχο εικονίδιο (προφίλ AmbiBox) στην περιοχή ειδοποιήσεων των Windows. Η ταινία θα ανάψει αμέσως. Μπορεί επίσης να απενεργοποιηθεί με διπλό κλικ.

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



Έχετε ερωτήσεις;

Αναφέρετε ένα τυπογραφικό λάθος

Κείμενο που θα σταλεί στους συντάκτες μας: