This shows you the differences between two versions of the page.
pm:prj2025:fstancu:rares.stoica2609 [2025/05/25 16:46] rares.stoica2609 [Hardware Design] |
pm:prj2025:fstancu:rares.stoica2609 [2025/05/30 00:26] (current) rares.stoica2609 [Download] |
||
---|---|---|---|
Line 58: | Line 58: | ||
1. **DHT22** | 1. **DHT22** | ||
- | * Interfață: Digitală | + | Legături: |
+ | * DATA → conectat la pinul digital D23 de pe Arduino Mega | ||
+ | * VCC (roșu) → linia roșie de alimentare (+5V) | ||
+ | * GND → linia neagră de GND | ||
- | * VCC → linia roșie de alimentare (+5V) | + | 2. **Display OLED 128x64 (I2C, SSD1306)** |
+ | 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 | ||
- | * GND → linia neagră de GND | + | 3. **Senzor de mișcare PIR (MH-SR602)** |
+ | Legături: | ||
+ | * OUT → pinul digital D29 de pe Arduino Mega | ||
+ | * VCC → linia roșie de alimentare (+5V) | ||
+ | * GND → linia neagră de GND | ||
- | * DATA → conectat la pinul digital D23 de pe Arduino Mega | + | 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 | ||
- | * Tensiune de alimentare: 5V, direct de pe arduino | + | 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) | ||
- | 2. Display OLED 128x64 (I2C, SSD1306) | + | 6. **Modul RTC DS3231** |
- | Interfață: I2C | + | 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 | ||
- | Pinout: | + | 7. **Modul ttl CH340G** |
- | + | Legături: | |
- | VCC → linia roșie de alimentare (+5V) | + | * RXD -> TX1, 18 |
- | + | * TXD -> RX1, 19 | |
- | GND → linia GND | + | * VCC → linia roșie de alimentare (+5V) |
- | + | * GND → linia neagră de GND | |
- | SCL → pinul SCL (pin 21 pe Arduino Mega) | + | |
- | + | ||
- | SDA → pinul SDA (pin 20 pe Arduino Mega) | + | |
- | + | ||
- | Tensiune de alimentare: 5V | + | |
- | + | ||
- | 3. Senzor de mișcare PIR (MH-SR602) | + | |
- | Interfață: Digitală | + | |
- | + | ||
- | Pinout: | + | |
- | + | ||
- | VCC → linia roșie de alimentare (+5V) | + | |
- | + | ||
- | GND → GND | + | |
- | + | ||
- | OUT → pinul digital D29 de pe Arduino Mega | + | |
- | + | ||
- | Tensiune de alimentare: 5V | + | |
- | + | ||
- | 4. Inel LED Neopixel (WS2812) | + | |
- | Interfață: Digitală, un singur fir de date | + | |
- | + | ||
- | 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 161: | 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 259: | 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 ===== | ||