Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2026:bianca.popa1106:maria_diana.vulpoi [2026/05/09 18:59]
maria_diana.vulpoi [Hardware Design]
pm:prj2026:bianca.popa1106:maria_diana.vulpoi [2026/05/25 13:45] (current)
maria_diana.vulpoi [Jurnal]
Line 33: Line 33:
 ===== Hardware Design ===== ===== Hardware Design =====
  
-==== 3.1. Lista de piese ====+==== Lista de piese ====
 ^ Componentă ^ Cantitate ^ Rol în sistem ^ ^ Componentă ^ Cantitate ^ Rol în sistem ^
 | Placă de dezvoltare Arduino Uno | 1 | Unitatea centrală de procesare a datelor | | Placă de dezvoltare Arduino Uno | 1 | Unitatea centrală de procesare a datelor |
Line 43: Line 43:
 | Breadboard și Fire de conexiune | - | Baza pentru realizarea circuitului de testare | | Breadboard și Fire de conexiune | - | Baza pentru realizarea circuitului de testare |
  
-==== 3.2. Schema electrică ==== +==== Schema electrică ==== 
-Schema a fost realizată folosind mediul de proiectare KiCad. Pinul de activare (EN) al senzorului UV a fost conectat direct la 3.3V pentru a asigura stabilitatea citirilor, eliminând fluctuațiile de tip zgomot+Schema a fost realizată folosind mediul de proiectare KiCad. Pinul de activare (EN) al senzorului UV a fost conectat direct la 3.3V pentru a asigura stabilitatea citirilor, eliminând fluctuațiile de tip zgomot.
 {{:​pm:​prj2026:​bianca.popa1106:​schema_electrica.png?​800|}} {{:​pm:​prj2026:​bianca.popa1106:​schema_electrica.png?​800|}}
 ===== Software Design ===== ===== Software Design =====
  
 +=== Mediu de dezvoltare ===
 +Aplicația a fost dezvoltată folosind **Arduino IDE**, mediul standard pentru microcontrolerul Arduino Uno R3. Acesta a facilitat scrierea codului și încărcarea acestuia pe placă.
  
