This shows you the differences between two versions of the page.
pm:prj2024:avaduva:miruna.dolineanu [2024/05/17 12:27] miruna.dolineanu milestone hardware |
pm:prj2024:avaduva:miruna.dolineanu [2024/05/27 08:53] (current) miruna.dolineanu adaugat link la arhiva |
||
---|---|---|---|
Line 14: | Line 14: | ||
* Placa de dezvoltare Arduino Uno | * Placa de dezvoltare Arduino Uno | ||
- | * Senzor de umiditate a solului | + | * Modul cu senzor de umiditate a solului |
* Senzor de temperatura DHT11 | * Senzor de temperatura DHT11 | ||
* Modul cu fotorezistor | * Modul cu fotorezistor | ||
Line 20: | Line 20: | ||
* Releu | * Releu | ||
* Banda de LEDuri WS2812 | * Banda de LEDuri WS2812 | ||
+ | * Micro servomotor 9g | ||
* Fire | * Fire | ||
* Rezistente | * Rezistente | ||
- | * Baterie | + | * Baterie pentru alimentarea pompei de apa |
===Schema electrica:=== | ===Schema electrica:=== | ||
- | {{:pm:prj2024:avaduva:greenhouse_schematic2.png?800|}} | + | {{:pm:prj2024:avaduva:greenhouse_schematic2.png?700|}} |
Line 33: | Line 34: | ||
{{:pm:prj2024:avaduva:cablaj_greenhouse.jpeg?300|}} | {{: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. | ||
Line 39: | Line 49: | ||
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. | 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 66: | 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 75: | 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> | ||