Ceas de camera - Stoica Rares-Nicolae

Introducere

Proiectul consta intr-un ceas care afiseaza ora si temperatura din camera, dar vine si cu un element decorativ: - ceasul se pune pe monitor prin intermediul unui suport si se conecteaza la PC - are o matrice rgb in spate care da efectul de lumina ambientala - prezinta 3 moduri de iluminare:

  • in functie de temperatura, schimba nuanta in functie de temperatura citita
  • sync cu pc-ul, schimba luminile in functie de culorile predominante de pe ecran
  • modul focus, opreste luminile RGB si activeaza un senzor de miscare. Ceasul se activeaza la o miscare a mainii deasupra acestuia, afisand ora si temperatura pentru 10 secunde.

- fiecare mod se va schimba pe baza unei aplicatii pe PC-ul la care este conectat

Acest proiect este folositor pentru decorarea setup-ului de birou cu un element practic si la indemana.

Descriere generală

Placa Arduino Mega 2560 actioneaza ca unitate de control principala a sistemului. Aceasta gestioneaza toate componentele periferice: senzorul de temperatura si umiditate (DHT22), senzorul de miscare (PIR), afisajul OLED I2C, inelul RGB WS2812 si butonul fizic de interactiune. De asemenea, comunica cu aplicatia de pe PC prin interfata seriala USB, permitand selectarea modurilor de functionare ale iluminarii ambientale.

Comunicatie si interfețe Afisajul OLED si senzorul de temperatura DHT22 sunt utilizati pentru a afisa ora si temperatura camerei. OLED-ul este controlat prin protocolul I2C, utilizand pinii dedicati SDA (pin 20) si SCL (pin 21) de pe Arduino Mega.

Modulul RTC DS3231 este utilizat pentru afisarea orei in timp real, folosind tot protocolul I2C.

Senzorul de temperatura DHT22 comunica printr-o linie digitala simpla (1-wire proprietar), conectata la un pin digital al placii Arduino.

Senzorul PIR (MH-SR602) detecteaza miscarea mainii deasupra ceasului si este conectat la un pin digital. Acesta trimite un semnal HIGH atunci cand detecteaza miscare, declansand afisarea informatiei pe ecran pentru o durata de timp.

Inelul de LED-uri RGB WS2812B este conectat la un singur pin digital si alimentat la 5V. Comunicarea se face printr-un protocol serial. Deoarece Arduino Mega opereaza la 5V logic, nu este necesara potrivirea de niveluri pentru semnalul de control.

Butonul fizic este conectat la un pin digital si permite interactiunea manuala directa cu ceasul pentru oprirea acestuia. Este utilizat cu o rezistenta de pull-up, pentru a asigura stabilitatea semnalului.

Moduri de functionare si comportament al sistemului: Sistemul are trei moduri de iluminare ambientala, care sunt comutate printr-o aplicatie de PC conectata la Arduino prin USB:

Mod temperatura: culoarea LED-urilor RGB se schimba in functie de temperatura camerei.

Mod sincronizare cu PC-ul: LED-urile se sincronizeaza cu culorile predominante de pe ecranul monitorului, pentru o experienta vizuala coerenta.

Mod focus: LED-urile sunt oprite complet pentru a evita distragerile. Senzorul PIR este activ si declanseaza afisarea orei si temperaturii pe OLED pentru 10 secunde la detectia miscarii.

Alimentare si integrare Ceasul este montat fizic pe monitor printr-un suport si este alimentat prin conexiunea USB la PC. Aceasta sursa ofera atat alimentare la 5V, cat si comunicatie seriala cu aplicatia de control.

Functionalitate generala La pornire, Arduino Mega initializeaza toti senzorii si display-ul OLED. In functie de modul activ, sistemul controleaza comportamentul inelului RGB si al afisajului OLED. Datele privind temperatura si ora sunt actualizate in timp real si afisate in format vizual clar. Aplicatia de PC trimite comenzi catre Arduino pentru a schimba modul de iluminare sau pentru a activa manual functii specifice.

Sistemul ofera atat un instrument util, cat si un element decorativ inteligent si adaptabil pentru birou sau spatii de lucru.

Hardware Design

pinii SDA si SCL sunt folositi in paralel de Display si Modulul RTC

1. DHT22

 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

2. Display OLED 128×64 (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

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

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

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)

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

7. Modul ttl CH340G

 Legături:
    * RXD -> TX1, 18
    * TXD -> RX1, 19
    * VCC → linia roșie de alimentare (+5V)
    * GND → linia neagră de GND

Software Design

!!!!!!!Am pus la sectiunea de DOWNLOAD fisierele

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 128×64 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

Demo

Concluzii

Download

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2025/fstancu/rares.stoica2609.txt · Last modified: 2025/05/30 00:26 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