Aquarium Monitor System
Autor: Negoita Alexandra-Ana
Grupa: 1220FB
Introducere
Proiectul reprezinta un sistem de monitorizare a parametrilor corespunzatori intretinerii unui acvariu, si anume:
Temperatura apei;
Temperatura din camera;
Nivelul apei;
Lumina.
Aceste informatii sunt afisate pentru utilizator pe un LCD, pentru ca acesta sa le poata tine sub control.
Sistemul va tine lumina acvariului aprinsa pe parcursul zilei si o va stinge la intuneric.
Ideea acestui proiect a venit din faptul ca, avand un acvariu, am avut nevoie sa stiu daca temperatura apei este optima pentru pesti, fiind un aspect crucial in ingrijirea lor. De asemenea, cum pestii au nevoie si de intuneric, lumina acvariului trebuie sa fie stinsa pe timpul noptii in mod automat.
Descriere generală
Interactiunea cu utilizatorul
Pe cutia sistemului AMS, utilizatorul are la dispozitie:
1. Un ecran LCD pe care sunt afisati parametrii in mod corespunzator:
Ecranul are un afisaj structurat astfel:
Tapa - temperatura apei, urmata de valoarea acesteia;
Taer - temperatura din camera, urmata de valoarea acesteia;
LvL - nivelul apei, urmat de o valoare de la 1 la 5;
DAY/NIGHT - arata ce perioada a zilei detecteaza sistemul si starea luminii acvariului ( DAY - lumina este inchisa; NIGHT - lumina este aprinsa);
2. Utilizatorul are de asemenea doua comutatoare:
3. Exista, de asemenea, si un potentiometru pentru a regla contrastul ecranului.
Senzorii si pozitionarea lor
Sistemul de monitorizare se afla intr-o cutie transparenta, pentru a se vedea prototipul cat mai bine.
Senzorul de temperatura a apei, dar si senzorul de nivel al apei se afla in afara cutiei, pentru a fi plasate cu usurinta in acvariu, pe peretii acestuia;
Senzorul de temperatura a camerei se afla in interiorul cutiei, plasat cu un surub de peretele acesteia;
In acest fel este pus si modulul cu fotorezistor, acesta mai avand si o perforatie pentru a putea detecta nivelul de lumina;
Placa compatibilă cu Arduino UNO R3 se afla in partea de jos a cutiei, impreuna cu cele doua baterii in lateral si placa de prototipare deasupra acestora;
Schema bloc
Hardware Design
Lista pieselor folosite:
Placă compatibilă cu Arduino UNO R3
LCD 1602 cu backlight albastru
Senzor de temperatura rezistent la apa
Senzor de temperatura aer
Senzor nivel apa
Senzor intensitate luminoasa
Banda LED
Placa de prototipare
Comutatoare
Potentiometru
Rezistente
Fire
Software Design
Mediu de dezvoltare
Dezvoltarea codului a fost realizata in programul Arduino IDE.
Biblioteci folosite
LiquidCrystal.h → Pentru functiile necesare la LCD;
OneWire.h → Pentru accesarea senzorului de temperatura a apei;
DallasTemperature.h → Pentru functiile necesare la senzorul de temperatura a apei;
Adafruit_NeoPixel.h → Pentru functiile necesare la banda LED;
“DHT.h” → Pentru functiile necesare la senzorul de temperatura a aerului;
Blocurile de cod implementate
Senzorul de temperatura a apei
Pentru citirea datelor de pe senzor se folosesc functiile specifice, date in biblioteca senzorului “DallasTemperature”.
In functia loop():
requestTemperatures() - Trimite comanda pentru senzor de a efectua o conversie a temperaturii;
getTempCByIndex(index) - Primeste temperatura in Celsius; Avand un singur senzor conectat, la parametrul 'index' al metodei se pune valoarea zero;
Senzorul de temperatura a aerului
Pentru citirea datelor de pe senzor se folosesc functiile specifice, date in biblioteca senzorului “DHT”.
In functia loop():
Senzorul de nivel al apei
Pentru citirea datelor de pe senzor se foloseste functia analogRead(), impreuna cu pinul analog, care citeste valoarea aflata pe pin;
Modulul cu fotorezistor
Pentru citirea datelor de pe senzor se foloseste functia digitalRead(), impreuna cu pinul digital, care citeste valoarea aflata pe pin;
Valoarea va fi HIGH sau LOW;
Atunci cand valoarea este egala cu LOW, inseamna ca lumina este prezenta, deci senzorul detecteaza ca este zi. In acest caz, pe LCD se va afisa textul “DAY”, iar banda LED se va aprinde;
Atunci cand valoarea este egala cu HIGH, inseamna ca lumina este blocata, deci senzorul detecteaza ca este noapte. In acest caz, pe LCD se va afisa textul “NIGHT”, iar banda LED se va stinge;
Banda LED NeoPixel
Pentru citirea datelor de pe senzor se folosesc functiile specifice, date in biblioteca senzorului “Adafruit_NeoPixel”.
In functia loop(), in conditiile date de modulul cu fotorezistor:
Atunci cand este zi, se apeleaza functia setPixelColor() pentru fiecare LED de pe banda. Culoarea transmisa va fi alba.
Atunci cand este noapte, se apeleaza functia setPixelColor() pentru fiecare LED de pe banda. Culoarea transmisa va fi neagra.
De asemenea, dupa fiecare modificare a culorii, este apelata functa show(), pentru ca datele actualizate sa fie transmise catre banda.
Ecranul LCD
Pentru lucrul cu LCD se folosesc functiile specifice, date in biblioteca LiquidCristal.
In functia setup() si loop():
Rezultate Obţinute
Concluzii
Am invatat foarte multe despre folosirea microprocesoarelor si crearea unor astfel de proiecte. De asemenea, voi folosi in continuare proiectul AMS si pentru acvariile mele, deoarece a fost facut si dupa nevoile pe care le aveam eu si isi indeplineste scopul cu eficienta.
Download
Jurnal
26.04 - Descriere proiect intermediara
15.05 - Finalizare circuit proiect
23.05 - Prezentare faza intermediara
27.05 - Proiect final
Bibliografie/Resurse