Differences

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

Link to this comparison view

pm:prj2026:bianca.popa1106:alexia.oprisan [2026/05/24 16:49]
alexia.oprisan [Descrierea detaliata a modulelor hardware]
pm:prj2026:bianca.popa1106:alexia.oprisan [2026/05/24 20:52] (current)
alexia.oprisan [Rezultate Obţinute]
Line 28: Line 28:
 Comunicatia dintre module este realizata folosind mai multe interfete specifice sistemelor embedded: Comunicatia dintre module este realizata folosind mai multe interfete specifice sistemelor embedded:
     * I2C pentru RTC si LCD     * I2C pentru RTC si LCD
-    * UART pentru comunicatia Bluetooth 
     * PWM pentru controlul servomotorului     * PWM pentru controlul servomotorului
  
Line 159: Line 158:
  
 {{:​pm:​prj2026:​bianca.popa1106:​aquaguradian.png?​700 |}} {{:​pm:​prj2026:​bianca.popa1106:​aquaguradian.png?​700 |}}
 +
  
  
 ===== Software Design ===== ===== Software Design =====
  
 +Partea software a proiectului a fost dezvoltata in limbajul C/C++ folosind framework-ul Arduino pentru microcontrollerul ATmega328P. Aplicatia integreaza mai multe functionalitati studiate in cadrul laboratoarelor PM si permite monitorizarea si automatizarea acvariului.
  
-<note tip> +Proiectul ​utilizeaza ​mai multe concepte ​importante din sistemele embedded:
-Descrierea codului aplicaţiei (firmware):​ +
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) +
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) +
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  * (etapa 3) surse şi funcţii implementate +
-</​note>​ +
- +
-Partea software a proiectului va fi dezvoltata in limbajul C/C++ si va fi completata pe masura realizarii si testarii hardware-ului.  +
- +
-Proiectul ​integreaza ​mai multe concepte ​si functionalitati studiate in cadrul laboratoarelor PM:+
  
 **Lab 1 (USART)** **Lab 1 (USART)**
  
-Sistemul va transmite ​in timp real datele de monitorizare, ​precum temperatura apei, nivelul apei si nivelul luminii ambientaleprecum ​si diferite mesaje de stare sau alerta ​catre terminalul serial si catre conexiunea Bluetooth.+Comunicatia seriala este utilizata pentru afisarea mesajelor de debug si monitorizarea parametrilor sistemului ​in timp real prin Serial Monitor. Sunt afisate valori ​precum temperatura apei, nivelul apei, valoarea LDR-ului ​si diferite mesaje de stare sau alerta.
  
 **Lab 2 (Intreruperi)** **Lab 2 (Intreruperi)**
  
-Va fi utilizata o intrerupere externa hardware ​pentru detectarea apasarii butonului de hranire manuala. ​In plus, sistemul va folosi semnalul de alarma generat de modulul RTC DS3231 pentru declansarea automata a hranirii la ore prestabilite.+Sistemul utilizeaza intreruperi externe ​pentru detectarea ​rapida a apasarii butonului de hranire manuala. ​Acest lucru permite actionarea servomotorului fara polling continuu.
  
 **Lab 3 (Timere si PWM)** **Lab 3 (Timere si PWM)**
  
-Servomotorul SG90 utilizat pentru mecanismul de hranire ​va fi controlat prin semnal PWM generat de microcontroller. ​De asemenea, timerele interne vor fi folosite ​pentru ​gestionarea anumitor evenimente si actiuni periodice din sistem.+Servomotorul SG90 utilizat pentru mecanismul de hranire ​este controlat prin semnal PWM generat de microcontroller. ​RTC-ul DS3231 este utilizat ​pentru ​declansarea automata a hranirii la ore prestabilite.
  
 **Lab 4 (ADC)** **Lab 4 (ADC)**
  
-Convertorul Analog-Digital ​va fi utilizat pentru citirea senzorului LDR si monitorizarea luminii ambientale. Valorile citite ​vor fi folosite ​pentru controlul automat al iluminarii ​acvariului.+Convertorul Analog-Digital ​este utilizat pentru citirea senzorului LDR si a senzorului NTC waterproof. Valorile citite ​sunt utilizate pentru monitorizarea temperaturii apei si pentru controlul automat al iluminarii.
  
-Se va realiza monitorizarea permanenta a parametrilor ​importanti ai acvariului si se va controla ​automat iluminarea si hranirea in functie de valorile senzorilor si de ora furnizata de RTC. Informatiile importante ​vor fi afisate pe display-ul LCD si transmise ​prin Bluetooth catre telefonul utilizatorului.+Sistemul monitorizeaza permanent parametrii ​importanti ai acvariului si controleaza ​automat iluminarea si hranirea in functie de valorile senzorilor si de ora furnizata de RTC. Informatiile importante ​sunt afisate pe display-ul LCD si monitorizate ​prin terminalul serial.
  
 **Lab 6 (I2C)** **Lab 6 (I2C)**
  
