Ambilight

Introducere

Proiectul consta in iluminarea peretelui sau a suprafetei din spatele unui ecran, inconjurandu-l pe acesta de o lumina slaba ce imita culorile ce se afla in momentul respectiv pe ecran. Scopul folosirii unei astfel de lumini este de a diminua luminozitatea ecranului in contrast cu un fundal foarte intunecat (ex. pe timp de noapte). Acest lucru reduce senzatia de oboseala si creste atat intensitatea cat si contrastul vizual al ecranului. Aceasta tehnologie a devenit populara odata cu aparitia pe piata a televizoarelor Philips Ambilight, de unde m-am si inspirat pentru proiectul meu. https://www.youtube.com/watch?v=PccI_pUTZXs

Descriere generală

In spatele ecranului se va atasa o banda de LED-uri RGB ce vor fi comandate cu ajutorul microcontrollerului. Acesta va primi date de la PC prin USART legat de culorile de pe ecran de la momentul respectiv de timp si va transmite fiecarui LED prin USART culoarea obtinuta.

Hardware Design

Piese Model Cantitate
Placa de baza PM2019 1
Microcontroller ATMega 324 1
Banda LED WSB2812 36
Cabluri mama-tata - 3
Cablu USB to USART - 1

Schema electrica

Software Design

Codul se poate descarca din Code Repository.

Aplicatia are doua module separate, dar codependente: partea de ATMega scris in C si partea de client Desktop scris in Python.

In implementarea celor doua parti am folosit:

Algoritmul din spatele programului se bazeaza pe efectuarea unei capturi de ecran la fiecare secunda si prelucrarea datelor din imaginea obtinuta. Imaginea este impartita in 4 zone principale corespunzatoare fiecarui segment de banda de leduri si anume:

  • segmentul de jos are jumatatea inferioara a imaginii delimitata de axa orizontala
  • segmentul de sus are jumatatea superioara a imaginii delimitata de axa orizontala
  • segmentul din dreapta are jumatatea dreapta a imaginii delimitata de axa verticala
  • segmentul din stanga are jumatatea stanga a imaginii delimitata de axa verticala

Pentru segmentele de sus si jos corespund cate 11 leduri iar pe segmentele laterale corespund 7 leduri.
Fiecare zona corespondenta este ulterior impartita in zone mai mici corespondente fiecarui led urmand sa se faca media aritmetica a pixelilor din zona respectiva iar culoarea obtinuta sa ii revina ledului corespondent la iteratia curenta.

Rezultate Obtinute

Concluzii

  • Toate functionalitatile gandite initial au fost implementate.
  • Proiectul a fost interesant, desi dificil de realizat.
  • Pot spune ca am invatat multe atat din punct de vedere hardware cat si software, partea de hard fiind cea mai dificila din punct de vedere personal.

Jurnal

22.04.2019 - Tema proiectului, lista de piese și schema bloc (Milestone 1)
05.05.2019 - Schema electrică (Milestone 3)
17.05.2019 - Începere montare Hardware a circuitului
18.05.2019 - Implementare Software și verificare separată pe componente
19.05.2019 - Montare mare parte din componentele Hardware
22.05.2019 - Finalizare parte Hardware și Software
23.05.2019 - Update listă de piese, organizare cod si pagina wiki

Bibliografie/Resurse

Biblioteca banda RGB: https://github.com/pololu/pololu-led-strip-avr
Modul Python pentru realizarea unei capturi de ecran:https://pypi.org/project/pyscreenshot/
Modul Python pentru folosirea serialei: https://pypi.org/project/pyserial/

pm/prj2019/ctranca/ambilight.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0