This shows you the differences between two versions of the page.
pm:prj2025:fstancu:itomita [2025/05/27 23:19] itomita [Software Design] |
pm:prj2025:fstancu:itomita [2025/05/28 22:44] (current) itomita [Software Design] |
||
---|---|---|---|
Line 49: | Line 49: | ||
===== Software Design ===== | ===== Software Design ===== | ||
- | === Mediu de dezvoltare === | + | **Mediu de dezvoltare**: //Arduino IDE// (placă Arduino UNO – ATmega328P + CH340) |
- | Arduino IDE – utilizat pentru dezvoltarea și încărcarea codului pe placa compatibilă Arduino UNO (ATmega328P + CH340). | + | |
- | === Librării utilizate === | + | **Librării folosite**: |
- | - **Servo.h** – pentru controlul servomotorului responsabil cu deschiderea/închiderea capacului. | + | * Servo.h – controlul servomotorului pentru deschiderea/închiderea capacului |
- | - **Adafruit_ADXL345_U.h** – pentru interfațarea cu accelerometrul ADXL345 prin I²C. | + | * Adafruit_ADXL345_U.h – comunicare cu accelerometrul ADXL345 prin I²C |
- | - **Wire.h** – pentru comunicarea I²C între microcontroler și accelerometru. | + | * LiquidCrystal_I2C – comunicare I²C între microcontroler accelerometru si LCD |
- | === Stadiul actual al implementării software === | + | **Funcționalități implementate**: |
- | Implementarea software este funcțională și include următoarele componente: | + | * **Deschidere automată capac**: La detectarea mișcării prin senzorul PIR, capacul se deschide automat și rămâne deschis un timp prestabilit. |
- | - **Deschiderea automată a capacului**: la detectarea mișcării prin senzorul PIR, capacul se deschide automat și rămâne deschis pentru o perioadă prestabilită. | + | * **Detecție manipulare neautorizată**: Accelerometrul monitorizează mișcările bruște/inclinarea coșului și declanșează alarma sonoră. |
- | - **Detecția manipulării neautorizate**: accelerometrul monitorizează mișcările bruște sau înclinările coșului și declanșează o alarmă sonoră în caz de manipulare neautorizată. | + | * **Alarmă sonoră**: Un buzzer emite un sunet de avertizare în cazul unei manipulări neautorizate. |
- | - **Alarmă sonoră**: un buzzer emite un semnal sonor specific în cazul detectării unei manipulări neautorizate. | + | * **Afișaj LCD**: Afișează informații precum numarul de elemente introduse. |
- | - **Afișaj LCD** *(opțional)*: pentru afișarea stării curente a coșului, numărul de deschideri sau alte informații relevante. | + | |
- | === Motivația alegerii bibliotecilor === | + | **Motivația alegerii bibliotecilor**: |
- | - **Servo.h**: oferă o interfață simplă și eficientă pentru controlul servomotoarelor, permițând poziționarea precisă a capacului coșului. | + | * Servo.h – interfață simplă și eficientă pentru controlul servomotorului |
- | - **Adafruit_ADXL345_U.h**: bibliotecă robustă și bine documentată pentru interfațarea cu accelerometrul ADXL345, facilitând citirea și interpretarea datelor de accelerație. | + | * Adafruit_ADXL345_U.h – bibliotecă robustă pentru accelerometrul ADXL345 |
- | - **Wire.h**: standard pentru comunicarea I²C, necesară pentru interacțiunea cu accelerometrul. | + | * Wire.h – standard pentru comunicarea I²C |
- | === Elementul de noutate al proiectului === | + | **Elemente de noutate**: |
- | Proiectul se distinge prin integrarea mai multor senzori și actuatori pentru a crea un coș de gunoi inteligent care: | + | * Integrarea senzorilo pentru a crea un coș inteligent |
- | - Se deschide automat la detectarea mișcării, fără a necesita contact fizic. | + | * Deschiderea automată a capacului fără contact fizic |
- | - Detectează manipulările neautorizate și declanșează o alarmă sonoră specifică. | + | * Detectarea tentativelor de manipulare și declanșarea unei alarme sonore |
- | - *(Opțional)* Afișează informații relevante pe un ecran LCD, oferind feedback utilizatorului. | + | * Afișarea informațiilor utile pe un ecran LCD |
- | Această combinație de funcționalități oferă o soluție inovatoare pentru gestionarea deșeurilor în mod igienic și securizat. | + | **Justificarea utilizării funcționalităților din laborator**: |
+ | * **Întreruperi (Interrupts)**: reacționează prompt la semnalele PIR, pentru deschiderea rapidă a capacului | ||
+ | * **Timere**: gestionează durata de deschidere a capacului și timpul de activare a alarmei | ||
+ | * **PWM (Pulse Width Modulation)**: permite controlul precis al poziției servomotorului | ||
+ | * **I²C**: interfață pentru comunicarea cu accelerometrul ADXL345 | ||
- | === Justificarea utilizării funcționalităților din laborator === | + | **Structura proiectului și interacțiunea funcționalităților**: |
- | - **Întreruperi (Interrupts)**: utilizate pentru a reacționa prompt la semnalele senzorului PIR, asigurând o deschidere rapidă a capacului la detectarea mișcării. | + | * **Așteptare detectare mișcare**: Sistemul monitorizează senzorul PIR pentru a detecta prezența. |
- | - **Timere**: folosite pentru a gestiona durata de deschidere a capacului și pentru a controla durata alarmei sonore. | + | * **Deschidere capac**: La detectarea mișcării, servomotorul deschide capacul și pornește un timer. |
- | - **PWM (Pulse Width Modulation)**: necesar pentru controlul precis al poziției servomotorului. | + | * **Închidere capac**: După expirarea temporizatorului, capacul se închide automat. |
- | - **I²C**: interfață de comunicare cu accelerometrul ADXL345, permițând citirea datelor de accelerație. | + | * **Monitorizare accelerometru**: Verifică dacă coșul este manipulat neautorizat. |
+ | * **Declanșare alarmă**: La detectarea unei manipulări neautorizate, buzzerul emite un semnal sonor. | ||
+ | * **Detectare obiecte cu senzor ultrasonic**: Senzorul ultrasonic montat pe capac detectează introducerea obiectelor în coș. Informațiile colectate sunt procesate și transmise pentru afișare pe ecranul LCD (de exemplu: număr obiecte detectate, nivel de umplere, etc.). | ||
- | Aceste funcționalități au fost studiate și aplicate în laboratoarele cursului, demonstrând aplicabilitatea lor în proiecte practice. | + | **Calibrarea senzorilor**: |
+ | * Senzor PIR – ajustarea sensibilității și duratei semnalului pentru a evita alarmele false. (manual) | ||
+ | * Accelerometru ADXL345 – setarea la ±16g pentru detectarea mișcărilor bruște; stabilirea pragurilor de accelerare pentru declanșarea alarmei. | ||
- | === Scheletul proiectului și interacțiunea dintre funcționalități === | ||
- | Structura software este organizată în mai multe stări: | ||
- | - **Așteptare detectare mișcare**: sistemul monitorizează senzorul PIR pentru a detecta prezența utilizatorului. | ||
- | - **Deschidere capac**: la detectarea mișcării, servomotorul deschide capacul și începe un temporizator. | ||
- | - **Închidere capac**: după expirarea temporizatorului, capacul se închide automat. | ||
- | - **Monitorizare accelerometru**: în paralel, accelerometrul verifică dacă coșul este manipulat neautorizat. | ||
- | - **Declanșare alarmă**: la detectarea unei manipulări neautorizate, buzzerul emite o alarmă sonoră specifică. | ||
- | Validarea funcționării corecte a fost realizată prin testarea fiecărei componente individual și în ansamblu, asigurând o integrare coerentă a tuturor funcționalităților. | + | Cod sursa: |
- | + | https://github.com/Ionut-Tomita/PM-Project | |
- | === Calibrarea elementelor de senzoristică === | + | |
- | - **Senzor PIR**: ajustarea sensibilității și a duratei semnalului de ieșire pentru a evita declanșările false. | + | |
- | - **Accelerometru ADXL345**: setarea gamei de măsurare la ±16g pentru a detecta mișcările bruște; stabilirea unui prag de accelerație pentru declanșarea alarmei. | + | |
- | + | ||
- | Calibrarea a fost realizată prin observarea comportamentului senzorilor în condiții reale de utilizare și ajustarea parametrilor pentru a obține o funcționare fiabilă. | + | |
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | {{ :pm:prj2025:fstancu:ionutit.png?600 |}} |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
- | + | ||
- | ===== Concluzii ===== | + | |
- | + | ||
- | ===== Download ===== | + | |
- | + | ||
- | <note warning> | + | |
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un 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 Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | + | |
- | </note> | + | |
- | + | ||
- | ===== Jurnal ===== | + | |
- | + | ||
- | <note tip> | + | |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
- | </note> | + | |
- | + | ||
- | ===== Bibliografie/Resurse ===== | + | |
- | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | ||
- | </note> | ||
- | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||