Table of Contents

AquaGuardian System

AquaGuardian System este un sistem inteligent creat pentru monitorizarea si automatizarea unui acvariu. Ideea proiectului a pornit din dorinta de a realiza un sistem capabil sa mentina conditii stabile si sigure pentru pesti prin monitorizarea permanenta a parametrilor importanti si automatizarea unor procese esentiale.

Scopul proiectului

Sistemul monitorizeaza constant parametri importanti ai acvariului, precum temperatura apei, nivelul apei si lumina ambientala, pentru a mentine un mediu sigur si stabil pentru pesti. Informatiile sunt afisate in timp real pe un LCD conectat prin I2C, astfel incat utilizatorul poate vedea rapid ce se intampla in acvariu.

Una dintre functiile principale ale proiectului este hranirea automata la ore fixe. Cu ajutorul modulului RTC DS3231, sistemul pastreaza timpul real si declanseaza automat hranirea la ore prestabilite, cum ar fi dimineata si seara. 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.

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.

Descriere generală

Sistemul integreaza mai multe module hardware si software care comunica intre ele pentru a asigura functionarea automata a acvariului si monitorizarea parametrilor importanti.

Comunicatia dintre module este realizata folosind mai multe interfete specifice sistemelor embedded:

Hardware Design

Aici puneţi tot ce ţine de hardware design:

Componenta Model Interfata cu MCU Functie
Microcontroller ATmega328P Xplained Mini - Unitatea centrala a sistemului
RTC DS3231 I2C Pastreaza timpul real si programeaza actiunile automate
Senzor temperatura NTC waterproof ADC Monitorizeaza temperatura apei
Senzor nivel apa HC-SR04 GPIO Masoara nivelul apei
Display LCD LCD 16×2 I2C I2C Afiseaza informatii despre sistem
Servomotor SG90 180° PWM Controleaza mecanismul de hranire
Modul releu Releu 5V 1 canal GPIO Controleaza banda LED
Senzor lumina LDR ADC Detecteaza lumina ambientala
Iluminare Banda LED 12V Alimentare externa prin releu Iluminarea acvariului
Buton Push Button GPIO Control manual al sistemului

Descrierea detaliata a modulelor hardware

RTC DS3231

Modulul RTC DS3231 este utilizat pentru mentinerea timpului real chiar si atunci cand sistemul este oprit. Acesta permite programarea automata a hranirii si a iluminarii la anumite ore prestabilite.

RTC-ul comunica cu microcontrollerul prin interfata I2C:

Interfata I2C permite comunicatia seriala folosind doar doua fire de date, ceea ce reduce numarul de pini utilizati.

NTC waterproof

Senzorul NTC waterproof este utilizat pentru monitorizarea temperaturii apei din acvariu. Acesta functioneaza ca o rezistenta variabila dependenta de temperatura si este conectat intr-un divizor rezistiv impreuna cu un rezistor de 10kΩ.

Conectare:

Valorile analogice citite de microcontroller sunt convertite in temperatura si afisate pe display-ul LCD.

HC-SR04

Senzorul ultrasonic HC-SR04 este utilizat pentru monitorizarea nivelului apei.

Conexiuni:

Distanta este calculata pe baza duratei semnalului receptionat.

LDR

Senzorul LDR detecteaza intensitatea luminii ambientale si permite controlul automat al iluminarii acvariului.

Conectare:

LDR-ul este utilizat impreuna cu un rezistor de 10kΩ intr-un divizor de tensiune.

Servomotor SG90

Servomotorul SG90 controleaza mecanismul de hranire automata al pestilor.

Conectare:

PWM-ul permite controlul precis al unghiului de rotatie.

LCD 16×2 I2C

Display-ul LCD afiseaza informatii importante despre sistem, precum temperatura apei, nivelul apei si starea iluminarii.

Conexiuni I2C:

Utilizarea interfetei I2C reduce numarul de pini necesari conectarii.

Modul releu

Modulul releu controleaza banda LED de iluminare a acvariului.

Conectare:

Releul este activat automat in functie de valoarea citita de LDR sau manual prin buton.

Butoane de control

Sistemul utilizeaza doua butoane pentru control manual:

Butonul de hranire utilizeaza intreruperi externe pentru detectarea rapida a apasarii.

Componenta Pin ATmega328P Tip Interfata
RTC DS3231 PC4 (SDA), PC5 (SCL) I2C
LCD 16×2 I2C PC4 (SDA), PC5 (SCL) I2C
HC-SR04 PD4 (TRIG), PD5 (ECHO) GPIO
Senzor NTC waterproof PC1 (ADC1 / A1) ADC
LDR PC0 (ADC0 / A0) ADC
Modul releu PD7 (D7) GPIO
Banda LED 12V Alimentare externa prin releu Alimentare externa
Servomotor SG90 PB1 (OC1A / D9) PWM
Buton hranire PD3 (INT1 / D3) Intrerupere externa
Buton iluminare PD6 (D6) GPIO

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.

Proiectul utilizeaza mai multe concepte importante din sistemele embedded:

Lab 1 (USART)

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)

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)

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)

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.

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)

Protocolul I2C este utilizat pentru comunicatia cu modulul RTC DS3231 si cu display-ul LCD 16×2. RTC-ul furnizeaza timpul real necesar pentru automatizarea hranirii, iar display-ul afiseaza informatii despre starea sistemului si valorile monitorizate.

Implementare

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.

GPIO si control hardware

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.

Serial Monitor

Comunicatia seriala este utilizata pentru afisarea mesajelor de debug si monitorizarea parametrilor sistemului in timp real prin Serial Monitor.

Prin terminalul serial sunt afisate:

Aceasta functionalitate a fost utilizata pentru testarea si validarea proiectului.

ADC

Convertorul Analog-Digital este utilizat pentru citirea senzorului LDR si a senzorului NTC waterproof. Valorile analogice sunt convertite in format digital si utilizate pentru controlul iluminarii si monitorizarea temperaturii apei.

LDR-ul este conectat pe PC0, iar senzorul NTC pe PC1.

Control PWM si RTC

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.

Monitorizare si automatizare

Nivelul apei este monitorizat folosind senzorul ultrasonic HC-SR04, iar iluminarea este controlata automat in functie de valoarea citita de senzorul LDR.

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

Au fost utilizate urmatoarele biblioteci:

Aceste biblioteci permit comunicatia I2C cu RTC-ul si display-ul LCD, controlul servomotorului si calculul temperaturii utilizand senzorul NTC.

Validare si optimizari

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

Sistemul AquaGuardian a fost implementat si testat cu succes pe microcontrollerul ATmega328P.

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.

aquaguardian.jpeg

Demo Video

Demo AquaGuardian System

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.

Download

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Saptamana 1: Am ales ideea proiectului si am stabilit functionalitatile principale ale sistemului. In aceasta etapa am studiat componentele necesare si modul in care acestea pot comunica intre ele.

Saptamana 2: Am realizat planul proiectului, am ales modulele hardware necesare si am comandat componentele pentru realizarea sistemului.

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

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF