Differences

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

Link to this comparison view

pm:prj2026:alexandru.predescu:robert.dieaconu [2026/05/16 15:30]
robert.dieaconu [Imagini]
pm:prj2026:alexandru.predescu:robert.dieaconu [2026/05/27 00:26] (current)
robert.dieaconu [Explicarea scheletului, interacțiunii și validării sistemului]
Line 93: Line 93:
  
 {{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2026/​alexandru.predescu/​whatsapp_image_2026-05-16_at_14.49.51.jpeg?​300}}{{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2026/​alexandru.predescu/​whatsapp_image_2026-05-16_at_14.49.51_1_.jpeg?​300}} {{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2026/​alexandru.predescu/​whatsapp_image_2026-05-16_at_14.49.51.jpeg?​300}}{{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2026/​alexandru.predescu/​whatsapp_image_2026-05-16_at_14.49.51_1_.jpeg?​300}}
 +
 +==== Functionalitate Senzor de Ploaie DIY ====
 +{{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2026/​alexandru.predescu/​whatsapp_image_2026-05-16_at_14.49.52.jpeg?​300}}
 +{{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2026/​alexandru.predescu/​whatsapp_image_2026-05-16_at_14.49.52_1_.jpeg?​300}}
 +{{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2026/​alexandru.predescu/​whatsapp_image_2026-05-16_at_14.49.52_2_.jpeg?​300}}
 ===== Software Design ===== ===== Software Design =====
  
  
 <note tip> <note tip>
