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:49]
rares.stoica2609
pm:prj2025:fstancu:rares.stoica2609 [2025/05/30 00:26] (current)
rares.stoica2609 [Download]
Line 70: Line 70:
       * GND → linia neagră de GND       * GND → linia neagră de GND
  
-3. Senzor de mișcare PIR (MH-SR602) +3. **Senzor de mișcare PIR (MH-SR602)** 
-Interfață: Digitală+   Legături: 
 +      * OUT → pinul digital D29 de pe Arduino Mega 
 +      * VCC → linia roșie de alimentare (+5V) 
 +      * GND → linia neagră de GND
  
-Pinout:+4. **Inel LED Neopixel (WS2812)** 
 +   ​Legături: 
 +      * DIN → pinul D25 pe Arduino Mega 
 +      * VCC → linia roșie de alimentare (+5V) 
 +      * GND → linia neagră de GND
  
-VCC → linia roșie ​de alimentare (+5V)+5. **Buton tactil** 
 +   ​Legături:​ 
 +      * Celălalt capăt ​→ pinul D27 pe Arduino Mega + rezistență pull-up software 
 +      * GND → Un capăt, ​linia neagră ​de GND 
 +      * Tensiune: Fără ​alimentare ​directă, e comutator pasiv (semnal 0/1)
  
-GND → GND+6. **Modul RTC DS3231** 
 +   ​Legături:​ 
 +      * SDA → pinul SDA (pin 20 pe Arduino Mega) 
 +      * SCL → pinul SCL (pin 21 pe Arduino Mega) 
 +      * VCC → linia roșie de alimentare (+5V) 
 +      * GND → linia neagră de GND
  
-OUT → pinul digital D29 de pe Arduino Mega +7**Modul ttl CH340G** 
- +   Legături: 
-Tensiune de alimentare: 5V +      * RXD -> TX118 
- +      * TXD -> RX119 
-4Inel LED Neopixel (WS2812) +      ​* ​VCC → linia roșie de alimentare (+5V) 
-Interfață: Digitalăun singur fir de date +      ​* ​GND → linia neagră ​de GND
- +
-Pinout: +
- +
-VCC → linia roșie (+5V) +
- +
-GND → GND +
- +
-DIN → pinul D25 pe Arduino Mega +
- +
-Tensiune de alimentare: 5V +
- +
- +
-5. Buton tactil +
-Interfață:​ Digitală +
- +
-Pinout: +
- +
-Un capăt → GND +
- +
-Celălalt capăt → pinul D27 pe Arduino Mega + rezistență pull-up software sau externă +
- +
-Tensiune: Fără alimentare directăe comutator pasiv (semnal 0/1) +
- +
-6. Modul RTC DS3231 +
- +
-Interfata I2C +
- +
-VCC → linia roșie de alimentare (+5V) +
- +
-GND → linia GND +
- +
-SCL → pinul SCL (pin 21 pe Arduino Mega) +
- +
-SDA → pinul SDA (pin 20 pe Arduino Mega) +
- +
-7. Modul ttl CH340G +
- +
-Interfata TTL seriala +
- +
-VCC → linia roșie ​de alimentare (+5V) +
- +
-GND → linia GND +
- +
-RXD -> TX1, 18 +
- +
-TXD -> RX1, 19+
  
  
Line 148: 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_SSD1306folosite ​pentru ​controlul display-ului OLED 128x64 I2CPermit desenarea ​de forme graficetext și animațiiutilizate în tranziția dintre moduri.+2. **Elementul de noutate al proiectului:​** 
 +      * Utilizarea simultană a două canale seriale distincteCOM4 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 ;)) uniccu animație grafică pe OLED și efecte LED calde (rozrosu, 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 Megaseparând comanda modurilor ​(pe COM4de 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 + NumPyfolosite ​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 distincteCOM4 pentru ​comenziCOM5 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 PIRecranul 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; gyroscopepicture-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 246: 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.1748180994.txt.gz · Last modified: 2025/05/25 16:49 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