This shows you the differences between two versions of the page.
pm:prj2024:vstoica:mihai.popescu1912 [2024/05/22 12:09] mihai.popescu1912 [Hardware Design] |
pm:prj2024:vstoica:mihai.popescu1912 [2024/05/25 12:09] (current) mihai.popescu1912 [Software Design] |
||
---|---|---|---|
Line 81: | Line 81: | ||
=== Asamblare === | === Asamblare === | ||
+ | |||
+ | * Am lipit cu ciocanul de lipit modulul I2C de ecranul LCD 1602 pentru a il putea conecta la Arduino | ||
{{:pm:prj2024:vstoica:popescu_mihai-costel_implemetare.jpg?700|}} | {{:pm:prj2024:vstoica:popescu_mihai-costel_implemetare.jpg?700|}} | ||
{{:pm:prj2024:vstoica:popescu_mihai-costel_1.jpg?500|}} | {{:pm:prj2024:vstoica:popescu_mihai-costel_1.jpg?500|}} | ||
+ | |||
+ | * Butonul rosu comuta de la modul de functionare automat bazat pe senzorul de temperatura, la modul manual unde poti avea chiar tu control asupra ferestrelor solarului, putand sa le inchizi si sa le deschizi manual. | ||
{{:pm:prj2024:vstoica:popescu_mihai-costel_2.jpg?500|}} | {{:pm:prj2024:vstoica:popescu_mihai-costel_2.jpg?500|}} | ||
+ | |||
+ | {{:pm:prj2024:vstoica:popescu_mihai-costel_3.jpg?500|}} | ||
+ | |||
+ | * LED-ul RGB este un indicator vizual pe langa lcd care ne arata valoarea temperaturii din interiorul serei, albastru daca temperatura este sub pragul optim (t < 25C), verde daca temperatura este optima(25C < t < 30C), rosie daca este peste pragul optim (t > 30C). | ||
+ | |||
+ | {{:pm:prj2024:vstoica:popescu_mihai-costel_4.jpg?500|}} | ||
+ | |||
+ | {{:pm:prj2024:vstoica:popescu_mihai-costel_5.jpg?500|}} | ||
+ | |||
+ | [[https://streamable.com/v8vhmj|Scurt demo]] | ||
===== Software Design ===== | ===== Software Design ===== | ||
Line 92: | Line 106: | ||
<note tip> | <note tip> | ||
Descrierea codului aplicaţiei (firmware): | Descrierea codului aplicaţiei (firmware): | ||
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * mediu de dezvoltare: Arduino IDE |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * librării şi surse 3rd-party: <Wire.h>, <LiquidCrystal_I2C.h>, <Servo.h> |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
- | * (etapa 3) surse şi funcţii implementate | + | |
</note> | </note> | ||
+ | Funcția setup inițializează toate componentele și setările necesare pentru sistemul de control al serelor: | ||
+ | |||
+ | Inițializare Serial: | ||
+ | Porneste comunicarea serială la 9600 baud rate. | ||
+ | |||
+ | Inițializare LCD: | ||
+ | Configurează LCD-ul și afișează mesajul "Hello farmers!". | ||
+ | Creează caractere personalizate pentru diferite simboluri. | ||
+ | |||
+ | Configurare Pini: | ||
+ | Setează pinii pentru LED-ul RGB și releul ca ieșiri. | ||
+ | Setează pinii pentru butoane ca intrări cu rezistențe interne de pull-up. | ||
+ | |||
+ | Configurare Servomotoare: | ||
+ | Atașează servomotoarele la pinii specificați și setează pozițiile inițiale ale acestora. | ||
+ | |||
+ | Inițializare Releu: | ||
+ | Activează pinul releului la HIGH. | ||
+ | |||
+ | Întârziere și Curățare LCD: | ||
+ | Așteaptă 2 secunde și apoi curăță afișajul LCD. | ||
+ | |||
+ | Aceasta pregătește hardware-ul pentru execuția funcției principale loop. | ||
+ | |||
+ | {{:pm:prj2024:vstoica:popescu_mihai-costel_setup_function.png?500|}} | ||
+ | |||
+ | Se efectuează citirea valorii senzorului, conversia acesteia în tensiune, calculul temperaturii bazat pe tensiune, și în final, afișarea temperaturii. | ||
+ | |||
+ | {{:pm:prj2024:vstoica:popescu_mihai-costel_citire_calculare_temperatura.png?500|}} | ||
+ | |||
+ | Se schimbă modul de operare între automat și manual la apăsarea unui buton, actualizând afișajul LCD pentru a reflecta noul mod selectat. | ||
+ | |||
+ | {{:pm:prj2024:vstoica:popescu_mihai-costel_schimbare_mod.png?500|}} | ||
+ | |||
+ | Se controlează deschiderea și închiderea ferestrelor în funcție de temperatură și modul selectat (automat sau manual), ajustează pozițiile servomotoarelor în consecință și modifică culoarea unei lumini LED bazat pe temperatura curentă. În plus, activează un releu la temperaturi sub 25 de grade pentru încălzirea serei. | ||
+ | |||
+ | Funcția printToLCD afișează pe un ecran LCD temperatura și starea ferestrelor. Temperatura este simbolizată prin diferite caractere în funcție de valoarea sa, iar starea fiecărei ferestre (deschisă sau închisă) este indicată prin caractere specifice pentru fiecare. Pe lângă acestea, temperatura în grade Celsius este afișată între stările celor două ferestre. | ||
+ | |||
+ | {{:pm:prj2024:vstoica:popescu_mihai-costel_print_function.png?500|}} | ||
+ | |||
+ | [[https://github.com/Mihai1912/Greenhouse-Monitoring-and-Control-System|GitHub-Repo]] | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||