Differences

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

Link to this comparison view

pm:prj2025:vstoica:aila.zeitouni [2025/05/26 16:52]
aila.zeitouni [Software Design]
pm:prj2025:vstoica:aila.zeitouni [2025/05/26 16:59] (current)
aila.zeitouni [Milestone 3 - Raport asupra implementării software]
Line 236: Line 236:
  
 </​note>​ </​note>​
 +
 +
 +
 +====== Milestone 3 - Raport asupra implementării software ======
 +
 +=== Stadiul actual al implementării ===
 +
 +Software-ul pentru proiectul Smart Stash Can este funcțional și a fost testat cu succes pe hardware-ul final. Funcționalitățile implementate includ:
 +
 +  * Detectarea distanței utilizând senzorul ultrasonic HC-SR04 (TRIG pe PD6, ECHO pe PD7)
 +  * Controlul capacului prin servomotor acționat PWM (OC1A - PB1)
 +  * Feedback sonor cu ajutorul unui buzzer (PB0)
 +  * Afișaj LCD I2C (cu PCF8574, adresă 0x27) pentru interfața cu utilizatorul
 +  * Cod modular scris în C bare-metal cu acces direct la registrele perifericelor
 +  * Demonstrație completă validată experimental în laborator
 +
 +---
 +
 +=== Biblioteci și drivere utilizate ===
 +
 +^ Componentă ^ Bibliotecă / Driver ^ Justificare ^
 +| Afișaj LCD | lcd_i2c.c / lcd_i2c.h (scris de noi) | Implementare ușoară și eficientă pentru PCF8574, fără dependențe de Arduino |
 +| Magistrală I2C | twi.c / twi.h (din laborator) | Permite control complet asupra comunicației TWI |
 +| UART (debug) | usart.c / usart.h | Folosit pentru mesaje de test și jurnalizare serială |
 +| Control servomotor | PWM cu Timer1 | Precizie ridicată folosind OCR1A și ICR1 fără delay-uri software |
 +
 +Fiecare bibliotecă a fost selectată pentru simplitate, eficiență și integrare directă cu perifericele platformei ATmega328P.
 +
 +---
 +
 +=== Element de noutate al proiectului ===
 +
 +Acest proiect se diferențiază prin abordarea complet bare-metal, fără utilizarea bibliotecilor Arduino. Interacțiunea între senzor, servomotor, buzzer și afișaj este realizată exclusiv prin programare directă a registrelor. Se obține astfel un control total asupra funcționalității,​ temporizării și performanței sistemului, într-un format educativ și extensibil.
 +
 +---
 +
 +=== Justificarea utilizării funcționalităților din laborator ===
 +
 +^ Laborator ^ Funcționalitate utilizată ^ Aplicare în proiect ^
 +| Lab 0 | GPIO | TRIG și ECHO pentru senzor, ieșire pentru buzzer |
 +| Lab 1 | UART | Trimiterea mesajelor debug către terminal serial |
 +| Lab 3 | Timere și PWM | Control precis al servomotorului cu Timer1, canal OC1A |
 +| Lab 6 | I2C (TWI) | Comunicație cu afișajul LCD prin interfața I2C (PCF8574) |
 +
 +Fiecare funcționalitate din laborator a fost integrată într-un mod practic pentru a forma un sistem embedded complet funcțional.
 +
 +---
 +
 +=== Structura proiectului și validare ===
 +
 +**Fișiere principale:​**
 +
 +  * `main.c` – logica principală,​ secvența de control
 +  * `servo.c/h` – control PWM pentru servomotor
 +  * `twi.c/h` – comunicație I2C (TWI)
 +  * `lcd_i2c.c/​h` – afișare pe LCD prin PCF8574
 +  * `usart.c/h` – trimiterea mesajelor seriale
 +
 +**Validare:​**
 +  * Testare modulară: fiecare componentă a fost verificată individual
 +  * Testare integrată: comportamentul întregului sistem a fost observat în timp real
 +  * Compararea distanțelor măsurate cu o riglă fizică
 +  * Verificarea reacției servo în funcție de distanță
 +  * Confirmarea clarității mesajelor LCD și a actualizării cursorului
 +
 +---
 +
 +=== Calibrarea senzorului de distanță ===
 +
 +Senzorul ultrasonic HC-SR04 a fost calibrat folosind măsurători directe:
 +
 +  * Formula de conversie: `(durata în µs × 0.0343) / 2`
 +  * Pulsurile TRIG și ECHO au fost gestionate cu `_delay_us()` pentru precizie
 +  * Praguri stabilite experimental:​
 +    * Deschiderea capacului la < 15 cm
 +    * Mesaj de mulțumire la < 8 cm
 +  * Zgomotul de măsurare a fost redus prin cicluri scurte și perioade de eșantionare stabile (300 ms)
 +
 +---
 +
 +=== Optimizări realizate ===
 +
 +  * PWM hardware în loc de temporizări software pentru controlul servomotorului
 +  * I2C implementat low-level fără librării externe, pentru control precis
 +  * Suprimarea “ghosting”-ului pe LCD prin scriere completă a liniilor cu spații
 +  * Utilizarea exclusivă a variabilelor statice, fără alocare dinamică
 +  * Funcția de măsurare a distanței optimizată pentru precizie și timeout sigur
 +  * Structura buclei principale minimizează întârzierile și optimizează reacția sistemului
 +
 +---
 +
 +=== Video demonstrativ ===
 +
 +O demonstrație video a întregului proiect, cu explicații și comportament funcțional,​ poate fi vizualizată la:
 +
 +
 +
 +---
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
pm/prj2025/vstoica/aila.zeitouni.1748267564.txt.gz · Last modified: 2025/05/26 16:52 by aila.zeitouni
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