Automatizare irigație solar
Autor: Postolache Florin
Grupă: 335CC
Introducere
Proiectul reprezintă un prototip pentru o automatizare a unui solar. Acesta va analiza 2 dintre cele mai importante necesități ale unei plante cu ajutorul a doi senzori. (senzor de temperatură și senzor de măsurare a umidității solului)
Descriere generală
Plăcuța va analiza datele primite de la cei doi senzori și în funcție de valorile primite de la aceștia, va reacționa în următoarele moduri:
În cazul în care temperatura din cameră este prea ridicată, se va activa un buzzer care va atenționa utilizatorul că trebuie să deschidă solarul.
În cazul în care solul este mult prea uscat, se va porni o pompă care va împinge apa dintr-un rezervor către pământ. Pentru a ne asigura că există presiune pe furtun, în celălalt capăt se va afla o electrovalvă care se va deschide la puțin timp după activarea pompei.
În cazul în care nu mai există apă în rezervor, același buzzer menționat mai sus va începe să sune pentru a atenționa utilizatorul că trebuie să intervină.
De asemenea, acesta va afișa toate datele primite pe un ecran LCD.
SCHEMA BLOC
Hardware Design
Componente utilizate |
Senzor de temperatură |
Senzor de umiditate a solului |
Senzor de nivel |
Buzzer |
Modul releu 2 canale |
Ecran LCD 16×2 |
Pompă submersibilă 12V |
Electrovalvă 12V |
Diodă |
Tuburi |
Cabluri |
Rezistențe diverse valori |
Arduino UNO R3 ATmega328p |
Software Design
Logica
void setup() - inițializez comunicarea cu lcd-ul, creez caracterul special pentru grade, definesc restul pinilor ca fiind de input/output și atașez întreruperi butoanelor care schimbă datele ce se afișează pe lcd
void loop() - se apelează la infinit urmatoarele funcții:
humidity_analysis(): Citește valoarea primită de la senzorul de umiditate a solului. În funcție de valoarea primită de la senzor și valoarea booleanului este_gol_rezervorul pornește pompa și deschide electrovalva/oprește pompa și închide electrovalva.
get_temp(): Citește valoarea primită de la senzorul de temperatură.
get_distance(): Aflu nivelul apei din rezervor. Trimit o undă direct către suprafața apei. Aștept ecoul ei să fie captat de senzor. Nivelul este determinat pe baza diferenței de timp între trimitere-captare.
trigger_buzzer(): Analizează valorile date de senzorul de temperatură și senzorul ultrasonic și pe baza acestora vede dacă trebuie să pornească sau nu buzzer-ul.
afiseaza_date(): Afișează informațiile citite de pe senzori.
Pe langa cele două funcții principale, mai folosesc și două întreruperi, una pentru fiecare buton (check_button și check_button_2). Acestea incrementeaza/decrementeaza o variabilă care este folosită pentru a stabili ce informație se va afișa pe ecran.
Tot codul este disponibil aici.
Rezultate Obţinute
Proiectul functionează conform dorințelor mele. Singurul lucru pe care aș mai vrea să îl îmbunătățesc la această versiune este să meargă cu un singur alimentator.
Download
În arhivă mai este prezent și un videoclip în care se prezintă funcționarea proiectului. De asemenea videoclipul poate fi vizualizat și aici
resurse_proiect.zip
Jurnal
Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.
Bibliografie/Resurse