This shows you the differences between two versions of the page.
|
pm:prj2024:fstancu:mircea.popa2709 [2024/05/05 18:56] mircea.popa2709 |
pm:prj2024:fstancu:mircea.popa2709 [2024/05/27 11:25] (current) mircea.popa2709 |
||
|---|---|---|---|
| Line 6: | Line 6: | ||
| ===== Introducere ===== | ===== Introducere ===== | ||
| - | <note tip> | + | |
| Prezentarea proiectului: | Prezentarea proiectului: | ||
| - | * Bandă LED smart | + | * **Bandă LED smart** |
| - | * Scopul: Creșterea imersiunii în timpul vizionării de filme sau jocuri, reducerea obosealii oculare și crearea unui ambient plăcut. | + | * Scopul: Creșterea imersiunii în timpul vizionării de filme sau jocuri, **reducerea oboselii** oculare și crearea unui ambient plăcut. |
| - | * Ideea de la care ați pornit: Îmbunătățirea experienței utilizatorilor în fața ecranelor. | + | * Ideea de la care a pornit: Îmbunătățirea experienței utilizatorilor în fața ecranelor. |
| - | * Utilitate: Util atât pentru experiența personală cât și ca studiu în eficiența sistemelor de iluminare dinamică. | + | <note tip> |
| + | Această Bandă LED este concepută să fie plasată **în spatele monitorului** îndreptat spre un perete de culoare deschisă | ||
| </note> | </note> | ||
| - | ===== Descriere generală ===== | ||
| - | <note tip> | + | <note important>**Scurt demo:** https://www.youtube.com/watch?v=-Ufe48yoyLg</note> |
| - | Schema bloc a proiectului: | + | |
| - | * Module Hardware: Arduino Nano, banda LED WS2812, cabluri de conectare. | + | |
| - | * Module Software: Aplicație GUI în Windows pentru controlul culorilor și efectelor de iluminare. | + | |
| - | * Interacțiunea între module: Arduino primește semnale de la aplicația GUI prin USB, controlând banda LED. | + | |
| - | </note> | + | |
| - | ===== Hardware Design ===== | ||
| - | <note tip> | + | {{https://ocw.cs.pub.ro/courses/_media/pm/prj2024/fstancu/whatsapp_image_2024-05-27_at_10.13.27_7e7a2770.jpg?400}} |
| - | * Listă de piese: Arduino Nano, banda LED WS2812, cablu USB Mini USB. | + | {{https://ocw.cs.pub.ro/courses/_media/pm/prj2024/fstancu/whatsapp_image_2024-05-27_at_10.13.27_a404598c.jpg?400}} |
| - | * Scheme electrice: Schema de conectare a benzii LED la Arduino. | + | |
| - | * Diagrame de semnal: Semnale digitale între Arduino și banda LED. | + | <note> |
| - | * Rezultatele simulării: Teste de funcționare pentru ajustarea culorilor și efectelor. | + | În modul de iluminare //immersive//, culoarea luminii ambientale este **corelată cu conținutul de pe ecran** |
| </note> | </note> | ||
| + | |||
| + | ===== Descriere generală ===== | ||
| + | Schema bloc a proiectului: | ||
| + | |||
| {{https://ocw.cs.pub.ro/courses/_media/pm/prj2024/fstancu/mp_diagram.png}} | {{https://ocw.cs.pub.ro/courses/_media/pm/prj2024/fstancu/mp_diagram.png}} | ||
| - | ===== Software Design ===== | + | * Module Hardware: **Arduino UNO, banda LED WS2812 (44 led-uri), cabluri de conectare**. |
| + | * Module Software: **Aplicație GUI în Windows** pentru controlul culorilor și efectelor de iluminare. | ||
| + | * Interacțiunea între module: Arduino primește semnale de la aplicația GUI prin USB, controlând banda LED. | ||
| <note tip> | <note tip> | ||
| - | * Mediu de dezvoltare: Arduino IDE | + | Dispozitivul cu Windows și plăcuța de dezvoltare Arduino comunică (unidirecțional) folosind un format de date specific descris mai jos |
| - | * Interfață grafică Python | + | |
| - | * Algoritmi și structuri: Calculul culorilor în funcție de informațiile primite de la GUI. | + | |
| </note> | </note> | ||
| - | ===== Rezultate Obținute ===== | + | ===== Hardware Design ===== |
| + | Schema hardware: | ||
| + | |||
| + | {{https://ocw.cs.pub.ro/courses/_media/pm/prj2024/fstancu/scheme-it-export-new-project-2024-05-17-11-05.png?400}} | ||
| + | {{https://ocw.cs.pub.ro/courses/_media/pm/prj2024/fstancu/whatsapp_image_2024-05-27_at_10.13.25_01796a10.jpg?400}} | ||
| + | |||
| + | Listă de piese: | ||
| + | * Arduino UNO | ||
| + | * bandă LED WS2812 | ||
| + | * cablu USB | ||
| + | * fire de curent | ||
| <note tip> | <note tip> | ||
| - | Descrierea rezultatelor testărilor și efectele îmbunătățirii vizuale și reducerea oboselei oculare. | + | Au fost utilizate lipituri pentru legarea sursei la banda led. Firele de GND și semnal digital sunt legate direct pe plăcuța de dezvoltare |
| </note> | </note> | ||
| - | ===== Concluzii ===== | ||
| - | ===== Download ===== | + | ===== Software Design ===== |
| + | Proiectul se împarte în **două module software**: | ||
| + | * Codul pentru controlul plăcuței Arduino | ||
| + | * Aplicația cu interfață grafică pentru Windows | ||
| - | <note warning> | + | <note important>Link GitHub: https://github.com/mircea-popa02/smart-lights</note> |
| - | Arhivă cu fișierele proiectului: surse, scheme, documentație. Încărcare pe wiki sub namespace-ul :pm:prj20??:c?:nume_student. | + | |
| - | </note> | + | |
| + | ==== Arduino ==== | ||
| + | Codul utilizează biblioteca **FastLED** pentru controlul semnalului. | ||
| - | ===== Jurnal ===== | + | Inițializare: Se configurează LED-urile și începe comunicarea serială //(default pe portul 9600)// |
| + | Citire și interpretare intrări seriale: Citește date de la portul serial, interpretează comanda primită și actualizează modul de animație și parametrii LED-urilor //(culori și întârzieri)//. | ||
| + | Control LED-uri: În funcție de modul selectat //(RAINBOW, PULSE, SOLID, IMMERSIVE)//, actualizează LED-urile corespunzător: | ||
| + | * **RAINBOW**: Afișează un efect curcubeu. | ||
| + | * **PULSE**: Afișează pulsarea culorii specificate alternând luminozitatea | ||
| + | * **SOLID**: Afișează o culoare solidă fără alte animații sau efecete | ||
| + | * **IMMERSIVE**: Tranziție lină între culori. | ||
| + | <note> | ||
| + | Modul **IMMERSIVE** se bazează pe un flux constant de date prin portul serial provenit de la computer | ||
| + | </note> | ||
| + | |||
| + | Codul folosește delay-uri pentru a temporiza actualizarea LED-urilor conform parametrilor primiți. | ||
| <note tip> | <note tip> | ||
| - | Documentare progres, modificări și testări. | + | **Capitolele din laborator** înglobate sunt: |
| + | * **GPIO** - Codul folosește pinul digital 6 pentru a controla LED-urile prin biblioteca FastLED | ||
| + | * **UART** - Comunicarea serială este realizată cu ''Serial.begin(9600)'' în ''setup()'' și ''Serial.readStringUntil('\n')'' în ''loop()'' | ||
| + | * **Timere** - Funcția delay(animationDelay) folosește timerul intern al microcontrolerului pentru a introduce întârzieri între actualizările LED-urilor. | ||
| + | * **PWM** - Deși nu este folosit explicit PWM în codul prezentat pentru controlul direct al intensității LED-urilor, conceptul de ajustare a luminozității LED-urilor prin modificarea valorilor RGB sau a intensității (ex. brightness în modul PULSE) este similar cu controlul prin PWM. | ||
| </note> | </note> | ||
| - | ===== Bibliografie/Resurse ===== | + | ==== GUI ==== |
| + | Interfață grafică Python //(biblioteca Tkinter)// | ||
| + | |||
| + | Funcția ''get_dominant_screen_color'' preia o captură de ecran, calculează culoarea dominantă și o ajustează pentru a avea saturație și valoare maxime. | ||
| + | |||
| + | Trimiterea comenzilor către Arduino: Funcțiile ''send_rgb'', ''send_immersive'', ''send_rainbow'', și ''send_pulse'' trimit diferite comenzi către Arduino pentru a schimba modul de iluminare și parametrii acestuia (culoare și viteză). | ||
| <note> | <note> | ||
| - | Documente, datasheet-uri, resurse Internet folosite. | + | Funcția ''periodic_update'' verifică periodic dacă modul **IMMERSIVE** este activ și actualizează automat culoarea bazată pe culoarea dominantă a ecranului. |
| </note> | </note> | ||
| - | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | + | **Formatul de date trimis** de aplicația GUI către Arduino prin portul serial urmează o structură specifică, care constă dintr-o serie de valori separate prin virgule. Această structură permite Arduino-ului să interpreteze corect comanda și să ajusteze modul de iluminare și parametrii corespunzători. |
| + | |||
| + | Formatul general al datelor trimise este: | ||
| + | ''<mode>,<speed>,<red>,<green>,<blue>'' | ||
| + | |||
| + | |||
| + | Interfața grafică | ||
| + | |||
| + | {{https://ocw.cs.pub.ro/courses/_media/pm/prj2024/fstancu/333995159-07addfa4-28dc-4bac-a9dc-6b6ac8684be3.png?400}} | ||
| + | |||
| + | Culoarea selectată se actualizează dinamic când slider-urile RGB sunt modificate (valori de la 0 la 255). | ||
| + | |||
| + | Apăsarea unuia dintre cele 4 butoane determină schimbarea modului de iluminare și trimiterea noilor parametri prin serial. | ||
| + | |||