This is an old revision of the document!
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.
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.
Sistemul integreaza mai multe module hardware si software care comunica intre ele pentru a asigura functionarea automata a acvariului si monitorizarea parametrilor importanti.
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:
| 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 |
| Modul Bluetooth | HM-10 / AT-09 BLE | UART | Comunicatie cu telefonul |
| Buton | Push Button | GPIO | Control manual al sistemului |
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:
pinul SDA este conectat la PC4 (SDA) pinul SCL este conectat la PC5 (SCL)
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Ω.
Senzorul este conectat la:
PC1 (A1) - intrare analogica ADC
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. Acesta masoara distanta dintre senzor si suprafata apei pentru a detecta eventuale scaderi ale nivelului.
Conexiunile utilizate sunt:
TRIG - PD4 (D4) - iesire digitala folosita pentru generarea impulsului ultrasonic ECHO - PD5 (D5) - intrare digitala folosita pentru masurarea timpului de raspuns al semnalului reflectat
Distanta este calculata pe baza duratei semnalului receptionat.
LDR
Senzorul LDR detecteaza intensitatea luminii ambientale si permite controlul automat al iluminarii acvariului.
LDR-ul este conectat la:
PC0 (A0) - intrare analogica ADC
Acesta este utilizat impreuna cu un rezistor de 10kΩ intr-un divizor de tensiune. Valorile analogice sunt citite folosind ADC-ul microcontrollerului pentru determinarea nivelului de lumina ambientala.
Servomotor SG90
Servomotorul SG90 controleaza mecanismul de hranire automata al pestilor. Acesta este comandat prin PWM si se roteste la anumite ore pentru a distribui hrana.
Servomotorul este conectat la:
PB1 (D9) - pin PWM utilizat pentru controlul pozitiei servo-ului
PWM-ul permite generarea impulsurilor necesare controlului 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.
Comunicatia se realizeaza prin interfata I2C:
SDA - PC4 SCL - PC5
Utilizarea interfetei I2C reduce semnificativ numarul de pini necesari pentru conectare.
Modul releu
Modulul releu este utilizat pentru controlul benzii LED de iluminare a acvariului.
Releul este conectat la:
PD7 (D7) - iesire digitala
Microcontrollerul activeaza sau dezactiveaza releul in functie de valoarea citita de senzorul LDR sau de comenzile manuale ale utilizatorului.
Modul Bluetooth BLE
Modulul Bluetooth BLE HM-10 / AT-09 permite comunicatia dintre sistem si telefon folosind Bluetooth Low Energy.
Conexiunile UART utilizate sunt:
TXD modul - PB2 (D10) RXD modul - PB3 (D11)
Prin intermediul conexiunii Bluetooth, utilizatorul poate monitoriza parametrii sistemului si controla anumite functii folosind o aplicatie mobila.
Butoane de control
Sistemul utilizeaza doua butoane pentru control manual:
PD3 (D3) - buton pentru hranire manuala, utilizat impreuna cu intreruperi externe PD6 (D6) - buton pentru controlul manual al iluminarii
Acestea permit interactionarea rapida cu sistemul fara utilizarea aplicatiei mobile.RTC DS3231
Modulul RTC DS3231 este utilizat pentru mentinerea timpului real chiar si atunci cand sistemul este oprit. Acesta comunica cu microcontrollerul prin interfata I2C si permite programarea automata a hranirii si iluminarii la anumite ore prestabilite.
NTC waterproof
Senzorul NTC waterproof masoara temperatura apei si transmite valorile catre microcontroller folosind ADC. Valorile sunt afisate pe LCD si transmise prin Bluetooth catre telefon.
HC-SR04
Senzorul ultrasonic HC-SR04 este utilizat pentru monitorizarea nivelului apei. Acesta masoara distanta dintre senzor si suprafata apei pentru a detecta eventuale scaderi ale nivelului.
LDR
Senzorul LDR detecteaza intensitatea luminii ambientale prin intermediul ADC-ului microcontrollerului. In functie de valoarea citita, sistemul poate controla automat iluminarea acvariului.
Servomotor SG90
Servomotorul SG90 controleaza mecanismul de hranire automata. Acesta este comandat prin PWM si se roteste la anumite ore pentru a distribui hrana.
LCD 16×2 I2C
Display-ul LCD afiseaza informatii importante despre sistem, precum temperatura apei, nivelul apei sau starea iluminarii. Comunicatia se realizeaza prin I2C.
Modul Bluetooth BLE
Modulul HM-10/AT-09 permite comunicatia dintre sistem si telefon prin Bluetooth Low Energy. Utilizatorul poate monitoriza parametrii sistemului si controla anumite functii folosind o aplicatie mobila.
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)
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.
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.
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.
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.
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.
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 si iluminarii, iar display-ul afiseaza informatii despre starea sistemului si valorile monitorizate.
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.
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.