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 15:58]
rares.stoica2609 [Hardware Design]
pm:prj2025:fstancu:rares.stoica2609 [2025/05/30 00:26] (current)
rares.stoica2609 [Download]
Line 53: Line 53:
  
 {{:​pm:​prj2025:​fstancu:​pm_scheme.png?​750|}} {{:​pm:​prj2025:​fstancu:​pm_scheme.png?​750|}}
 +
  
 pinii SDA si SCL sunt folositi in paralel de Display si Modulul RTC pinii SDA si SCL sunt folositi in paralel de Display si Modulul RTC
  
-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
  
-Pinout:+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
  
-VCC → linia roșie de alimentare (+5V)+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
  
-GND → linia neagră de GND+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
  
-DATA → conectat la pinul digital D23 de pe Arduino Mega+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)
  
-Tensiune ​de alimentare5V, direct ​de pe arduino+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
  
-2Display OLED 128x64 (I2C, SSD1306) +7**Modul ttl CH340G** 
-Interfață: I2C +   Legături
- +      * RXD -> TX118 
-Pinout: +      * TXD -> RX119 
- +      ​* ​VCC → linia roșie de alimentare (+5V) 
-VCC → linia roșie de alimentare (+5V) +      ​* ​GND → linia neagră ​de GND
- +
-GND → linia 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 163: Line 119:
  
  
-<note tip> +!!!!!!!Am pus la sectiunea ​de DOWNLOAD fisierele
-Descrierea codului aplicaţiei (firmware):​ +
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) +
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) +
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  * (etapa 3) surse şi funcţii implementate +
-</​note>​+
  
 +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
 +
 +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.
 +
 +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.
 +
 +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.
 +
 +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ă.
 +
 +
 +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 ===== ===== Rezultate Obţinute =====
 +**Demo**
 +
 +<​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>​
  
-<note tip> 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. 
-</​note>​ 
  
 ===== Concluzii ===== ===== Concluzii =====
Line 181: 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.1748177916.txt.gz · Last modified: 2025/05/25 15:58 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