This shows you the differences between two versions of the page.
|
pm:prj2026:alexandru.predescu:robert.dieaconu [2026/05/23 21:39] robert.dieaconu [Software Design] |
pm:prj2026:alexandru.predescu:robert.dieaconu [2026/05/27 00:26] (current) robert.dieaconu [Explicarea scheletului, interacțiunii și validării sistemului] |
||
|---|---|---|---|
| Line 112: | Line 112: | ||
| </note>. | </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 PWM, generat 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 și 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 și Execuția: Microcontrolerul adună toate aceste 4 informații și 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ăți | ||
| + | Toate modulele din laboratoare interacționează ca un lanț de comandă: | ||
| + | |||
| + | Intrarea: Totul pornește de la pinul digital (GPIO) al 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 ===== | ||