(9 głosujących) Przedstawiony układ jak sama nazwa wskazuje jest domowej konstrukcji Ambilight'em. Jest to druga wersja opisywanej w ubiegłym roku Mirlight'a wyposażona w kilka modyfikacji. Całość oparta jest o mikrokontroler jednoukładowy ATMEGA16 i zestaw trójkolorowych diod LED. Urządzenie składa się ze sterownika i połączonych z nim modułów diodowych, po trzy diody połączone równolegle. Mirlight 2 posiada 8 niezależnych kanałów generujących barwy w zależności od średniego koloru na brzegach ekranu. Posiada również dodatkowe wyjście dla ostatniego kanału, przez co można podłączyć dwa moduły u dołu ekranu. Łączność z komputerem zapewnia interfejs USB przez wbudowany konwerter USB<->RS-232 firmy FTDI. Oprogramowanie sterujące zostało napisane w języku Python i działa z powodzeniem pod systemem Windows i Linux (Testowane było pod Archlinux i PLD Titanium, w wersjach 64-bitowych). Program sterujący umożliwia zdefiniowanie obszarów uśredniania koloru dla każdego z kanałów, oraz konfigurację szybkości przejść kolorów, potrzebną, gdy obraz na ekranie zmienia się bardzo szybko. Dodatkowo urządzenie ma możliwość odbioru transmisji RC5 i sterowanie odtwarzaczem filmów. Działanie zarówno części sprzętowej, jak i programu uległo znacznej poprawie. Odświeżanie kolorów jest teraz zdecydowanie szybsze, przy jednoczesnym wyeliminowaniu błędów w transmisji.
Działanie:Schemat ideowy sterownika znajduje się na rysunku poniżej: Sercem układu sterownika jest mikrokontroler U1 (ATMega16) wraz z rezonatorem kwarcowym X1 (16MHz) i kondensatorami C1 (22pF) i C2 (22pF). Złącze Prog umożliwia zaprogramowanie mikrokontrolera bez wyjmowanie procesora z podstawki. Układ U3 (FT232RL)jest konwerterem USB-RS232. Zapewnia on bezproblemową pracę pod wszystkimi systemami operacyjnymi i jednocześnie sam dba o poprawność transmisji po USB. Zarówno po stronie programowej jak i sprzętowej jego obsługa jest identyczna jak portu szeregowego. Złącze USB1 jest klasycznym gniazdem USB B, stosowanym w większości sprzętu komputerowego. Kondensatory C9 (10nF), C10 (100nF) i C11 (4,7uF) filtrują napięcie zasilania dla układu U3. Rezystory R4 i R5 są pomocne przy badaniu podłączenia kabla do portu USB, gdyż cały układ zasilany jest z zewnętrznego zasilacza 5V. R4 podciąga stan portu mikrokontrolera do potencjału masy jak wtyczka jest odpięta, a R5 uniemożliwia zasilanie procesora poprzez wyprowadzenie portu w przypadku gdy zewnętrzny zasilacz jest odłączony. Rezystory R2 (4,7k) oraz R3 (10k) odpowiedzialne są za dopasowanie poziomów logicznych miedzy standardami 5V i 3.3V (zwykły dzielnik rezystancyjny) oraz sterowanie wejściem reset układu U3. Dzięki temu niezależnie czy najpierw zostanie włączony kabel USB a potem włączone będzie zasilanie, czy odwrotnie, komputer poprawnie wykryje urządzenie w systemie. Złącze Z1 jest miejscem podłączenia zasilania 5V, przeważnie bezpośrednio z zasilacza w komputerze, gdyż taka ilość diod może w skrajnym przypadku pobierać prąd większy niż 1,6A. Kondensatory C5-C6(100nF) oraz C3-C4(100uF) filtrują napięcie zasilania. W drugiej wersji Mirlight'a zmienione zostały moduły diodowe na takie ze wspólną anodą. Uprościło to konstrukcję buforów wyjściowych poprzez zastosowanie układów U4-U6 (ULN2803). Kanały podłączone są do sterownika za pomocą tasiemek 10 żyłowych za pośrednictwem popularnych złącz FD10 i wtyczek FC10 (FC1- FC8, FC8B). Tak duże złącze zostało wybrane ze względu na łatwość montażu takich tasiemek i brak konieczności lutowania przewodów. W przypadku przeróbki czy wymiany kanału, wystarczy wyciągnąć wtyczkę. Rezystor R1 (220R) oraz kondensator C7 (100uF) stanowią obwody zasilania dla odbiornika podczerwieni U2 (TSOP1736). Schemat ideowy jednego z paneli diodowych znajduje się na rysunku poniżej: Diody D1-D3 wykonane w technologii SMD stanowią podstawę dobrego działania układu. Rozpraszanie barw w takich diodach jest znacznie lepsze niż w odpowiednikach do montażu przewlekanego. Rezystory R1-R9 ograniczają prąd poszczególnych struktur LED. R1, R4 i R7 (180R) mają mniejszą wartość aby zapewnić jednakową moc świecenia wszystkich barw (widzianą przez oko). Pozostałe rezystory mają wartość 330R. Wartości tych elementów mogą być zmieniane, w zależności od zastosowanych diod, tak aby zapewnić odpowiedni prąd na każdą ze struktur LED. Budowa:Układ sterownika z powodzeniem można zbudować w oparciu o płytkę drukowaną dostępną tutaj. Rysunek w odbiciu lustrzanym dostępny jest tutaj. Montaż sterownika nie jest trywialny ze względu na obecność układu w bardzo małej obudowie SSOP28. Trzeba tutaj bardzo uważać przy wykonywaniu samej płytki, jak potem przy lutowaniu układu, zwracając uwagę na to aby zamontować go poprawnie (można skorzystać z rysunku montażowego w odbiciu lustrzanym bo układ jest od spodu). W drugiej kolejności należy wlutować wszystkie zworki (6 sztuk) oraz rezystory. Pod układ U1 dobrze jest dać podstawkę, podobnie jak pod bufory U4-U6. Kolejność pozostałych elementów jest dowolna, z tym że złącza FD10 dobrze jest zamontować na samym końcu. Pomocą w konstrukcji może okazać się schemat montażowy dostępny tutaj. Dla montażu SMD pomocny będzie także rysunek montażowy w odbiciu lustrzanym, dostępny tutaj Panele diodowe z powodzeniem można zbudować w oparciu o płytkę drukowaną dostępną tutaj. Rysunek w odbiciu lustrzanym dostępny jest tutaj. Wykonanie płytek z diodami wymaga zastosowania cienkiego laminatu, np 0.8mm, gdyż wtedy będzie można lekko wygiąć dany kanał i dopasować do krzywizny monitora. Montaż paneli diodowych (9 sztuk) nie jest trudny ale pracochłonny, gdyż wymaga przylutowania wielu elementów. W tym wypadku jest wiele możliwości montażu. Można wlutować rezystory klasycznie od strony elementów, a diody od strony ścieżek, lub wszystkie elementy umieścić po stronie ścieżek, jak pokazują fotografie. Złącze na taśmę (kątowe) musi być przylutowane od strony druku, i wymaga to niewielkiej wprawy i cienkiego grota lutownicy. Poza tym montaż płytek z diodami nie sprawi żadnego problemu. Pomocą w konstrukcji może okazać się schemat montażowy dostępny tutaj. Dla montażu SMD pomocny będzie także rysunek montażowy w odbiciu lustrzanym, dostępny tutaj Jak już wcześniej wspomniano, układ zasilany jest napięciem 5V bezpośrednio z zasilacza komputerowego. Konstrukcja Mirlight'a 2 umożliwia jego zamontowanie z tyłu monitora bez żadnych dodatkowych elementów. Nie trzeba też żadnego materiału rozpraszającego światło. Przed przystąpieniem do połączenia całości, warto sprawdzić działanie każdego z modułów diodowych, czy wszystkie kolory we wszystkich diodach na pewno świecą i czy natężenie jest jednakowe. Przy zastosowaniu innych diod niż "LED RGB SMD PLCC 5060 3x Chip" trzeba dokładnie sprawdzić zgodność wyprowadzeń. Tasiemki należy tak zacisnąć aby przewodziły 1 do 1 (tak aby pierwszy pin jednej wtyczki był połączony z pierwszym pinem drugiej), zgodnie z rysunkiem poniżej: Pierwsze piny w złączach FD10 (w sterowniku) mają być podłączone do koloru niebieskiego, piąte do czerwonego, a dziewiąte do zielonego. Złącze FD10 w panelach są na płytce narysowane w odbiciu lustrzanym gdyż ich montaż będzie przebiegał od strony druku. Oznaką dobrego działania urządzenia jest krótki błysk wszystkich diod na kolor biały w momencie włączenia zasilania. Układ prototypowy w stanie spoczynku, kiedy nie wyświetla żadnego koloru, wynosi około 30mA, a po zaświeceniu koloru białego 700mA. Zależy to tylko od użytych diod i prądu na jakim pracują. Rozmieszczenie kanałów przedstawione jest na rysunku poniżej: Wykaz Elementów:Sterownik:1x Złącze Śrubowe ARK2(podwójne) Kanały:9x Złącze FD10, kątowe Inne:18x Złącze FC10 na taśmę Programowanie:Kod Źródłowy do sterownika został napisany w BASCOM AVR firmy MCS Electronics (http://www.mcselec.com/). Program przedstawiony jest poniżej: '************* Konfiguracja uC ***************** '*********************************************** $regfile = "m16def.dat" $crystal = 16000000 '$hwstack = 100 '$swstack = 100 $baud = 38400 Config Serialin = Buffered , Size = 26 Config Porta = &B11111111 : Porta = &B11111111 Config Portb = &B11111111 : Portb = &B11111111 Config Portc = &B11111111 : Portc = &B11111111 Config Portd = &B11011010 : Portd = &B10011111 Config Timer1 = Timer , Prescale = 8 Enable Timer1 : On Timer1 Prztimer1 On Int0 Przzew0 Nosave Config Int0 = Low Level Enable Int0 Config Rc5 = Pind.2 Enable Interrupts '********** Konfiguracja uC Koniec ************ '****************** Nazwy ******************* '*********************************************** 'Rd Alias Porta 'Gd Alias Portb 'Bd Alias Portc '************* Nazwy Koniec **************** '****************** Zmienne ******************* '*********************************************** Dim Licznik As Byte Dim I As Byte Dim Temp As Byte Dim Tab_temp(25) As Byte Dim Color(24) As Byte Dim Tab_sum As Byte Dim Conf_temp As Byte , Conf As Byte Dim Send As Bit Dim K As Byte , J As Byte Dim Komenda As Byte , Adres As Byte Dim A As Byte Dim B As Byte Dim C As Byte Dim D7 As Bit '************* Zmienne Koniec **************** '************ Warunki Poczatkowe *************** '*********************************************** '******* Warunki Poczatkowe Koniec *********** Wait 1 '************** Petla glowna ****************** '*********************************************** Do Portd.6 = Pind.5 'daje 1 na reset Ft232 jesli jest wtyczka do usb wpięta i procesor jest zasilany If Ischarwaiting() = 1 Then Temp = Inkey() If Temp > 127 Then I = 0 'Incr Z Tab_sum = Temp If Temp <> 128 Then Conf_temp = Temp And &B01111111 Else Conf_temp = 0 Else Incr I Tab_temp(i) = Temp Tab_sum = Tab_sum + Temp If I = 25 Then Tab_sum = Tab_sum - Tab_temp(25) Tab_sum = Tab_sum / 2 If Tab_sum = Tab_temp(25) Then 'Incr D Stop Timer1 For I = 1 To 24 Color(i) = Tab_temp(i) Next I Start Timer1 If Conf_temp <> 0 Then Conf = Conf_temp Conf_temp = 130 If Conf = 2 Then Printbin Conf_temp End If End If End If End If End If If Send = 1 Then Send = 0 If Adres = 0 Then Printbin Komenda 'Portd.3 = Not Portd.3 Enable Int0 End If Loop End '************ Petla glowna Koniec ************** '************ Przerwanie timer 0 *************** '*********************************************** Prztimer1: Timer1 = 65286 Incr Licznik If Licznik = 100 Then Licznik = 0 If Licznik < Color(1) Then Set B.1 Else Reset B.1 If Licznik < Color(2) Then Set B.2 Else Reset B.2 If Licznik < Color(3) Then Set B.0 Else Reset B.0 If Licznik < Color(4) Then Set B.4 Else Reset B.4 If Licznik < Color(5) Then Set B.5 Else Reset B.5 If Licznik < Color(6) Then Set B.3 Else Reset B.3 If Licznik < Color(7) Then Set A.0 Else Reset A.0 If Licznik < Color(8) Then Set A.1 Else Reset A.1 If Licznik < Color(9) Then Set B.6 Else Reset B.6 If Licznik < Color(10) Then Set A.3 Else Reset A.3 If Licznik < Color(11) Then Set A.4 Else Reset A.4 If Licznik < Color(12) Then Set A.2 Else Reset A.2 If Licznik < Color(13) Then Set A.6 Else Reset A.6 If Licznik < Color(14) Then Set A.7 Else Reset A.7 If Licznik < Color(15) Then Set A.5 Else Reset A.5 If Licznik < Color(16) Then Set C.6 Else Reset C.6 If Licznik < Color(17) Then Set C.5 Else Reset C.5 If Licznik < Color(18) Then Set C.7 Else Reset C.7 If Licznik < Color(19) Then Set C.3 Else Reset C.3 If Licznik < Color(20) Then Set C.2 Else Reset C.2 If Licznik < Color(21) Then Set C.4 Else Reset C.4 If Licznik < Color(22) Then Set C.0 Else Reset C.0 If Licznik < Color(23) Then Set D7 Else Reset D7 If Licznik < Color(24) Then Set C.1 Else Reset C.1 Porta = A Portb = B Portc = C Portd.7 = D7 Return '******** Przerwanie timer 0 Koniec ************ '************ Inne Etykiety *************** '*********************************************** Przzew0: Disable Int0 Enable Interrupts Getrc5(adres , Komenda) Komenda = Komenda And &B01111111 Send = 1 Return Ustawienia fusebitów dla mikrokontrolera ATMega16 przedstawione są poniżej: Jak już wcześniej wspominano, sam układ sprzętowy jest w istocie wyświetlaczem, sterowanym poprzez USB. Po odebraniu paczki danych mikrokontroler sprawdza jej sumę kontrolna i jeśli jest OK to wpisuje do tablicy wartości kolorów, aktualną barwę, wyświetlaną na ekranie. Do osiągnięcia pełni działania, układu wymagany jest program komputerowy, analizujący kolory z ekranu i wysyłający je do części sprzętowej. Część Mechaniczna:Konstrukcja mechaniczna układu nie sprawia tyle problemów jak miało to miejsce dla wcześniejszej wersji projektu. Mirlight 2 nie wymaga żadnej obudowy, a same płytki mogą być przymocowane do monitora za pomocą taśmy do luster (super mocna taśma dwustronna o strukturze piankowej). Z tego też powodu płytki paneli diodowych lepiej jeśli nie mają żadnych rezystorów po stronie elementów. Umożliwi to łatwe przyklejenie ich do monitora. Dodatkowo cienki laminat z którego zostały wykonane panele diodowe, umożliwi dopasowanie kształtu płytki do krzywizny z tyłu monitora. Prowadzenie przewodów taśmowych należy dokładnie przemyśleć, żeby jak najmniej zakłócały one normalne użytkowanie monitora (np ni zasłaniały otworów wentylacyjnych itp). Aby uniknąć zbędnej plątaniny kabli sterownik powinien znaleźć się możliwie w środkowej pozycji za monitorem. Zdjęcia projektu przedstawiają propozycję montażu. Obsługa:Po wykonaniu układu sprzętowego należy ściągnąć oprogramowanie: http://github.com/grizz-pl/mirlight Dostępne są tam wersje źródłowe, a także plik wykonywalny (*.exe) na system Windows. Więcej na http://grizz.pl/mirlight Testowanie:Może się zdarzyć że układ mimo usilnych prób uruchomienia dalej nie chce działać. Można wtedy wykonać kilka testów:
Zdjęcia Projektu:
|
|||||||||||||||||||||||||||||||||||||||||||
a czy np ten sterownik terz
a czy np ten sterownik terz mozna podłączyc pod tv i np z telewizora boki beda sie oswietlały na usb podłaczone pod telwizor
Oczywiście. O ile
Oczywiście. O ile zainstalujesz na na TV aplikację sterującą.
Fotografia, Linux, programowanie, python.. czyli strona domowa || Galeria fotografii http://galeria.firlej.org
zestaw bez PC
Witam czy jest możliwość uruchomienia takiego zestawu z pominięciem urządzeń zewnętrznych (pc, xbox, itp) jesli tak to co będzie jeszcze potrzebne. Jeśli Pwalkiew pytał o to samo to przepraszam za powielanie postu.
Re: mirlight
Tak jak było napisane wcześniej.... musisz zainstalowac oprogramowanie sterujące o ono działa na pc. Jesli zmusisz skrypt pythona do działania w TV to powinno działać
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Jak dokładnie ma być
Jak dokładnie ma być wlutowany FT232? Mój nie posiada wcięcia, tylko kropkę.
Witam, Czy po podłączeniu
Witam,
Czy po podłączeniu zmontowanego układu mam oczekiwać "kreatora nowego sprzętu"? U mnie komputer milczy na temat jakiegokolwiek nowego sprzętu, nie specjalnie chce mu się komunikować z Atmega. Jakie mogą być przyczyny? (za wyjątkiem ft232)?
Mam lekki problem z układem.
Mam lekki problem z układem. Wszystko działa poprawnie, pulpit i wszystkie aplikacje w tym przeglądarkę wyświetla poprawnie, jednak gdy próbuję uruchomić np film na Youtube zwyczajnie się wyłącza (gasną diody). Jakieś podpowiedzi? ;)
Re: Mirlight
Kropka przy FT232 oznacza pierwszą nóżkę, wcięcie w sumie oznacza stronę gdzie jest nóżka 1 więc w sumie to to samo. Po podłączeniu do kompa powinien pojawić się wirtualny port szeregowy i komp powinien chcieć sterowniki do FT232.
-------------------
Układ wyłącza się jak włączysz youtube czy poprostu wyświetla kolor czarny bo brzegi są czarne.. Sprawdzałeś czy obszary aktywne w ustawieniach programu leżą w miejscach gdzie są jakieś kolory a nie czarne tło
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Mam pytanie, można jakoś
Mam pytanie, można jakoś przyśpieszyć działanie układu? Przy oglądaniu teledysków, w których dzieje się bardzo dużo w krótkim czasie widać wyraźne opóźnienia. Jest możliwość regulacji opóźnienia np. do 1ms? niby 10ms to też bardzo małe opóźnienie, jednak wyraźnie pogarsza sprawę odbioru. No chyba, że diody muszą obsługiwać jakąś prędkość, o tym nie wiem.
Zmień w kodzie. A może
Zmień w kodzie. A może wystarczy tylko w pliku konfiguracyjnym - nie pamiętam już. PRzy czym obstawiam, ze to nie rozwiąże problemu. 10ms = teoretycznie 100 zmian na sek... to nie jest mało.
Fotografia, Linux, programowanie, python.. czyli strona domowa || Galeria fotografii http://galeria.firlej.org
Re: Mirlight
Prawdopodobnie sprzęt nie wyrabia... pewnie 10ms nie obsłuży i co którąś paczkę gubi
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Kolor do wyświetlenia
Cześć. Robię ambilapkę na projekt na studia (ale w dużo "lżejszej formie" niż u Ciebie) i mam jedno pytanie. Jak najlepiej (i najszybciej) wybrać z danego obszaru wg Ciebie optymalny kolor do wyświetlenia przez daną diodę LED? Bo ja robię to przez posortowanie quick sortem tablicy zawierającej kolory z danego obszaru, a następnie liczę dominantę z tych kolorów^^ A pewnie są dużo lepsze sposoby na to.
Różne algorytmy pisane z
Różne algorytmy pisane z palca okazały się mniej wydajne niż zastosowany w projekcie hack z Qt. Dalej nie szukaliśmy z racji, ze w pełni wydajność była zadowalająca.
Fotografia, Linux, programowanie, python.. czyli strona domowa || Galeria fotografii http://galeria.firlej.org
Witam, układ mam złożony w
Witam, układ mam złożony w zmontowany. Działa świetnie. Mam tylko jedno pytanie. Istnieje możliwość uruchamiania w tle ambilightu razem z systemem Windows? Trochę to uciążliwe za każdym razem włączać program i klikać start.
Wrzuć w kodzie wywołanie
Wrzuć w kodzie wywołanie StartStop, zaraz po pojawieniu się okna - ostatnie linijki mirlight_gui.py
Fotografia, Linux, programowanie, python.. czyli strona domowa || Galeria fotografii http://galeria.firlej.org
Witam, czy mogę zastąpić
Witam, czy mogę zastąpić każdy panel diodowy gotowym paskiem diodowym skladajacym się z trzech diod RGB każdy? Jeśli tak, to dostanę jakieś wskazówki od bardziej doświadczonych w tym temacie?
Re: Mirlight
Bez klopotu można zastosować typowe tażmy LED RGB... specjalnie wersja 2 została zaprojekowana na diodach ze wspólną anodą bo takie paski maja wspólny +. Paski podłączasz do złącz FC1-FC9 ale wykorzystujesz tylko piny 1, 5 i 9 w każdym złączu. + z pasków podłączasz do zasilacza LED 12V, masa zasilacza do masy układu. Trzeba tylko jeszcze zrobić zasilacz na LM7805 aby z 12V zrobic 5V dla procka i będzie działać
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Witam, czy bedzie działać mi
Witam, czy bedzie działać mi ten ambilight z TV jak mam w nim wejście USB? :D
RE: Mirlight
Jesli twój TV pozwala odpalić program w pythonie (raczej mało prawdopodobne) to powinno działać..... Nie spotkałem jeszcze TV który by to potrafił, musiał by tam być system operacyjny, jakiś linux, lub od biedy windows
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Jest kilka tv z androidem czy
Jest kilka tv z androidem czy webOsem - na nich można by zadziałać, ale to wymagałoby sporej ilości zmian.
Fotografia, Linux, programowanie, python.. czyli strona domowa || Galeria fotografii http://galeria.firlej.org
dlaczego w grach wciąż wyświetlane są kolory pulpitu?
oglądając filmy, zdjęcia mirilight2 działa, natomiast w grach widzę statycznie wyświetlany schemat kolorów z pulpitu.
Gry w różny sposób
Gry w różny sposób wyświetlają obraz. Nie każdy z nich jest widoczny dla mirlighta. Podobnie będzie z filmami jeżeli odtwarzacz używa niestandardowego sposobu - można przetestować np. w smplayerze.
Fotografia, Linux, programowanie, python.. czyli strona domowa || Galeria fotografii http://galeria.firlej.org
rozumiem, że nic się z tym nie zrobi?
jw.
Re: Mirlight
Na dzień dzisiejszy nic z tym nie zrobimy... trzeba by pomyśleć na ulepszonym softwarem
UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.
Kodi
Witam. Czy ktoś z posiadaczy tego urządzenia m?głby sprawdzić czy działa poprawnie z programem Kodi ( dawne XBMC)?