This shows you the differences between two versions of the page.
|
pm:prj2026:bianca.popa1106:alexia.oprisan [2026/05/18 16:54] alexia.oprisan [Impementare] |
pm:prj2026:bianca.popa1106:alexia.oprisan [2026/05/24 20:52] (current) alexia.oprisan [Rezultate Obţinute] |
||
|---|---|---|---|
| Line 11: | Line 11: | ||
| In plus, sistemul poate controla si iluminarea acvariului in functie de lumina detectatade senzorul LDR, contribuind la crearea unui mediu mai natural pentru pesti si plante. | In plus, sistemul poate controla si iluminarea acvariului in functie de lumina detectatade senzorul LDR, contribuind la crearea unui mediu mai natural pentru pesti si plante. | ||
| - | Sistemul include si **conectivitate Bluetooth BLE**, permitand monitorizarea parametrilor principali direct de pe telefon. Utilizatorul poate vizualiza informatii precum temperatura apei sau starea iluminarii si poate controla anumite functii ale sistemului prin intermediul unei aplicatii mobile. | ||
| Mi s-a parut un proiect interesant deoarece combina mai multe concepte importante din domeniul sistemelor embedded: senzori, intreruperi, ADC, PWM, UART si comunicatie I2C. In plus, consider ca este un proiect util deoarece poate ajuta orice persoana care are un acvariu sa mentina un mediu mai sigur si mai stabil pentru pesti, fara sa verifice constant fiecare parametru manual. | Mi s-a parut un proiect interesant deoarece combina mai multe concepte importante din domeniul sistemelor embedded: senzori, intreruperi, ADC, PWM, UART si comunicatie I2C. In plus, consider ca este un proiect util deoarece poate ajuta orice persoana care are un acvariu sa mentina un mediu mai sigur si mai stabil pentru pesti, fara sa verifice constant fiecare parametru manual. | ||
| Line 26: | Line 25: | ||
| * Pentru hranirea automata este utilizat un **servomotor SG90** care actioneaza mecanismul de distribuire a hranei la ore prestabilite. | * Pentru hranirea automata este utilizat un **servomotor SG90** care actioneaza mecanismul de distribuire a hranei la ore prestabilite. | ||
| * **Display-ul LCD** 16x2 conectat prin I2C afiseaza in timp real informatii importante despre sistem, precum temperatura apei, nivelul apei sau starea iluminarii. | * **Display-ul LCD** 16x2 conectat prin I2C afiseaza in timp real informatii importante despre sistem, precum temperatura apei, nivelul apei sau starea iluminarii. | ||
| - | |||
| - | |||
| - | Sistemul include si un **modul Bluetooth BLE HM-10/AT-09** care permite comunicatia cu telefonul mobil. Prin intermediul unei aplicatii mobile, utilizatorul poate monitoriza parametrii principali ai acvariului si poate controla anumite functii ale sistemului. | ||
| 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 57: | Line 52: | ||
| | Senzor lumina | LDR | ADC | Detecteaza lumina ambientala | | | Senzor lumina | LDR | ADC | Detecteaza lumina ambientala | | ||
| | Iluminare | Banda LED 12V | Alimentare externa prin releu | Iluminarea acvariului | | | Iluminare | Banda LED 12V | Alimentare externa prin releu | Iluminarea acvariului | | ||
| - | | Modul Bluetooth | HM-10 / AT-09 BLE | UART | Comunicatie cu telefonul | | ||
| | Buton | Push Button | GPIO | Control manual al sistemului | | | Buton | Push Button | GPIO | Control manual al sistemului | | ||
| Line 140: | Line 134: | ||
| Releul este activat automat in functie de valoarea citita de LDR sau manual prin buton. | Releul este activat automat in functie de valoarea citita de LDR sau manual prin buton. | ||
| - | |||
| - | |||
| - | === Modul Bluetooth BLE === | ||
| - | |||
| - | Modulul HM-10 / AT-09 permite comunicatia dintre sistem si telefon prin Bluetooth Low Energy. | ||
| - | |||
| - | Conexiuni UART: | ||
| - | |||
| - | * **TXD modul - PB2 (D10)** | ||
| - | * **RXD modul - PB3 (D11)** | ||
| - | |||
| - | Prin Bluetooth, utilizatorul poate monitoriza parametrii sistemului si controla anumite functii folosind o aplicatie mobila. | ||
| Line 174: | Line 156: | ||
| | Buton hranire | PD3 (INT1 / D3) | Intrerupere externa | | | Buton hranire | PD3 (INT1 / D3) | Intrerupere externa | | ||
| | Buton iluminare | PD6 (D6) | GPIO | | | Buton iluminare | PD6 (D6) | GPIO | | ||
| - | | Modul Bluetooth BLE HM-10 / AT-09 | PB2 (RX / D10), PB3 (TX / D11) | UART | | ||
| {{: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 ambientale, precum 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 224: | 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 247: | 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 automata. Modulul RTC DS3231 furnizeaza timpul real necesar pentru declansarea automata a hranirii la ora prestabilita. |
| - | + | ||
| - | Utilizarea intreruperilor permite detectarea rapida a apasarii butonului fara polling continuu. | + | |
| **Monitorizare si automatizare** | **Monitorizare si automatizare** | ||
| Line 258: | 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 USART. Aplicatia 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 proiectului: surse, 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 299: | 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 ===== | ||