Differences

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

Link to this comparison view

pm:prj2026:victor.stoica0203:robert.predeleanu [2026/05/08 16:48]
robert.predeleanu [Software Design]
pm:prj2026:victor.stoica0203:robert.predeleanu [2026/05/24 23:18] (current)
robert.predeleanu [Jurnal]
Line 27: Line 27:
  
 ^ Componentă ​                             ^ Cantitate ​ ^Link      ^ Preț unitar (RON)         ^ ^ Componentă ​                             ^ Cantitate ​ ^Link      ^ Preț unitar (RON)         ^
-| Placă dezvoltare Arduino UNO ATmega 328P    | 1          | [[https://​sigmanortec.ro/​Placa-dezvoltare-UNO-R3-Arduino-Compatibil-ATmega328p-CH340G-cu-bara-pini-p170362384| Link]]|30.93 ​       |+| Placă dezvoltare Arduino UNO    | 1          | [[https://​sigmanortec.ro/​Placa-dezvoltare-UNO-R3-Arduino-Compatibil-ATmega328p-CH340G-cu-bara-pini-p170362384| Link]]|30.93 ​       |
 | Display LCD SPI     | 1          | [[https://​www.bitmi.ro/​electronica/​display-lcd1602-hd44780-albastru-iluminat-10486.html| Link]] |13.99 ​       | | Display LCD SPI     | 1          | [[https://​www.bitmi.ro/​electronica/​display-lcd1602-hd44780-albastru-iluminat-10486.html| Link]] |13.99 ​       |
 | Modul interfață I2C     | 1          | [[https://​www.bitmi.ro/​module-electronice/​modul-interfata-i2c-pentru-lcd1602-10456.html| Link]] |9.99       | | Modul interfață I2C     | 1          | [[https://​www.bitmi.ro/​module-electronice/​modul-interfata-i2c-pentru-lcd1602-10456.html| Link]] |9.99       |
Line 38: Line 38:
 ^ Preț total ^ ^ ^ 140.02 RON ^ ^ Preț total ^ ^ ^ 140.02 RON ^
  
-===== Software Design =====+==== Funcționalitatea Componentelor ​====
  
 +^ Componentă ​      ^ Rol în proiect ^
 +| LCD 1602 | Afișează instrucțiunile,​ feedback-ul pentru cod și rezultatul accesului |
 +| Butoane push | Îți permit să navighezi prin meniu, să schimbi orele de hrănire sau să dai o porție la cerere |
 +| Buzzer Pasiv | Scoate un sunet scurt înainte de eliberarea hranei și în timpul setărilor |
 +| Servomotor MG995 | Învârte axul pentru a împinge bobițele de mâncare afară din rezervor |
 +| Modul RTC | Ține minte ora exactă (oră, minut, secundă) chiar și când aparatul este scos din priză |
 +| Condensator | Stochează energie și o eliberează rapid atunci când servomotorul pornește brusc |
 +| Adaptor Sursă 5V/2A | Transformă curentul de la priză în curent continuu sigur de 5V pentru tot circuitul |
  
-Proiectul va fi implementat folosind limbajul C și va utiliza perifericele hardware ale microcontrolerului pentru gestionarea procesului de automatizare:+==== Schema Electrică ==== 
 +{{:pm:​prj2026:​victor.stoica0203:​schema_electrica_pet_feeder.png?​700|}}
  
- * Interfața I2C pentru sincronizarea cu modulul de ceas (RTC) și transmiterea datelor către afișajul LCD.+==== Pinout ====
  
- * PWM (Pulse Width Modulationpentru controlul precis al servomotorului ​MG995 și generarea alertelor sonore prin buzzer.+^ Componentă ​      ^ Pin Arduino ​ ^ Tip Pin      ^ Utilitate ​                                             ^ 
 +| LCD 1602 | A4 (SDA| Date I2C | Transmite datele text către ecran | 
 +| LCD 1602 | A5 (SCL) | Clock I2C | Sincronizează transmisia datelor între Arduino și LCD | 
 +| Buton UP | 3 | Digital | Crește valoarea orelor/​minutelor în meniul de setare | 
 +| Buton DOWN | 4 | Digital | Scade valoarea orelor/​minutelor în meniul de setare | 
 +| Buton MENU | 2 | PCINT | Schimbă starea programului (afișare oră / setare mese) | 
 +| Servomotor ​MG995 | 9 | PWM | Controlează unghiul ​și mișcarea precisă a spiralei de hrană | 
 +| Modul RTC | A4 (SDA) | Date I2C | Transmite datele de timp (oră, minut) către Arduino| 
 +| Modul RTC | A5 (SCL) | Clock I2C | Sincronizează citirea timpului de la cipul de ceas| 
 +| Buzzer pasiv | 8 | Digital | Trimite semnalul sonor | 
 +| Linie de Tensiune | 5V | Power | Distribuie tensiunea de 5V către magistrala de alimentare pozitivă a componentelor | 
 +| Referință (GND) | GND | Power | Închide circuitul pentru toate componentele | 
 +===== Software Design =====
  
- * GPIO (Input) ​pentru ​preluarea comenzilor ​de la butoane ​și navigarea în meniul de configurare.+Codul sursă al acestui proiect, scris în C++ pentru ​mediul Arduino, acționează ca centrul ​de comandă al întregului sistem. Nu este doar un simplu temporizator,​ ci un sistem integrat care gestionează precis timpul, interfața utilizatorului ​și controlul electromecanic.
  
- * Memoria EEPROM pentru salvarea non-volatilă ​programului ​de hrănire, prevenind pierderea datelor la căderi de tensiune.+Pentru ​asigura un timp de răspuns instantaneu și o amprentă redusă în memorie, codul a fost optimizat folosind tehnici ​de programare la nivel coborât (Direct Port Manipulation).
  
- Timere hardware pentru monitorizarea timpului de funcționare a motorului (dozarea porției) șfiltrarea semnalului butoanelor (debouncing). +**Funcționalități și Tehnici Cheie:**
- +
- * USART/​Serial pentru calibrarea senzorilor ​și depanarea logicii de comparare a timpului în faza de testare.+
  
 +  * **Sincronizare Precisă (I2C & RTC):** Sistemul preia timpul real de la un modul hardware DS3231 prin protocolul I2C. Aceasta garantează că orele de masă sunt respectate la secundă, independent de funcționarea microcontrolerului.
 +  * **Sistem de Meniu tip „State Machine”:​** Logica meniului folosește o mașină de stări (modMeniu) pentru a gestiona tranzițiile dintre ecranul principal și ecranele de editare. Utilizatorul poate naviga și salva setări pentru 3 mese distincte, folosind doar 3 butoane tactile.
 +  * **Optimizare Hardware prin Regiștri:​** O caracteristică distinctivă a acestui cod este renunțarea la funcțiile standard (precum digitalRead sau pinMode) în favoarea manipulării directe a regiștrilor microcontrolerului ATmega328P (DDRD, PORTD, PIND, DDRB). Această abordare:
 +      * Scade timpul de reacție al butoanelor la nivel de microsecunde.
 +      * Activează rezistențele interne de Pull-Up direct din hardware.
 +      * Oferă un control mult mai curat asupra buzzer-ului pentru feedback-ul acustic.
 +  * **Control Mecanic Temporizat:​** Codul generează semnale PWM precise cu ajutorul bibliotecii Servo.h pentru a controla un motor de rotație continuă (360°). Hrănirea este transformată dintr-o mișcare fixă într-una bazată pe un interval de timp customizabil (în prezent, setat la 10 secunde de rotire inversă).
 +  * **Filtrare Software (Debouncing):​** Citirea butoanelor este protejată de un algoritm de debouncing bazat pe funcția millis(), eliminând declanșările multiple cauzate de zgomotul mecanic al contactelor.
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. 
-</​note>​ 
  
 +
 +A fost realizat un prototip electromecanic funcțional și autonom al unui dozator de hrană pentru animale de companie, echipat cu o interfață utilizator pe un display LCD 1602. Sistemul permite programarea orelor de masă folosind 3 butoane tactile, care controlează precis un mecanism elicoidal (sfredel Arhimedic) acționat de un servomotor de rotație continuă.
 +
 +Sistemul include un meniu complex și multiple funcționalități hardware și software, precum:
 +
 +  * **Monitorizare în timp real** a orei exacte cu ajutorul modulului hardware RTC DS3231 (comunicație I2C);
 +  * **Meniu interactiv tip „State Machine”** ce permite navigarea și programarea independentă a 3 mese distincte;
 +  * **Mecanism de dozare DIY complet funcțional**,​ construit din carton laminat ranforsat, capabil să transporte hrana uscată fără blocaje mecanice;
 +  * **Control temporizat prin semnal PWM** pentru servomotorul MG995, incluzând rotire inversă pentru eliberarea porțiilor și frânare electronică (punct neutru);
 +  * **Feedback acustic (buzzer)** pentru atenționarea animalului în momentul declanșării mesei;
 +  * **Filtrare software (debounce)** bazată pe temporizarea millis() pentru eliminarea citirilor false ale butoanelor;
 +  * **Gestionarea eficientă a memoriei** prin stocarea orelor de masă în vectori de date (arrays).
 +
 +Implementarea finală a proiectului demonstrează o arhitectură software hibridă: utilizează biblioteci standard pentru comunicația I2C și generarea semnalelor PWM, combinate cu **configurarea directă a registrelor hardware (PORTB, PORTD, DDRB, DDRD, PIND)** pentru citirea rapidă a butoanelor cu rezistențe interne de Pull-Up și controlul pinilor GPIO.
 ===== Concluzii ===== ===== Concluzii =====
  
-===== Download ===== 
  
-<note warning>​ +Realizarea acestui proiect a demonstrat ​cu succes integrarea conceptelor de electronică, programare la nivel coborât și mecanică DIY într-un dispozitiv practicautonom șutil. Dozatorul ​automat ​de hrană își îndeplinește cu precizie scopul, oferind un sistem stabil pentru programarea meselor animalelor de companie.
-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 ChangeLogun script de compilare ş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**. +Una dintre cele mai mari provocări, dar și realizări, a fost proiectarea și asamblarea mecanismului de dozare (sfredelul Arhimedic) ​folosind ​exclusiv materiale reciclabile (carton laminat)Această etapă a dovedit ​că limitările de resurse materiale pot fi depășite prin inginerie creativăDin punct de vedere softwaretranziția de la funcțiile Arduino standard la manipularea directă a registrelor ATmega328P a oferit o perspectivă valoroasă asupra arhitecturii hardware și a optimizării performanței.
-</​note>​+
  
-===== Jurnal ​=====+Pe viitor, proiectul poate fi extins prin modelarea și printarea 3D a ansamblului mecanic pentru o rezistență sporită la uzură, sau prin integrarea unui modul Wi-Fi (ex. ESP8266) pentru controlul și monitorizarea hrănirii de la distanță printr-o aplicație mobilă. 
 +===== Download ​=====
  
-<note tip> +Arhiva atașată pe OCW conține codul sursă complet al proiectului ​realizat pentru Arduino UNO R3.
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul ​proiectului. +
-</​note>​+
  
-===== Bibliografie/​Resurse ​=====+Fișier: 
 +  * {{:​pm:​prj2026:​victor.stoica0203:​pet_feeder.zip|}} 
 + 
 +===== Jurnal ​=====
  
-<​note>​ +  * **29.04.2026** - Alegerea temei: Dozator Automat de Hrană. 
-Listă cu documentedatasheet-uriresurse Internet folosite, eventual grupate ​pe **Resurse Software** şi **Resurse Hardware**. +  * **06.05.2026** - Crearea paginii wiki și definirea structurii proiectului. 
-</​note>​+  * **06.05.2026** - Adăugarea descrierii generalea scopului proiectului și a schemei bloc. 
 +  * **11.05.2026** ​Stabilirea configurației hardwareidentificarea pinilor și conectarea componentelor ​pe breadboard. 
 +  ​* **16.05.2026** - Integrarea display-ului LCD 1602 prin protocol I2C șa modulului de timp real RTC DS3231. 
 +  ​* **16.05.2026** - Proiectarea și asamblarea mecanismului de dozare DIY (sfredelul Arhimedic din carton laminat și componentele mecanice)
 +  * **19.05.2026** - Dezvoltarea sistemului de meniu (State Machine) pentru programarea celor 3 mese și calibrarea semnalului PWM pentru servomotor. 
 +  * **19.05.2026** - Optimizarea finală a codului prin trecerea la manipularea directă a registrelor hardware (PORTB, PORTD) și testarea ansamblului electromecanic.
  
-<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ 
  
pm/prj2026/victor.stoica0203/robert.predeleanu.1778248121.txt.gz · Last modified: 2026/05/08 16:48 by robert.predeleanu
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