Watek ten powstal juz jakis czas temu i jest on efektem pracy dzieki Mirkowi / pasji do elektroniki oraz obecnych tu forumowiczow. Idea stworzenia systemu podobnego do Ambilight krecila mi sie po glowie juz od jakiegos czasu. Teraz jednakze umiejetnosci w elektronice / programowaniu umozliwily stworzenie takiego systemu.
Co sprawia , ze system ten jest taki fajny ? Hmmm jesli pominac fakt , ze do jego dzialania potrzebny jest komputer to osiaga on swietna wydajnosc / moze bezproblemowo wesprzec do 240 kanalow LED oraz aplikacja sterujaca jest caly czas rozwijana.
Planowane jest wbudowanie systemu pluginow - gdzie kazdy moglby rozszerzyc dzialanie aplikacji w latwy sposob. Jeden z forumowiczow (mam nadzieje ze nie przekrecam nicka :) ) Xerox91 osiagnal juz swietne efekty :)
Wersja , ktora tu widzicie jest pierwsza w serii :) wiec mozecie mi wierzyc ze gdzies w 2015 powstanie druga.
Gdzie jest Nemo
Bardzo mila reklama w TV
Hit kolorow - epicki GO PRO HERO - moj ulubiony
Technikalia
A wiec przejdzmy do rzeczy najbardziej interesujacej. Jak to mozliwe ? Ach wszyscy by sie bardzo zdziwili ...
USB-RS232 lub nasz ukochany ATB lub tez specjalnie przygotowana plytka :)
WS2812B
Windows App - "Massive Color"
Przede wszystkim system dziala na zasadzie aplikacji ktora uruchomiona na Windowsie dokonuje niezwykle precyzyjnej i wydajnej analizy obrazu. Te dane sa wysylane bezposrednio do procka , ktory przetwarza te dane dla WS2812B.
Aplikacja napisana przeze mnie wymaga .Net 4.5.1 do poprawnej pracy. Niestety zejscie na nizszy .Net oznaczaloby sprawdzona utrate wydajnosci i dlatego jesli nie masz przynajmniej Windows 7 nie bedziesz w stanie uruchomic aplikacji.
W zalaczniku jest moja plytka dla FTDI232RL + Atmega32. Przyznaje sam , ze mozna ja bardzooooo zmniejszyc i ulepszyc. Ale jako , ze lata to u mnie w domu nie bawie sie w jakies zmienjszanie :)
Załącznik:
Eagle.zip
Kierunek podlaczenia LED
Prosta i wazna sprawa - bierzemy nasz pasek i podlaczamy w nastepujacy sposob:
Patrzac na TV od przodu zaczynamy od lewego gornego rogu -> zgodnie z ruchem wskazowek zegara
KANALY LICZA SIE OD GORY -> PRAWEJ -> DOLU -> LEWEJ
WSAD HEX
W plikach do sciagniecia mozecie znalezc wsad HEX dla procesorow , o ktore prosilicie wczesniej w tym watku. Na chwile obecna zawiera on wersje firmware 1.5
Załącznik:
hex_files.zip
Komendy AT
Aby "wsad mial smaczek .." daje Wam liste komend AT :) do zabawy z ledami... pewnie sie rozrosnie :)
Komenda "AT+CLR" FORMAT UZYCIA : AT+CLR=0xFF00FF REZULTAT : wyswietla dany kolor na calym pasku
Komenda "AT+RGB" FORMAT UZYCIA : AT+RGB=200,100,100 (AT+RGB=R,G,B) REZULTAT : wyswietla dany kolor na calym pasku po podaniu wartosci RGB
Komenda "AT+IPC" FORMAT UZYCIA : AT+IPC=200,100,100,99 (AT+IPC=R,G,B,index) REZULTAT : wpisuje dany kolor z wartosci RGB na podanym indeksie WYMAGA AT+PSH do wypchniecia koloru
Komenda "AT+PSH" FORMAT UZYCIA : AT+PSH REZULTAT : wyrzuca bufor na pasek
Komenda "AT+CFG" FORMAT UZYCIA : AT+CFG=90 REZULTAT : dynamiczna alokacja pamieci na diody LED
Tutaj tylko moja mala uwaga. Te komendy nie sa uzywane przez aplikacje do obslugi naszej "kolorostyki'. Powod jest banalnie prosty, Czas potrzebny na przetworzenie komendy AT bylby po prostu zbyt dlugi i zaczeloby sie widoczne degradacje kolorow w stosunku do obrazu :)
Aplikacja na Windows
Załącznik:
MassiveColor.zip
Ok - a wiec masz WS2812B na TV (monitorze ) , zestaw ATB/wlasna plytke /RafTech PCB... i podlaczyles to wszystko razem. Wiec zabieramy sie za odpalenie aplikacji na Windows.
Jesli wczesniej pamietasz jak wygladala aplikacja do obslugi kolorow to nastapila dosc przelomowa zmiana w UI. Aplikacja po uruchomieniu wyglada nastepujaco
Sterowanie "jasnoscia" oraz mozliwoscia zamkniecia aplikacji prosto z tray'a
Ustawienia dostepne po wejsciu w zakldke "Settings" prezentuja sie nastepujaco
Kwestia wyjasnienia :
Borders - czyli jak bardzo skrajne krawedzie naszych stref beda daleko od brzegow ekranu. Domyslnie 0
Padding - czyli tak zeby sie nam wiersze nie nakladaly z kolumnami - domyslnie 10% ekrany (tworza sie w rogach strefy z ktorych nie korzystamy podczas obliczania kanalow)
Deepth - jak gleboko wejda kanaly w nasz ekran. Domyslnie 10%
Pixel Treshold - minimalna wartosc RGB zbey pixel zostal uznany za wartosciowy dla nas :) Domyslnie 1
Pixel Precision - ile punktow w strefie jest probkowanych. Domyslnie 10 / min 5 (*chociaz mysle o zdjeciu granicy minimalnej do nawet 1 :O )
Zakladka "AppSettings" daje nam kolejne mozliwosci konfiguracji (tj. baud / autostart i autorun )
Czym sie rozni autostart od autorun ? Ta pierwsza uruchomi program po starcie. Ta druga automatycznie po uruchomieniu aplikacji postara sie polaczyc z urzadzeniem i samoczynnie zaczac proces :)
W zasadzie jesli chodzi o aplikacje to jest tyle :) Aby poprawnie z niej korzystac powinienes :
Uruchomic aplikacje
Wybrac w ustawieniach ile masz LED
sprawdzic swoj baud rate
po dokonaniu ustawien kliknac "Apply"
W glownym ekraniue kilknac "Start"
Ustawienia - Borders
Ustawienia borders sa wyrazone w % wielkosci ekranu. Okreslaja one gdzie dla programu maja znajdowac sie zewnetrzne krawedzie naszego programu. Jesli np ogladamy film w formacie kinowym i gora oraz dol ekranu sa sciete to patrzac na ponizsze wyjasnienie mozemy ustawic borders - X na 10% co sprawi, ze kanaly beda sie zaczynac 10% nizej/wyzej od krawedzi gornej/dolnej ekranu.
Ustawienia - Padding & Channels Depth
Ustawienia Padding i Channel depth sa wyrazone w % ekranu. Dla najlepszej jakosci ustawienia powinny byc te same. Padding oznacza granice poczatkowa i startowa dla tworzonych kanalow. Umozliwia to unikniecie sytuacji nakladania sie na siebie kanalow z bokow na gore etc.
Natomiast channel_depth definiuje w % jak gleboko od krawedzi ekranu zostanie stworzony "kanal"
Podziekowania
Zapomnialem o tak bardzo waznym!
Dla Mirka za ksiazke i wyrozumialosc podczas tylu "glupich" pytan :)
Dla Majstra ! Za pomoc w rozwoju hardware/software i bycie beta testerem!
WOOOOOW !!! .... jakbym powiedział że to przesada - to bym przesadził ... mega extra multimedialny projekt .... muuuuuuszę to przetestować .... później jeszcze opiszę wrażenia ... ale już po tych fotkach i opisie - muszę zbierać szczękę z podłogi
WOOOOOW !!! .... jakbym powiedział że to przesada - to bym przesadził ... mega extra multimedialny projekt .... muuuuuuszę to przetestować .... później jeszcze opiszę wrażenia ... ale już po tych fotkach i opisie - muszę zbierać szczękę z podłogi
Z pkora dziekuje! Prawda jest taka , ze na filmikach jest niska jakosc! kazdy powienen to zaobczyc! nawet na 10'ciu ledach
Prawda jest taka , ze na filmikach jest niska jakosc! kazdy powienen to zaobczyc! nawet na 10'ciu ledach
Dokładnie - ja o tym wiem bo często muszę sporo walczyć ze sposobami oświetlenia pomieszczenia żeby dostosować do jak najlepszych efektów gdy robię poradniki o diodach LED - magic ledach itp ... a i tak zwykle nie wychodzi to do końca - więc trzeba mieć tę poprawkę że w rzeczywistości wygląda to jeszcze co najmniej 20x lepiej
Dołączył(a): 17 sie 2013 Posty: 3797 Lokalizacja: Grudziądz
Pomógł: 143
Ja używam atb do ambi ... byłem przy rozwoju apki jak i wsadu wiem ile RafPe zjadł na tym włosów uzyskaliśmy prędkość 230400 więc jest rewelacja i praktycznie 0 opóźnień.
Świetny projekcik! Mam jednak pytanie, bo albo przeoczyłem albo nie doczytałem - gdzie sie wtyka obraz, który PC analizuje ?? TV in w karcie graficznej, dodatkowa karta telewizyjna... ??
Świetny projekcik! Mam jednak pytanie, bo albo przeoczyłem albo nie doczytałem - gdzie sie wtyka obraz, który PC analizuje ?? TV in w karcie graficznej, dodatkowa karta telewizyjna... ??
Rewelacja! Jeśli można to prosiłbym o opisanie na jakiej zasadzie działa program pod PC, jakie biblioteki były używane itp ( apka pisana w C#?)
A wiec cala aplikacja to zwykly C# WPF wiec tutaj nie ma zadnej ciekawej magii. Dalej kolejnym wykorzystanym komponentem jest SlimDX - wersja niestety nie rozwijana dalej - ale niezwykle wydajnej biblioteki do zabawy z DirectX
Majac te dwie rzeczy reszta to zwykla matematyka. Obliczamy kanaly ( pewne opcje nie sa widoczne w tej wersji ) nastepnie odstepy od rogow / odstepy od krawedzi / minimalne wartosci kolorow i co 20 ms probkojemy ekran a nastepnie tak gotowe wysylamy do sterownika.
Dołączył(a): 16 mar 2014 Posty: 745 Lokalizacja: Warszawa
Pomógł: 32
No no no, na prawdę super projekt Gratuluję ambitnego pomysłu i super wykonania. Po raz pierwsze widziałem ten efekt na telewizorach Philipsa i tutaj efekt jest identyczny. Rewelacja.
Dlatego zachecam kazdego do wziecia swojego ATB i magic LED i odpalenia ulubionego filmu Od momentu jak zainstalowalem Ambi w domu - ogladanie filmow bez podswietlenia jest smutne
Dołączył(a): 01 cze 2013 Posty: 137 Lokalizacja: Kraków
Pomógł: 0
Kurczę, niestety taki urok ledów że nie chcą ładnie wychodzić na filmach . Za to już zdjęciom z pewnością bliżej do rzeczywistości, a tam to wygląda kozacko! Szczere gratulacje dla autora, efekt musi być piorunujący .
A tak btw. to te 150 ledów nie świeci Ci tam za mocno? W ogóle jak oceniasz różnicę w płynności kolorów przy 150 kanałach, a przy jakiejś mniejszej ilości, np. 30?
Jeszcze raz szacuneczek, uwielbiam projekty z ciekawie zastosowanymi RGBami ^^.
Tzn wydaje mi sie , ze jest wplyw na ilosc led wobec jakosc wyswietlanego koloru. Przy tej ogromnej ilosci zdarza sie , ze kolory mi sie za bardzooooo zlewaja
Dlatego w przyszlym tygodniu bede testowal na roznej wielkosci kanalach. Po prostu wezme kilka luznych WS2812b i zrobie moze np 10 kanalow na gorze
Wtedy bede mogl wrzucic np porownanie jednego filmiku przy roznej ilosci kanalow
Dołączył(a): 01 cze 2013 Posty: 137 Lokalizacja: Kraków
Pomógł: 0
No właśnie o to mi chodziło RafPe, zastanawiałem się czy między 30 a 150 kanałami jest duża różnica w płynności kolorów. Szczególnie że magic ledy też nie są bardzo tanie . Jak będziesz miał chwilę to bardzo bym Ci był wdzięczny za opublikowanie testu, bo efekt jest świetny i jeśli przy niewielu kanałach wyglądałoby to przyzwoicie to może też bym sobie coś takiego zamontował .
Tzn nawet bez testowania powiem Ci , zeinwestycja w podstawe (~ 10 kanalow gora + 2x 2 kanaly bok + 2 kanaly dol ) to jest inwestycja ktorej efekt ucieszy oko!
Ale jak tylko znajde chwile w sile lutowania pojedynczych ledow to wrzuce na forum jako porownianie!
Natomiast w miedzyczasie dorzucam fotki ze 150 kanalow i southpark'a .... Natomiast moge Wam zdradzic , ze aplikacja bedzie odswiezana i nastapi dodanie:
Gratuluję tobie kolego pomysłu i tak wielkiej wiedzy jaką posiadasz w programowaniu na PC . Naprawdę podziwiam ciebie:P Ja próbuje pisać jakieś apki lecz jeszcze nie bardzo mi to idzie trochę inny język stosuję .
Mógłbyś coś więcej napisać o tym jak dużą część obrazu z ekranu pobierasz do swojego programu by potem zapalać diody? Wydaje mi się że raczej nie jest to 1 czy kilka skrajnych pixeli i czy potem se to jakoś uśredniasz i dzielisz na ilość diód?
Gratuluję chęci i zapału w tworzeniu tego projektu.
Gratuluję tobie kolego pomysłu i tak wielkiej wiedzy jaką posiadasz w programowaniu na PC . Naprawdę podziwiam ciebie:P Ja próbuje pisać jakieś apki lecz jeszcze nie bardzo mi to idzie trochę inny język stosuję .
Projekt oceniam na 7 w skali od 1-6
Dzieki bardzo za slowa wsparcia Ja caly czas walcze z nauka elektroniki bo mnie tak pochlonela ! no i umnie jest ciezko ze zrozumieniem jak to wszystko dziala hahahahaha
DeDua napisał(a):
Mógłbyś coś więcej napisać o tym jak dużą część obrazu z ekranu pobierasz do swojego programu by potem zapalać diody? Wydaje mi się że raczej nie jest to 1 czy kilka skrajnych pixeli i czy potem se to jakoś uśredniasz i dzielisz na ilość diód?
Gratuluję chęci i zapału w tworzeniu tego projektu.
Oczywiscie , ze moge. Na chwile obecna opcja jest niedostepna ale w nastepnej odslonie apki beda dostepne wszystkie zaawansowane ustrawienia. Trudno to tak wszystko od reki opisac
wymiary poszczegolnych stref sa obliczane na podstawie wymiarow ekranu + danych podanych przez uzytkownika jak kanaly (tzn ile chce ich miec ) + jak bardzo chcemy miec szerokie kanaly + jak bardzo chcemy odejsc od krawedzi
ilosc pixeli z ktorych bedziemy pobierac wartosci i usredniac dla strefy
Czy chcemy uzywac funkcji ktora wzmocni najilniejszy kolor w strefie
A ja bym nie pogardził kodem źródłowym aplikacji na PC. Jestem zainteresowany przerobieniem na X86.
Hej!
Niestety na razie kodu zrodlowego nie bede udostepniac. To byla trudna i bardzo wzmozona matematycznie droga. Nagtomiast chetnie sluze poradami gdzie szukac informacji
Wersja X86 powinna pojawic sie w weekend. Musze skompilowac program z innymi bibliotekami
Niestety na razie kodu zrodlowego nie bede udostepniac.
Panowie - ja nieśmiało powiem, i nie miejcie mi tego za złe, że Rafał wykonał tu jeśli chodzi o program na PC TAKI KAWAŁ SOLIDNEJ ROBOTY, że wręcz powinien tę apkę na PC w jakiś symboliczny sposób wycenić i sprzedawać. Sprawdźcie jak to działa - oceńcie trud i wkład pracy, także przygotowanie kodu na AVR - wręcz całego projektu pięknie przygotowanego do wykonania od razu przez każdego nawet amatora - że ja jestem w szoku. A ponieważ sam siedzę sporo przy pisaniu softu na PC to wiem ile to czasu wymaga. No ale kto z nas nie siedzi przy kodowaniu z drugiej strony
Wiec operacje sa wykonywane na zasadzie screen obrazu uzywajac bibliotek slimDX - dzieki temu wydajnosc jest wrecz porazajaca ! Nastepnie nastepuje analiza pixeli w pozycjach ustalonych podczas tworzenia siatki stref (kanalow)
Na koniec wartosci sa usredniane I obliczane przy pomocy wzorow zamieszczonych wyzej.
Na sam koniec - bam - binarna komunikacja
Mi udalo sie uzywajac 100 klatek na sek - Wiec niezauwazalne opoznienia
Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości
Nie możesz rozpoczynać nowych wątków Nie możesz odpowiadać w wątkach Nie możesz edytować swoich postów Nie możesz usuwać swoich postów Nie możesz dodawać załączników