-<note tip> +=== Librării și surse 3rd-party ​=== 
-Descrierea codului aplicaţiei (firmware):​ +Pentru a interacționa cu modulele periferice, am integrat următoarele biblioteci standard și externe: 
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) +  * ''<​Wire.h>''​ - bibliotecă standard Arduino, folosită pentru a realiza comunicația I2C între microcontroler șecranul OLED. 
-  * librării şi surse 3rd-party ​(e.g. Procyon AVRlib) +  * ''<​Adafruit_GFX.h>''​ și ''<​Adafruit_SSD1306.h>''​ - biblioteci third-party dezvoltate de Adafruit, necesare pentru generarea elementelor grafice ​(cercuri, linii, textșafișarea lor pe ecranul OLED de 128x32 pixeli. 
-  * algoritmi şi structuri pe care plănuiţi să le implementaţ+  * ''​<Servo.h>''​ - bibliotecă standard Arduino utilizată pentru generarea semnalului PWM (Pulse Width Modulation),​ care dictează unghiul la care trebuie să se poziționeze acul servomotorului.
-  * (etapa 3surse şfuncţii implementate +
-</note>+
  
-===== Rezultate Obţinute ===== +=== Algoritmi și structuri implementate ​=== 
- +Proiectul se bazează pe următorii algoritmi și concepte esențiale pentru prelucrarea semnalelor și stabilitatea sistemului: 
-<note tip> +  * **Filtrarea semnalului analogic (Averaging)**:​ Pentru a elimina fluctuațiile senzorului (zgomotul), sistemul preia multiple eșantioane de la senzorul UV (20 de citiri în bucla principală și 50 în secvența de calibrare), și le face media. Această metodă asigură stabilitatea acului indicator pe cadran. 
-Care au fost rezultatele obţinute ​în urma realizării proiectului vostru+  * **Debouncing software**: Acționarea mecanică a butonului generează un scurt parazit. Pentru a preveni declanșarea repetată accidentală, ​în rutina de întrerupere a fost implementat un mecanism de debouncing folosind funcția ''​millis()'',​ care ignoră orice apăsare ce survine la mai puțin de 200ms de la ultima detectare validă. 
-</​note>​+  * **Desenare trigonometrică**:​ Pentru a oferi o reprezentare de tip „indicator de bord” pe OLED, unghiul asociat intensității UV este convertit în radiani, iar coordonatele x și y ale vârfului acului sunt calculate folosind funcțiile ''​sin()''​ și ''​cos()''​. 
 +  * **Mapare și Constraining**:​ Semnalul brut (analogic) este translatat folosind funcția ''​map()''​ într-un procent de nivel de risc (0-100%). Ulterior, acest procent este protejat împotriva ieșirii din limite prin ''​constrain()''​ și este din nou mapat pentru a stabili unghiul servomotorului (0-180 grade).
  
 +=== Surse și funcții implementate ===
 +Întregul cod este grupat într-un singur fișier, principalele funcții fiind detaliate mai jos:
 +  * ''​setup()''​ : Funcția de inițializare. Pornește comunicația Serială și I2C, configurează pinii pentru buzzer (OUTPUT) și buton (INPUT_PULLUP),​ atașează funcția de întrerupere (''​attachInterrupt''​) de tip FALLING pentru buton și cheamă funcțiile de pornire a ecranului și calibrare a senzorului.
 +  * ''​loop()''​ : Execută la infinit logica principală. Citește semnalul senzorului UV, calculează procentul de radiație reală pe baza offset-ului din calibrare, setează unghiul noului motor doar dacă diferența e mai mare de 5 grade (pentru a evita mișcările bruște/​zgomotul motorului) și pornește alarma sonoră (''​tone()''​) dacă nivelul este >= 40 și funcția "​Mute"​ este inactivă. La final, cheamă funcția de afișare.
 +  * ''​welcomeScreen()''​ : Afișează un scurt mesaj de întâmpinare ("UV METER - READY"​) pe ecran în momentul alimentării sistemului.
 +  * ''​calibrateSensor()''​ : Se execută o singură dată la pornire. Citește senzorul timp de aproximativ 1 secundă pentru a stabili valoarea de bază (''​baseline''​) a mediului la momentul respectiv.
 +  * ''​drawMeter()''​ : Desenează pe OLED toate elementele grafice: conturul semicercului,​ liniile care indică pragurile, gradațiile,​ statusul de risc (LOW/​MEDIUM/​HIGH),​ valoarea numerică exactă și, dacă este cazul, statusul alarmei sonore (MUT).
 +  * ''​muteAlarm()''​ : Rutina de tratare a întreruperilor hardware (ISR). Este apelată de microcontroler în momentul apăsării butonului de "​Mute"​. Inversează starea variabilei volatile ''​isMuted''​ instantaneu,​ ținând cont de algoritmul de debouncing de 200ms menționat anterior.
 +===== Rezultate Obţinute =====
 +{{:​pm:​prj2026:​bianca.popa1106:​whatsapp_image_2026-05-25_at_09.59.23.jpeg?​300|}}
 ===== Concluzii ===== ===== Concluzii =====
 +Proiectul Smart UV Exposure Alarm a fost finalizat cu succes, rezultând un sistem portabil funcțional capabil să monitorizeze în timp real nivelul radiațiilor ultraviolete și să alerteze utilizatorul prin feedback vizual și sonor.
 ===== Download ===== ===== Download =====
  
-<note warning>​ +{{:pm:​prj2026:​bianca.popa1106:​uv_meter.zip|}}
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectuluisurse, scheme, etcUn 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 Alin331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +==== Jurnal ==== 
-</​note>​+  ​* **20 Aprilie ​26 AprilieAchiziția componentelor** 
 +    ​Stabilirea arhitecturii hardware și a necesarului de piese pentru proiect. 
 +    ​În data de 20 aprilie s-a plasat comanda pentru componentele principaleplacă de dezvoltare Arduino Uno, senzor UV ML8511display OLED I2C, servomotor SG90, buzzer activ și buton push.
  
-===== Jurnal =====+  * **27 Aprilie - 3 Mai: Realizarea circuitului hardware** 
 +    * Asamblarea componentelor pe breadboard pentru testarea conexiunilor inițiale și validarea pinilor. 
 +    * Verificarea individuală a comunicării I2C (pentru ecran) și a citirii analogice (pentru senzorul UV). 
 +    * Realizarea schemei electrice finale a circuitului folosind mediul de proiectare KiCad, asigurând inclusiv legarea pinului EN al senzorului la 3.3V pentru stabilitate.
  
-<note tip> +  * **4 Mai - 10 Mai: Dezvoltarea software-ului** 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul ​de proiect progresul proiectului. +    * Scrierea logicii de bază a aplicației, inclusiv algoritmul de filtrare (mediere) cu zeci de eșantioane pentru senzorul UV și funcțiile trigonometrice pentru redesenarea acului pe afișajul OLED. 
-</​note>​+    * Trecerea codului la nivel de regiștri pentru a respecta cerințele materiei: configurarea ADC-ului, setarea Timerelor hardware pentru generarea semnalelor PWM destinate servomotorului și buzzer-ului,​ și implementarea întreruperilor externe hardware pentru butonul ​de Mute (inclusiv debouncing software cu ''​millis()''​).
  
 +  * **11 Mai - 17 Mai: Proiectarea 3D a carcasei**
 +    * Măsurarea atentă a dimensiunilor fiecărei componente hardware pentru a asigura toleranțe corecte la montaj.
 +    * Proiectarea unei carcase personalizate în Fusion, gândită special pentru a integra fix ecranul OLED, a oferi o deschidere directă către exterior pentru senzorul UV, un suport stabil pentru prinderea fizică a servomotorului indicator și un spațiu dedicat pentru buton si buzzer.
 +
 +  * **18 Mai - 24 Mai: Printarea 3D, asamblarea și finalizarea**
 +    * Printarea 3D a elementelor carcasei.
 +    * Asamblarea fizică finală a sistemului: montarea plăcii de bază, fixarea ecranului, a senzorului și a servomotorului în sloturile printate, urmate de organizarea compactă a cablajului la interior.
 +    * Testarea practică a sistemului complet asamblat, verificarea declanșării alarmei și redactarea documentației finale pentru pagina de ocw.
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +**Resurse Software** ​ 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** ​şi **Resurse Hardware**. + 
-</note>+https://​github.com/​adafruit/​Adafruit-GFX-Library 
 + 
 +https://​github.com/​adafruit/​adafruit_ssd1306 
 + 
 + 
 +**Resurse Hardware** 
 + 
 +https://ww1.microchip.com/​downloads/​en/​DeviceDoc/​Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf 
 + 
 +https://​cdn.sparkfun.com/​datasheets/​Sensors/​LightImaging/​ML8511_3-8-13.pdf 
 + 
 +https://​www.vishay.com/​docs/​37894/​oled128o032dlpp3n00000.pdf 
 + 
 +https://​www.friendlywire.com/​projects/​ne555-servo-safe/​SG90-datasheet.pdf
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2026/bianca.popa1106/maria_diana.vulpoi.1778342358.txt.gz · Last modified: 2026/05/09 18:59 by maria_diana.vulpoi
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