Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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 distincteCOM4 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 PIRecranul 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-writeencrypted-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 =====
  
pm/prj2025/fstancu/rares.stoica2609.1748181411.txt.gz · Last modified: 2025/05/25 16:56 by rares.stoica2609
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