This shows you the differences between two versions of the page.
pm:prj2024:avaduva:miruna.dolineanu [2024/05/05 20:18] miruna.dolineanu created |
pm:prj2024:avaduva:miruna.dolineanu [2024/05/27 08:53] (current) miruna.dolineanu adaugat link la arhiva |
||
---|---|---|---|
Line 4: | Line 4: | ||
Proiectul intentioneaza sa faca cresterea si ingrijirea plantelor mai usoara, prin mentinerea factorilor optimi pentru bunastarea acestora, intr-un mediu controlat si automatizat. Probleme precum udarea prea des sau prea rar a plantelor vor fi inlaturate, deoarece proiectul va avea grija sa mentina umiditatea ideala a solului, dar va controla si nivelul de lumina si temperatura din interiorul serei. Acest proiect este perfect pentru iubitorii de natura care, din diferite motive, nu pot oferi un mediu perfect pentru ingrijire, dar totusi viseaza sa creasca propriile plante. | Proiectul intentioneaza sa faca cresterea si ingrijirea plantelor mai usoara, prin mentinerea factorilor optimi pentru bunastarea acestora, intr-un mediu controlat si automatizat. Probleme precum udarea prea des sau prea rar a plantelor vor fi inlaturate, deoarece proiectul va avea grija sa mentina umiditatea ideala a solului, dar va controla si nivelul de lumina si temperatura din interiorul serei. Acest proiect este perfect pentru iubitorii de natura care, din diferite motive, nu pot oferi un mediu perfect pentru ingrijire, dar totusi viseaza sa creasca propriile plante. | ||
- | <note tip> | ||
- | Prezentarea pe scurt a proiectului vostru: | ||
- | * ce face | ||
- | * care este scopul lui | ||
- | * care a fost ideea de la care aţi pornit | ||
- | * de ce credeţi că este util pentru alţii şi pentru voi | ||
- | </note> | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | Proiectul se va folosi de energia primita de la o baterie pentru a functiona. Folosind datele oferite de un senzor de umiditate a solului, va decide daca plantele necesita apa si va porni un sistem de irigare daca solul este uscat. Cu ajutorul unui senzor de temperatura, daca gradele sunt crescute in interiorul serei, usile serei se vor deschide printr-un sistem actionat de servomotoare. In plus, pe baza informatiilor primite de la un senzor de luminozitate, va decide daca plantele necesita lumina in plus si, in situatia aceasta, va porni niste LEDuri. | + | Folosindu-se de datele oferite de un senzor de umiditate a solului, proiectul va decide daca plantele necesita apa si va porni un sistem de irigare daca solul este uscat. Cu ajutorul unui senzor de temperatura, daca gradele sunt crescute in interiorul serei, usile serei se vor deschide printr-un sistem actionat de un servomotor. In plus, pe baza informatiilor primite de la un senzor de luminozitate, va decide daca plantele necesita lumina in plus si, in situatia aceasta, va porni o banda de LEDuri. |
- | {{:pm:prj2024:avaduva:pmdiagram.png?200|}} | + | {{:pm:prj2024:avaduva:greenhouse_diagram.png?600|}} |
- | <note tip> | + | |
- | 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 | + | ===== Hardware Design ===== |
- | </note> | + | ===Lista pieselor necesare:=== |
- | ===== Hardware Design ===== | + | * Placa de dezvoltare Arduino Uno |
- | Lista pieselor necesare: | + | * Modul cu senzor de umiditate a solului |
- | * Microcontroller | + | * Senzor de temperatura DHT11 |
- | * Senzor de umiditate a solului | + | * Modul cu fotorezistor |
- | * Senzor de temperatura | + | |
- | * Senzor de luminozitate | + | |
* Pompa de apa | * Pompa de apa | ||
- | * LEDuri | + | * Releu |
+ | * Banda de LEDuri WS2812 | ||
+ | * Micro servomotor 9g | ||
* Fire | * Fire | ||
* Rezistente | * Rezistente | ||
- | * Baterie | + | * Baterie pentru alimentarea pompei de apa |
- | <note tip> | + | |
- | Aici puneţi tot ce ţine de hardware design: | + | ===Schema electrica:=== |
- | * listă de piese | + | |
- | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | {{:pm:prj2024:avaduva:greenhouse_schematic2.png?700|}} |
- | * diagrame de semnal | + | |
- | * rezultatele simulării | + | |
- | </note> | + | ===Cablajul proiectului:=== |
+ | |||
+ | {{:pm:prj2024:avaduva:cablaj_greenhouse.jpeg?300|}} | ||
+ | |||
+ | ===Conectarea pinilor:=== | ||
+ | |||
+ | * Pinul A0 al placii Arduino este conectat la senzorul de umiditate a solului intrucat acesta intoarce date in format analog. | ||
+ | * Pinul D2 este conectat la senzorul de temperatura DHT11, care intoarce date in format digital. | ||
+ | * Pinul D7 este conectat la modulul photorezistor, care intoarce date digitale. | ||
+ | * Pinul D9 este conectat la servomotor, care functioneaza prin semnal PWM. | ||
+ | * Pinul D11 este conectat la (banda) de LED-uri, care pot fi comandate prin semnal PWM. | ||
+ | * Pinul D13 este conectat la releu, care actioneaza pompa de apa. | ||
+ | |||
+ | |||
+ | ===Functionarea unei componente din proiect:=== | ||
+ | |||
+ | In videoclipul [[https://drive.google.com/file/d/1gAxWyCxrZFsgYSDzbIHuYKSDTMp47rTZ/view?usp=drive_link|acesta]] demonstrez functionalitatea modulului cu fotorezistor. Atunci cand pe suprafata fotorezistorului cade lumina, banda LED este stinsa, iar atunci cand nu primeste suficienta lumina, se aprind LEDurile. | ||
+ | |||
+ | ===== Concepte folosite din laboratoare ===== | ||
+ | |||
+ | * [[https://ocw.cs.pub.ro/courses/pm/lab/lab2-2023|Timere]]: Am folosit un timer pentru schimbarea culorii LEDurilor la un interval de timp fixat (10 secunde). | ||
+ | * [[https://ocw.cs.pub.ro/courses/pm/lab/lab3-2023-2024|PWM]]: Am folosit PWM pentru controlul servomotorului. | ||
+ | * [[https://ocw.cs.pub.ro/courses/pm/lab/lab4-2023-2024|ADC]]: Am folosit ADC pentru citirea semnalului analog dat | ||
+ | de senzorul de umiditate. | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | === Mediu de dezvoltare === | ||
- | <note tip> | + | Pentru dezvoltarea codului am folosit VSCode impreuna cu PlatformIO. |
- | Descrierea codului aplicaţiei (firmware): | + | |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | === Librării şi surse 3rd-party === |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | **1. <SimpleDHT.h>:** pentru folosirea senzorului DHT11 |
- | * (etapa 3) surse şi funcţii implementate | + | |
- | </note> | + | Aceasta biblioteca a fost folosita pentru citirea datelor oferite de senzorul de temperatura. Cu ajutorul acesteia |
+ | am reusit sa preiau informatii despre temperatura din interiorul serei. | ||
+ | |||
+ | **2. <Servo.h>:** pentru controlul servomotorului | ||
+ | |||
+ | Aceasta biblioteca a fost folosita pentru controlarea servomotorului ce are rolul de a deschide fereastra serei | ||
+ | atunci cand temperatura din interior este crescuta. Biblioteca ofera o interfata pentru controlul pozitiei | ||
+ | servomotorului pe baza unui unghi dat. | ||
+ | |||
+ | **3. <MsTimer2.h>:** pentru folosirea timerului 2 | ||
+ | |||
+ | Biblioteca aceasta este folosita pentru schimbarea culorii LEDurilor la un interval de timp dat. Biblioteca | ||
+ | inglobeaza in functiile sale configurarea timerului 2 al placii cu o rezolutie de 1ms. | ||
+ | |||
+ | **4. <WS2812.h>:** pentru controlul LEDurilor | ||
+ | |||
+ | Am folosit aceasta biblioteca pentru controlul benzii de LEDuri RGB. In cadrul bibliotecii se gasesc functionalitati | ||
+ | ce permit setarea culorii fiecarui LED in parte. | ||
+ | |||
+ | === Variabile folosite in cod === | ||
+ | |||
+ | * Constante pentru descrierea pinilor de pe placa Arduino folositi in cod; | ||
+ | * Constante pentru pragurile senzorilor (temperatura, procent umiditate), pozitiile servomotorului, culorile LEDurilor; | ||
+ | * Variabile pentru starea componentelor. | ||
+ | |||
+ | === Algoritmi şi structuri implementate === | ||
+ | |||
+ | **void setup():** | ||
+ | |||
+ | - initializeaza pinii si alte componente ncesare programului | ||
+ | |||
+ | **void changeColor():** | ||
+ | |||
+ | - functie ajutatoare pentru timer; cicleaza prin culorile prestabilite pentru LEDuri | ||
+ | |||
+ | **void tempServo():** | ||
+ | |||
+ | - verifica temepratura primita de la senzorul DHT si actualizeaza starea servomotorului daca este cazul, | ||
+ | rezultand in deschiderea sau inchiderea ferestrei serei. | ||
+ | |||
+ | **void photoresLEDs():** | ||
+ | |||
+ | - verifica daca fotorezistorul detecteaza prezenta luminii si in functie de aceasta aprinde sau stinge | ||
+ | LEDurile. De fiecare data cand sunt aprinse, ciclul de culori va incepe de la lumina alba. | ||
+ | |||
+ | **void humidityRelay():** | ||
+ | |||
+ | - calculeaza procentajul de uscare al solului pe baza datelor primite analog de la senzorul de umiditate | ||
+ | si activeaza pompa de apa daca acesta este crescut. | ||
+ | |||
+ | **void loop():** | ||
+ | |||
+ | - apeleaza pe rand tempServo, photoresLEDs si humidityRelay pentru a asigura functionarea celor trei caracteristici | ||
+ | principale ale proiectului. | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | Proiectul este finalizat! |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | In [[https://drive.google.com/file/d/15xH81i97WlqNslnePpTXLTfYoOsFksk8/view?usp=drive_link|acest]] videoclip demonstrez functionalitatea senzor umiditate + pompa de apa. |
+ | |||
+ | [[https://drive.google.com/file/d/129CFhIYUzP9buSU14Ng_YMWd9mdR0LSj/view?usp=sharing|Aici]] prezint cum functioneaza fotorezistorul + LEDurile. | ||
+ | |||
+ | Iar in [[https://drive.google.com/file/d/1Nc-2MRAZFHGhfa3khh4Kh6XCaYiMPjIi/view?usp=drive_link|aceasta]] inregistrare demonstrez functionarea senzorului de temperatura + servomotor. | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | |||
+ | Am reusit sa finalizez proiectul cu toate functionalitatile pe care le-am planuit initial. A fost o provocare, dar si un proces interesant si satisfacator, deoarece am avut ocazia sa ma implic in aspecte tehnice si conceptuale cu care nu m-am intalnit prea des în cadrul facultatii. Mi-a placut sa invat cum sa conectez diferite componente intre ele si sa vad cum codul scris de mine produce efecte in viata reala. | ||
===== Download ===== | ===== Download ===== | ||
Line 68: | Line 142: | ||
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**. | 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> | </note> | ||
+ | |||
+ | https://drive.google.com/file/d/1vpRTO6CqU83oDTfOaHkoniJPTcKVU-3N/view?usp=drive_link | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
Line 77: | Line 153: | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | https://www.youtube.com/watch?v=dJJAQxyryoQ&ab_channel=CircuitBasics |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | |
- | </note> | + | - pentru utilizarea DHT11 |
+ | |||
+ | https://www.optimusdigital.ro/ro/electronica-de-putere-module-cu-releu/13084-modul-releu-cu-un-canal-comandat-cu-5-v.html?search_query=releu+5v&results=108 | ||
+ | |||
+ | - pentru conectarea si utilizarea releului | ||
+ | |||
+ | https://www.optimusdigital.ro/ro/optoelectronice-bare-cu-leduri/753-bara-de-led-uri-rgb-ws2812-cu-8-led-uri.html?search_query=banda+led&results=23 | ||
+ | |||
+ | - pentru conectarea si utilizarea LEDurilor | ||
+ | |||
+ | https://www.youtube.com/watch?v=SfmHNb5QAzc&ab_channel=educ8s.tv | ||
+ | |||
+ | - pentru conectarea si utilizarea servomotorului | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||