-Protocolul I2C este utilizat pentru comunicatia cu modulul RTC DS3231 si cu display-ul LCD 16x2. RTC-ul furnizeaza timpul real necesar pentru automatizarea hranirii ​si iluminarii, iar display-ul afiseaza informatii despre starea sistemului si valorile monitorizate. +Protocolul I2C este utilizat pentru comunicatia cu modulul RTC DS3231 si cu display-ul LCD 16x2. RTC-ul furnizeaza timpul real necesar pentru automatizarea hranirii, iar display-ul afiseaza informatii despre starea sistemului si valorile monitorizate.
 ===== Implementare ===== ===== Implementare =====
  
-Implementarea software a proiectului AquaGuardian a fost realizata in limbajul C folosind programare la nivel de registre ​pentru microcontrollerul ATmega328P. Aplicatia integreaza mai multe functionalitati studiate in cadrul laboratoarelor PM, precum GPIO, ADC, USART, intreruperi externe si control PWM.+Implementarea software a proiectului AquaGuardian a fost realizata in limbajul C/C++ utilizand framework-ul Arduino ​pentru microcontrollerul ATmega328P.
  
 Programul este organizat modular, fiecare functionalitate importanta fiind implementata prin functii separate de initializare si control. Aplicatia ruleaza intr-o bucla infinita in care sunt cititi senzorii, sunt verificate conditiile de functionare si sunt controlate perifericele conectate. Programul este organizat modular, fiecare functionalitate importanta fiind implementata prin functii separate de initializare si control. Aplicatia ruleaza intr-o bucla infinita in care sunt cititi senzorii, sunt verificate conditiile de functionare si sunt controlate perifericele conectate.
Line 206: Line 196:
 **GPIO si control hardware** **GPIO si control hardware**
  
-Pinii microcontrollerului au fost configurati ​manual folosind registrele DDR si PORT. Au fost configurate iesiri digitale pentru servomotor si releu, precum si intrari digitale cu pull-up intern pentru butoane.+Pinii microcontrollerului au fost configurati ​utilizand functiile pinMode, digitalWrite ​si digitalRead din framework-ul Arduino. Au fost configurate iesiri digitale pentru servomotor si releu, precum si intrari digitale cu pull-up intern pentru butoane.
  
 Servomotorul conectat pe PB1 controleaza mecanismul de hranire, iar releul conectat pe PD7 controleaza iluminarea acvariului. Servomotorul conectat pe PB1 controleaza mecanismul de hranire, iar releul conectat pe PD7 controleaza iluminarea acvariului.
  
-**USART**+**Serial Monitor**
  
-Comunicatia seriala este utilizata pentru afisarea mesajelor de debug si monitorizarea parametrilor sistemului in timp real. A fost implementata o biblioteca proprie USART prin configurarea registrelor hardware ale microcontrollerului.+Comunicatia seriala este utilizata pentru afisarea mesajelor de debug si monitorizarea parametrilor sistemului in timp real prin Serial Monitor.
  
 Prin terminalul serial sunt afisate: Prin terminalul serial sunt afisate:
  
-   * valorile citite de senzori +  ​* valorile citite de senzori 
-   ​* nivelul apei +  * temperatura apei 
-   ​* mesajele de stare +  ​* nivelul apei 
-   ​* alertele sistemului+  * valorile LDR 
 +  ​* mesajele de stare 
 +  * alertele sistemului
  
 Aceasta functionalitate a fost utilizata pentru testarea si validarea proiectului. Aceasta functionalitate a fost utilizata pentru testarea si validarea proiectului.
Line 229: Line 221:
 LDR-ul este conectat pe PC0, iar senzorul NTC pe PC1. LDR-ul este conectat pe PC0, iar senzorul NTC pe PC1.
  
-**Intreruperi externe**+**Control PWM si RTC**
  
-Pentru butonul ​de hranire ​manuala a fost utilizata o intrerupere externa pe pinul PD3 (INT1). ISR-ul asociat seteaza un flag software care declanseaza hranirea in bucla principala. +Servomotorul SG90 este controlat folosind semnal PWM pentru actionarea mecanismului ​de hranire ​automataModulul RTC DS3231 furnizeaza timpul real necesar pentru declansarea automata ​hranirii la ora prestabilita.
- +
-Utilizarea intreruperilor permite detectarea rapida ​apasarii butonului fara polling continuu.+
  
 **Monitorizare si automatizare** **Monitorizare si automatizare**
