This shows you the differences between two versions of the page.
pm:prj2022:avaduva:aquarium-monitor-system [2022/05/27 22:38] alexandra.negoita02 [Hardware Design] |
pm:prj2022:avaduva:aquarium-monitor-system [2022/05/28 00:11] (current) alexandra.negoita02 [Aquarium Monitor System] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Aquarium Monitor System ====== | ====== Aquarium Monitor System ====== | ||
+ | Autor: Negoita Alexandra-Ana | ||
+ | |||
+ | Grupa: 1220FB | ||
===== Introducere ===== | ===== Introducere ===== | ||
Line 28: | Line 31: | ||
* Un comutator pentru a conecta circuitul principal la prima baterie (9V); | * Un comutator pentru a conecta circuitul principal la prima baterie (9V); | ||
* Un comutator pentru a conecta sursa de lumina la cea de a doua baterie (9V); | * Un comutator pentru a conecta sursa de lumina la cea de a doua baterie (9V); | ||
- | * | + | |
**3.** Exista, de asemenea, si un potentiometru pentru a regla contrastul ecranului. | **3.** Exista, de asemenea, si un potentiometru pentru a regla contrastul ecranului. | ||
Line 41: | Line 45: | ||
===== Schema bloc ===== | ===== Schema bloc ===== | ||
- | <note tip> | + | {{ :pm:prj2022:avaduva:schema_bloc_ams_negoita_alexandra_new.png?300 |}} |
- | (Aici va urma prezentarea schemei bloc a proiectului); | + | |
- | O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează. | + | |
- | + | ||
- | Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html | + | |
- | </note> | + | |
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | <note tip> | ||
Lista pieselor folosite: | Lista pieselor folosite: | ||
* Placă compatibilă cu Arduino UNO R3 | * Placă compatibilă cu Arduino UNO R3 | ||
Line 64: | Line 61: | ||
* Rezistente | * Rezistente | ||
* Fire | * Fire | ||
- | </note> | ||
===== Software Design ===== | ===== 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; | ||
- | <note tip> | + | ==== Blocurile de cod implementate ==== |
- | Descrierea codului aplicaţiei (firmware): | + | **Senzorul de temperatura a apei** |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | Pentru citirea datelor de pe senzor se folosesc functiile specifice, date in biblioteca senzorului "DallasTemperature". |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * begin() - Se afla in functia setup() si stabileste comunicarea seriala dintre Arduino si senzor; |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | In functia loop(): |
- | * (etapa 3) surse şi funcţii implementate | + | * requestTemperatures() - Trimite comanda pentru senzor de a efectua o conversie a temperaturii; |
- | </note> | + | * getTempCByIndex(index) - Primeste temperatura in Celsius; Avand un singur senzor conectat, la parametrul 'index' al metodei se pune valoarea zero; |
- | ===== Rezultate Obţinute ===== | + | **Senzorul de temperatura a aerului** |
+ | Pentru citirea datelor de pe senzor se folosesc functiile specifice, date in biblioteca senzorului "DHT". | ||
+ | * begin() - Se afla in functia setup() si stabileste comunicarea seriala dintre Arduino si senzor; | ||
+ | In functia loop(): | ||
+ | * readTemperature() - Primeste temperatura citita de senzor in Celsius; | ||
- | <note tip> | + | **Senzorul de nivel al apei** |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | Pentru citirea datelor de pe senzor se foloseste functia analogRead(), impreuna cu pinul analog, care citeste valoarea aflata pe pin; |
- | </note> | + | |
- | ===== Concluzii ===== | + | **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; | ||
- | ===== Download ===== | + | **Banda LED NeoPixel** |
+ | Pentru citirea datelor de pe senzor se folosesc functiile specifice, date in biblioteca senzorului "Adafruit_NeoPixel". | ||
+ | * begin() - Se afla in functia setup() si stabileste comunicarea seriala dintre Arduino si banda LED; | ||
+ | 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. | ||
- | <note warning> | + | **Ecranul LCD** |
- | 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ă ;-). | + | Pentru lucrul cu LCD se folosesc functiile specifice, date in biblioteca LiquidCristal. |
+ | * begin() - Se afla in functia setup() si stabileste comunicarea seriala dintre Arduino si LCD; Se dau numarul de coloane si de randuri care vor fi folosite; | ||
+ | In functia setup() si loop(): | ||
+ | * setCursor() - Seteaza pozitia de pe care se va continua scrierea pe LCD; | ||
+ | * print() - Afiseaza datele pe LCD; | ||
- | 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**. | ||
- | </note> | ||
- | ===== Jurnal ===== | ||
- | <note tip> | + | ===== Rezultate Obţinute ===== |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
- | </note> | + | |
- | ===== Bibliografie/Resurse ===== | + | {{:pm:prj2022:avaduva:demo_ams_video.rar|}} |
+ | ===== 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. | ||
- | <note> | + | ===== Download ===== |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | {{:pm:prj2022:avaduva:ams.rar|}} |
- | </note> | + | |
- | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | + | ===== Jurnal ===== |
+ | * 26.04 - Descriere proiect intermediara | ||
+ | * 15.05 - Finalizare circuit proiect | ||
+ | * 23.05 - Prezentare faza intermediara | ||
+ | * 27.05 - Proiect final | ||
+ | |||
+ | ===== Bibliografie/Resurse ===== | ||
+ | * Componente : https://www.optimusdigital.ro/ | ||
+ | * https://learn.adafruit.com/ | ||
+ | * https://www.arduino.cc/ | ||
+ | * https://forum.arduino.cc/ | ||
+ | * https://lastminuteengineers.com/ | ||