-Descrierea codului aplicaţiei ​(firmware): +===== Stadiul actual al implementării software ===== 
-  * mediu de dezvoltare ​(if any(e.gAVR StudioCodeVisionAVR+ 
-  * librării şsurse 3rd-party (e.gProcyon AVRlib+Proiectul se află în faza de achiziție și procesare primară a datelor. Momentan, s-a implementat logica de bază pentru interogarea secvențială a senzorilor, controlată manual printr-un buton (pe pinul PD5). Funcționează complet partea de citire digitală a senzorului inductiv (detectare metalelor) și citirea analogică a senzorului de umiditate (detectare resturi biodegradabile). 
-  * algoritmi şstructuri pe care plănuiţi să le implementaţ+ 
-  ​* ​(etapa 3surse şi funcţii implementate +===== Biblioteci ====== 
-</note>+ 
 +Singurele headere folosite sunt cele standard din arhitectura AVR<​avr/​io.h>​ pentru accesarea regiștrilor și <​util/​delay.h>​ pentru temporizări hardware. Această abordare garantează un control total asupra funcțiilor de nivel scăzut ale microcontrolerului,​ reduce masiv dimensiunea binarului compilat. 
 + 
 + 
 +</​note>​. 
 + 
 +===== Noutati ===== 
 + 
 +Noutatile sunt atat din categoria hardware cat si din cea software. In partea ​de hardware am reusit sa fizex burlanul prin care o sa cada gunoiul in ghenele respective si in mare parte toate modulele au fost puse in pozitia finala. La partea de software am facut achizitia de date pentru senzorul de metale si pentru senzorul de umiditate DIY. 
 + 
 +===== Laboratoare folosite ===== 
 + 
 +Proiectul meu se bazează pe concepte învățate în primele 5 laboratoare,​ deoarece fiecare componentă are nevoie de un mod diferit de a comunica cu microcontrolerul:​ 
 + 
 +Laboratorul 0: GPIO 
 +Îl folosesc pentru componentele care trimit sau primesc semnale simple de tip "1 sau 0". Concret, prin GPIO citesc butonul de Start și senzorul de metal, și tot așa voi aprinde LED-ul Infraroșu. 
 + 
 +Laboratorul 1: UART 
 +Folosesc UART ca să trimit datele măsurate de senzori direct pe ecranul laptopului, așa pot verifica dacă totul merge bine. 
 + 
 +Laboratorul 2: Întreruperi 
 +Acestea sunt rezervate pentru cântar ​(modulul HX711). Folosind o întrerupere,​ cântarul trimite un semnal (întrerupe codul) doar în momentul în care un obiect a căzut pe trapă. 
 + 
 +Laboratorul 3: Timere și PWM 
 +Semnalul PWMgenerat cu ajutorul Timerelor, este cel care îmi permite să controlez cu mare precizie unghiul la care se rotesc brațele de sortare și viteza lor de mișcare. 
 + 
 +Laboratorul 4: ADC  
 +Este esențial pentru senzorul de umiditate și cel de lumină (Receptorul IR). Acești senzori trimit tensiuni variabile. ADC-ul transformă aceste tensiuni în numere (de la 0 la 1023), ca să pot ști exact "cât de ud" este obiectul sau câtă lumină trece prin el. 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + ===== Explicarea scheletului,​ interacțiunii și validării sistemului ===== 
 +1. Scheletul Proiectului 
 +Proiectul are o arhitectură secvențială,​ semi-automată. Scheletul logic este următorul:​ 
 + 
 +Starea de repaus: Sistemul nu face nimic până când utilizatorul pune un obiect pe trapa de plexiglas șapasă butonul de Start. 
 + 
 +Achiziția de date: Imediat după apăsarea butonului, microcontrolerul face un "​tur"​ al tuturor senzorilor, într-o ordine strictă: 
 + 
 +Verifică senzorul inductiv ​(este metal sau nu?). 
 + 
 +Verifică senzorul de umiditate (este obiectul murdar/ud sau uscat?). 
 + 
 +Verifică bariera IR (trece lumina prin el, adică e plastic/​sticlă?​). 
 + 
 +Verifică senzorul de greutate (cântărește obiectul). 
 + 
 +Decizia șExecuția: Microcontrolerul adună toate aceste 4 informații șle trece printr-un set de reguli (ex: dacă e ud, îl aruncă la biodegradabil;​ dacă e curat și e metal, îl aruncă în alta publema). La final, comandă servomotoarele ​să direcționeze obiectul în coșul potrivit. 
 + 
 + 
 +2. Interacțiunea dintre funcționalităț
 +Toate modulele din laboratoare interacționează ca un lanț de comandă: 
 + 
 +Intrarea: Totul pornește de la pinul digital ​(GPIOal butonului. Când acesta este apăsat, deblochează restul codului. 
 + 
 +Procesarea: Mai departe, ​funcționalitățile GPIO și ADC lucrează împreună. Senzorii digitali (metal) dau răspunsuri scurte de "​Da/​Nu",​ în timp ce ADC-ul (umiditate și lumină) dă valori exacte (0-1023) pentru a înțelege exact starea obiectului. Toate aceste date sunt combinate în algoritmul principal. 
 + 
 +Ieșirea: Rezultatul deciziei finale interacționează direct cu Timerele microcontrolerului,​ generând semnalul PWM necesar pentru a roti mecanic  
 +servomotoarele. 
 + 
 +3. Validarea 
 + 
 +Am atasat un video care arata functionarea servomotorului care directioneaza gunoiul  
 +{{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2026/​alexandru.predescu/​whatsapp_image_2026-05-23_at_21.38.05.jpeg?​300}} 
 +{{https://​ocw.cs.pub.ro/​courses/​_media/​pm/​prj2026/​alexandru.predescu/​whatsapp_image_2026-05-23_at_21.38.05_1_.jpeg?​300}} 
 + 
 +https://​ctipub-my.sharepoint.com/:​v:/​g/​personal/​robert_dieaconu_stud_acs_upb_ro/​IQDdgDvS2FwtTIG8TrkiyKWwAavmSyDf1jx-ZyMXZVk8yVU?​nav=eyJyZWZlcnJhbEluZm8iOnsicmVmZXJyYWxBcHAiOiJPbmVEcml2ZUZvckJ1c2luZXNzIiwicmVmZXJyYWxBcHBQbGF0Zm9ybSI6IldlYiIsInJlZmVycmFsTW9kZSI6InZpZXciLCJyZWZlcnJhbFZpZXciOiJNeUZpbGVzTGlua0NvcHkifX0&​e=cHGsWq 
 + 
 +Aici este un link catre repo-ul de github al proiectului -https://​github.com/​RobertDieaconu/​BinGenius
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
pm/prj2026/alexandru.predescu/robert.dieaconu.1778934603.txt.gz · Last modified: 2026/05/16 15:30 by robert.dieaconu
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