This shows you the differences between two versions of the page.
pm:prj2025:fstancu:rares.stoica2609 [2025/05/25 16:54] rares.stoica2609 [Hardware Design] |
pm:prj2025:fstancu:rares.stoica2609 [2025/05/30 00:26] (current) rares.stoica2609 [Download] |
||
---|---|---|---|
Line 118: | Line 118: | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | 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. | + | !!!!!!!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. | + | 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. | ||
+ | * 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 LE | ||
- | 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. | + | 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. | ||
- | serial (PySerial): pentru comunicarea între aplicația Python și Arduino Mega, separând comanda modurilor (pe COM4) de datele RGB (pe COM5). | + | 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. | ||
- | PyQt5: pentru interfața grafică a aplicației pe PC. Permite o interfață prietenoasă și modernă, cu butoane pentru comutarea modurilor. | + | 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. | ||
- | Pillow + NumPy: folosite pentru capturarea ecranului și analiza pixelilor in mod ambilight, oferind culori dinamice pentru fiecare LED. | + | 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. | ||
+ | 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ă. | ||
- | 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. | + | 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** | ||
- | 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. | + | <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> |
- | + | ||
- | 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. | + | |
- | + | ||
- | + | ||
- | + | ||
- | 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, 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 216: | 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 ===== | ||