This shows you the differences between two versions of the page.
|
pm:prj2025:fstancu:rares.stoica2609 [2025/05/25 16:56] rares.stoica2609 [Software Design] |
pm:prj2025:fstancu:rares.stoica2609 [2025/05/30 00:26] (current) rares.stoica2609 [Download] |
||
|---|---|---|---|
| Line 119: | Line 119: | ||
| - | + | !!!!!!!Am pus la sectiunea de DOWNLOAD fisierele | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | DHT: biblioteca oficială Adafruit pentru senzorii DHT22. Permite citirea stabilă a temperaturii și umidității, necesară pentru modulul de afișare a temperaturii. | + | |
| - | + | ||
| - | Adafruit_GFX + Adafruit_SSD1306: folosite pentru controlul display-ului OLED 128x64 I2C. Permit desenarea de forme grafice, text și animații, utilizate în tranziția dintre moduri. | + | |
| - | + | ||
| - | serial (PySerial): pentru comunicarea între aplicația Python și Arduino Mega, separând comanda modurilor (pe COM4) de datele RGB (pe COM5). | + | |
| - | + | ||
| - | PyQt5: pentru interfața grafică a aplicației pe PC. Permite o interfață prietenoasă și modernă, cu butoane pentru comutarea modurilor. | + | |
| - | + | ||
| - | Pillow + NumPy: folosite pentru capturarea ecranului și analiza pixelilor in mod ambilight, oferind culori dinamice pentru fiecare LED. | + | |
| 1. **Motivarea alegerii bibliotecilor folosite:** | 1. **Motivarea alegerii bibliotecilor folosite:** | ||
| * FastLED: este biblioteca standard pentru controlul benzilor și inelelor WS2812. Oferă funcții rapide pentru controlul direct al culorilor LED-urilor, precum și conversie HSV-RGB, ideală pentru efectele termice și rainbow din proiect. | * FastLED: este biblioteca standard pentru controlul benzilor și inelelor WS2812. Oferă funcții rapide pentru controlul direct al culorilor LED-urilor, precum și conversie HSV-RGB, ideală pentru efectele termice și rainbow din proiect. | ||
| - | * VCC (roșu) → linia roșie de alimentare (+5V) | + | * DHT: biblioteca oficială Adafruit pentru senzorii DHT22. Permite citirea stabilă a temperaturii și umidității, necesară pentru modulul de afișare a temperaturii. |
| - | * GND → linia neagră de GND | + | * Adafruit_GFX + Adafruit_SSD1306: folosite pentru controlul display-ului OLED 128x64 I2C. Permit desenarea de forme grafice, text și animații, utilizate în tranziția dintre moduri. |
| + | * serial (PySerial): pentru comunicarea între aplicația Python și Arduino Mega, separând comanda modurilor (pe COM4) de datele RGB (pe COM5). | ||
| + | * PyQt5: pentru interfața grafică a aplicației pe PC. Permite o interfață prietenoasă și modernă, cu butoane pentru comutarea modurilor. | ||
| + | * Pillow + NumPy: folosite pentru capturarea ecranului și analiza pixelilor in mod ambilight, oferind culori dinamice pentru fiecare LE | ||
| + | 2. **Elementul de noutate al proiectului:** | ||
| + | * Utilizarea simultană a două canale seriale distincte: COM4 pentru comenzi, COM5 pentru date RGB, evitând conflictele de bandă sau blocajele de sincronizare. | ||
| + | * Modul FOCUSED bazat pe senzor PIR: ecranul OLED se aprinde doar când detectează mișcare, ideal pentru medii low-power sau scenarii de concentrare. | ||
| + | * Modul ;)) unic, cu animație grafică pe OLED și efecte LED calde (roz, rosu, portocaliu) sincronizate. | ||
| + | * Aplicație Python cu design personalizat și build final .exe portabil, realizat cu Inno Setup. | ||
| - | Elementul de noutate al proiectului: | + | 3. **Justificarea utilizării funcționalităților din laborator:** |
| + | * Lab 1 (USART): proiectul folosește ambele porturi seriale (USB și CH340) pentru comunicație bidirecțională, conform structurii laboratorului. | ||
| + | * Lab 2 (Timer și Întreruperi): folosirea millis() pentru actualizări temporizate (citire senzor/refresh LED) evită delay(), asigurând rulare fluidă. | ||
| + | * Lab 3 (PWM): modulul FastLED utilizează PWM hardware/software pentru generarea culorilor RGB precise. | ||
| + | * Lab 4 (ADC): senzorul DHT are un semnal digital, dar utilizarea sa este complet integrată într-un flux de actualizare periodică. | ||
| + | * Lab 6 (I2C): display-ul OLED si Modulul RTC funcționează pe magistrala I2C, gestionată simultan cu alți senzori. | ||
| - | Utilizarea simultană a două canale seriale distincte: COM4 pentru comenzi, COM5 pentru date RGB, evitând conflictele de bandă sau blocajele de sincronizare. | + | 4. **Structura proiectului și interacțiunea funcționalităților:** |
| + | * Arduino Mega primește comenzi pe Serial1 (COM4) de la aplicația Python (mod TEMP, AMBILIGHT, FOCUSED, ;)). | ||
| + | * Pe COM5 (USB), Arduino primește continuu date RGB doar când e în modul AMBILIGHT. | ||
| + | * Senzorul DHT este folosit în TEMP și FOCUSED pentru afișarea temperaturii. | ||
| + | * Senzorul PIR controlează aprinderea display-ului doar la mișcare (mod FOCUSED). | ||
| + | * Display-ul OLED afișează ora/temperatura în toate modurile, cu animație într-un mod special. | ||
| + | * Aplicația Python trimite comenzi și, când e cazul, date RGB capturate live de pe ecran. | ||
| - | Modul FOCUSED bazat pe senzor PIR: ecranul OLED se aprinde doar când detectează mișcare, ideal pentru medii low-power sau scenarii de concentrare. | + | 5. **Validarea funcționalităților a fost realizată prin:** |
| + | * observarea efectului LED vizual (culoare, animație, oprire). | ||
| + | * testarea comutării rapide între moduri. | ||
| + | * monitorizare Serial pentru debug și afșaj OLED pentru feedback. | ||
| - | Modul ;)) unic, cu animație grafică pe OLED și efecte LED calde (roz, rosu, portocaliu) sincronizate. | ||
| - | Aplicație Python cu design personalizat și build final .exe portabil, realizat cu Inno Setup. | + | 6. **Calibrarea elementelor de senzoristică:** |
| + | * DHT22 a fost plasat într-un mediu static pentru validarea temperaturii față de un termometru de cameră. | ||
| + | * PIR a fost reglat prin blocarea vederii lentilei in laterale, astfel va detecta doar miscarea de deasupra (detecție doar la mâna). | ||
| + | * valorile din senzor au fost afișate pe OLED și comparate cu mișcarea fizică efectivă. | ||
| + | 7. **Optimizări realizate:** | ||
| + | * Folosirea millis() în loc de delay() pentru actualizări precise. | ||
| + | * Separarea modurilor pe porturi diferite previne blocajele. | ||
| + | * Evitarea actualizării continue a OLED (doar la nevoie). | ||
| + | * Trimiterea de date RGB doar când este cazul (mod activ). | ||
| + | * Aplicație GUI minimală, eficientă, cu thread separat pentru RGB, evitând blocarea UI | Detectare automata porturi device!!! | ||
| + | * Compilare PyInstaller + Inno Setup pentru portabilitate totală. | ||
| + | ===== Rezultate Obţinute ===== | ||
| + | **Demo** | ||
| - | Justificarea utilizării funcționalităților din laborator: | + | <html><iframe width="560" height="315" src="https://www.youtube.com/embed/wAGGWOENbxo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></html> |
| - | + | ||
| - | Lab 1 (USART): proiectul folosește ambele porturi seriale (USB și CH340) pentru comunicație bidirecțională, conform structurii laboratorului. | + | |
| - | + | ||
| - | Lab 2 (Timer și Întreruperi): folosirea millis() pentru actualizări temporizate (citire senzor/refresh LED) evită delay(), asigurând rulare fluidă. | + | |
| - | + | ||
| - | Lab 3 (PWM): modulul FastLED utilizează PWM hardware/software pentru generarea culorilor RGB precise. | + | |
| - | + | ||
| - | Lab 4 (ADC): senzorul DHT are un semnal digital, dar utilizarea sa este complet integrată într-un flux de actualizare periodică. | + | |
| - | + | ||
| - | Lab 6 (I2C): display-ul OLED si Modulul RTC funcționează pe magistrala I2C, gestionată simultan cu alți senzori, conform exercițiilor de laborator. | + | |
| - | + | ||
| - | + | ||
| - | Structura proiectului și interacțiunea funcționalităților: | + | |
| - | + | ||
| - | + | ||
| - | Arduino Mega primește comenzi pe Serial1 (COM4) de la aplicația Python (mod TEMP, AMBILIGHT, FOCUSED, ;)). | + | |
| - | + | ||
| - | Pe COM5 (USB), Arduino primește continuu date RGB doar când e în modul AMBILIGHT. | + | |
| - | + | ||
| - | Senzorul DHT este folosit în TEMP și FOCUSED pentru afișarea temperaturii. | + | |
| - | + | ||
| - | Senzorul PIR controlează aprinderea display-ului doar la mișcare (mod FOCUSED). | + | |
| - | + | ||
| - | Display-ul OLED afișează ora/temperatura în toate modurile, cu animație într-un mod special. | + | |
| - | + | ||
| - | Aplicația Python trimite comenzi și, când e cazul, date RGB capturate live de pe ecran. | + | |
| - | + | ||
| - | + | ||
| - | Validarea funcționalităților a fost realizată prin: | + | |
| - | + | ||
| - | observarea efectului LED vizual (culoare, animație, oprire) | + | |
| - | + | ||
| - | testarea comutării rapide între moduri | + | |
| - | + | ||
| - | monitorizare Serial pentru debug și afșaj OLED pentru feedback | + | |
| - | + | ||
| - | + | ||
| - | Calibrarea elementelor de senzoristică: | + | |
| - | + | ||
| - | DHT22 a fost plasat într-un mediu static pentru validarea temperaturii față de un termometru de cameră | + | |
| - | + | ||
| - | PIR a fost reglat prin blocarea vederii lentilei in laterale, astfel va detecta doar miscarea de deasupra (detecție doar la mâna) | + | |
| - | + | ||
| - | valorile din senzor au fost afișate pe OLED și comparate cu mișcarea fizică efectivă. | + | |
| - | + | ||
| - | + | ||
| - | Optimizări realizate: | + | |
| - | + | ||
| - | Folosirea millis() în loc de delay() pentru actualizări precise | + | |
| - | + | ||
| - | Separarea modurilor pe porturi diferite previne blocajele | + | |
| - | + | ||
| - | Evitarea actualizării continue a OLED (doar la nevoie) | + | |
| - | + | ||
| - | Trimiterea de date RGB doar când este cazul (mod activ) | + | |
| - | + | ||
| - | Aplicație GUI minimală, eficientă, cu thread separat pentru RGB, evitând blocarea UI | + | |
| - | + | ||
| - | Compilare PyInstaller + Inno Setup pentru portabilitate totală | + | |
| - | ===== Rezultate Obţinute ===== | + | |
| - | <note tip> | ||
| - | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | ||
| - | </note> | ||
| ===== Concluzii ===== | ===== Concluzii ===== | ||
| Line 222: | Line 179: | ||
| ===== Download ===== | ===== Download ===== | ||
| - | <note warning> | ||
| - | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | ||
| - | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | + | {{:pm:prj2025:fstancu:proiect_arduino_.zip}} |
| - | </note> | + | |
| + | {{:pm:prj2025:fstancu:aplicatie_RGB_Control.zip}} | ||
| ===== Jurnal ===== | ===== Jurnal ===== | ||