Line 240: Line 230:
  
 Sistemul realizeaza automat hranirea pestilor la ora prestabilita si permite control manual prin intermediul butoanelor. Sistemul realizeaza automat hranirea pestilor la ora prestabilita si permite control manual prin intermediul butoanelor.
 +
 +Pentru iluminare a fost implementat un prag minim si maxim pentru evitarea aprinderii si stingerii repetate a benzii LED la variatii mici ale luminii ambientale.
  
 **Alegerea bibliotecilor** **Alegerea bibliotecilor**
  
-Au fost utilizate ​doar biblioteci ​AVR minimale:+Au fost utilizate ​urmatoarele ​biblioteci:
  
-avr/io.h +  * Wire.h 
-avr/​interrupt.h +  * RTClib.h 
-util/delay.h+  * LiquidCrystal_I2C.h 
 +  * Servo.h 
 +  * math.h
  
-Acestea ​permit ​acces direct la registrele hardware ​si un control mai bun asupra perifericelor microcontrollerului. Comunicatia USART a fost implementata folosind o biblioteca proprie pentru intelegerea modului de functionare al perifericelor seriale.+Aceste biblioteci ​permit ​comunicatia I2C cu RTC-ul ​si display-ul LCD, controlul servomotorului si calculul temperaturii utilizand senzorul NTC.
  
 **Validare si optimizari** **Validare si optimizari**
  
-Fiecare modul hardware a fost testat individual folosind ​mesaje de debug transmise prin USARTAplicatia utilizeaza flag-uri volatile ​pentru ​comunicarea intre ISR si bucla principala si foloseste pull-up-urile interne ​pentru ​reducerea componentelor externe.+Fiecare modul hardware a fost testat individual folosind ​Serial Monitor pentru verificarea valorilor citite si a functionalitatii sistemului. 
 + 
 +Au fost implementate debounce software ​pentru ​butoane ​si praguri diferite ​pentru ​aprinderea si stingerea iluminarii automate, reducand astfel fluctuatiile nedorite ale sistemului. 
 + 
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +Sistemul AquaGuardian a fost implementat si testat cu succes pe microcontrollerul ATmega328P. 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+ 
-</note>+Proiectul permite monitorizarea temperaturii apei, a nivelului apei si a luminii ambientale in timp real. Valorile sunt afisate pe display-ul LCD si monitorizate prin Serial Monitor. 
 + 
 +Iluminarea acvariului este controlata automat folosind senzorul LDR si un releu conectat la banda LED. Sistemul permite si control manual prin intermediul butoanelor. 
 + 
 +Hranirea automata a pestilor functioneaza pe baza timpului furnizat de modulul RTC DS3231, iar servomotorul SG90 distribuie hrana la ore prestabilite. 
 + 
 +Toate modulele hardware ​au fost testate individual si integrate cu succes in sistemul final
 +  
 +{{ :​pm:​prj2026:​bianca.popa1106:​aquaguardian.jpeg?​400 }} 
 + 
 + 
 +===== Demo Video ===== 
 + 
 +[[https://​youtu.be/X1zI2bSQHXY|Demo AquaGuardian System]]
  
 ===== Concluzii ===== ===== Concluzii =====
  
 +AquaGuardian reprezinta un sistem inteligent capabil sa monitorizeze si sa automatizeze functii importante ale unui acvariu, contribuind la mentinerea unui mediu sigur si stabil pentru pesti.
 +
 +{{ :​pm:​prj2026:​bianca.popa1106:​aqua2.jpeg?​300 |}}
 ===== Download ===== ===== Download =====
  
 <note warning> <note warning>
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectuluisurse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+**Link Github:**
  
-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**.+https://github.com/​alexiaoprisan/​AquaGuardian-System
 </​note>​ </​note>​
  
Line 281: Line 295:
  
 **Saptamana 3**: Am realizat schema bloc a sistemului si am inceput redactarea documentatiei. De asemenea, am studiat conexiunile si protocoalele de comunicatie utilizate de fiecare modul. **Saptamana 3**: Am realizat schema bloc a sistemului si am inceput redactarea documentatiei. De asemenea, am studiat conexiunile si protocoalele de comunicatie utilizate de fiecare modul.
 +
 +**Saptamana 4**: Am realizat conexiunile hardware dintre componente si am testat individual fiecare modul: RTC, LCD, senzorul ultrasonic, senzorul LDR, senzorul NTC si servomotorul. De asemenea, am realizat schema electrica a sistemului.
 +
 +**Saptamana 5**: Am implementat partea software a proiectului si am integrat toate functionalitatile sistemului. Au fost realizate automatizarea hranirii folosind RTC-ul, controlul automat al iluminarii, afisarea informatiilor pe LCD si monitorizarea parametrilor prin Serial Monitor. De asemenea, au fost realizate testarea si optimizarea functionarii sistemului.
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
pm/prj2026/bianca.popa1106/alexia.oprisan.1779630550.txt.gz · Last modified: 2026/05/24 16:49 by alexia.oprisan
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