This shows you the differences between two versions of the page.
|
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 -> TX1, 18 |
| - | + | * TXD -> RX1, 19 | |
| - | 4. Inel 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_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 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 ===== | ||