This is an old revision of the document!


Smart Greenhouse

Student: Ciobanu Daria
Grupa: 332CC

Proiectul constă în realizarea unei mini-sere inteligente cu un sistem automat de irigare și ventilație determinat de factorii de mediu (umiditatea solului, respectiv temperatură), precum și alte două funcționalități extra care facilitează dezvoltarea armonioasă a plantelor. Sera va avea un ecran pe care se va afișa starea curentă a plantelor, dar și un buton pentru pornirea unei melodii ce stimulează creșterea florilor.

Introducere

Dacă te-ai găsit în situația să nu îti amintești când ai udat ultima dată plantele din casă sau, oricât ai încercat să ai grijă de o floare, aceasta tot nu pare că se simte bine în habitatul ei, o seră inteligentă este ceea ce îți trebuie. Sera utilizează un senzor de umiditate pentru a evalua când trebuie udat solul, declanșând ulterior pompa de apă ce facilitează hidratarea plantelor. Există și un senzor de temperatură care pornește un mic ventilator în interiorul serei pentru a răcori atmosfera. Pentru a face plantele și mai fericite am adăugat un difuzor ce pornește o melodie din muzica clasică, aceasta având un efect benefic asupra creșterii lor. Toți acești factori contribuie la starea de sănatate a plantelor, care va fi prezentată pe un display în exteriorul serei.

Descriere generală

Hardware Design

Lista pieselor:

  • Arduino UNO
  • breadboard
  • senzor pentru temperatură
  • senzor pentru umiditate
  • pompă de apă
  • buton
  • mini-ventilator
  • modul I2C
  • LCD 1602
  • difuzor

Schema electrică:

Software Design

Mediu de dezvoltare: Arduino IDE

Biblioteci folosite:

  1. <LiquidCrystal_I2C.h>
    • biblioteca folosită pentru comunicarea cu ecranul LCD prin intermediul I2C
  2. <Wire.h>
    • biblioteca folosită pentru a scrie pe LCD
  3. <dht.h>
    • biblioteca folosită pentru comunicarea cu senzorul de temperatură
  4. “pitches.h”
    • biblioteca în care am inclus notele muzicale
  5. <TimeLib.h>
    • biblioteca folosită pentru afișarea timpului

Descrierea codului

  1. setup()
    • Am inițializat componentele hardware utilizând pinii aleși
    • Am configurat o intrerupere folosind functia attachInterrupt() având ca parametru pinul butonului ce va declanșa melodia
  2. loop()
    • Citesc valorile primite de la senzorul de umiditate a solului(pinul A0) și senzorul de temperatură pentru a determina parametrii in funcție de care se vor declanșa funcțiile serei
    • Am printat aceste valori în interfața serială pentru a urmări mai ușor schimbările de mediu
int value = analogRead(A0);
Serial.println(value);
int chk = DHT.read11(DHT11_PIN);
Serial.print("Temperature = ");
Serial.println(DHT.temperature);
Serial.print("Humidity = ");
Serial.println(DHT.humidity);
delay(1000);
  • Temperatura determinata de senzorul DHT pornește sau oprește ventilatorul
  • Valorile citite de la senzorul de umiditate determină pornirea pompei de apă și schimbarea mesajului de pe diplay
  • Am delimitat 4 stări:
// 1. Pamantul e prea umed pentru starea optima a plantei
if(value < 300) {
  digitalWrite(WATER_PIN, LOW);
  lcd.setCursor(0, 0);
  lcd.print("Too much water!!!");
  lcd.setCursor(0, 1);
  lcd.print("I'm drowning...");
}
// 2. Conditii optime pentru dezvoltarea plantelor
else if (value > 300 && value < 850) {
  digitalWrite(WATER_PIN, LOW);
  lcd.setCursor(0, 0);
  lcd.print("I'm happy <3    ");
  lcd.setCursor(0, 1);
  lcd.print("Perfect soil   ");
} else {
// 3. Pamant uscat - se porneste pompa de apa pentru a uda plantele
  digitalWrite(WATER_PIN, HIGH);
  lcd.setCursor(0, 0);
  lcd.print("Drinking water...");
  lcd.setCursor(0, 1);
  lcd.print("Pretty dry here :( ");
  // 4. Pamantul este foarte uscat, deci pompa nu mai functioneaza 
  // => nu exista apa in rezervor: se va porni o alarma in acest caz
  if(value > 1010) {
    for (int thisNote = 0; thisNote < notes2; thisNote = thisNote + 2) {
    // alarm for extreme soil dryness
    // ...
    }
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Refill the tank!!!");
  }
}

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

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ă ;-).

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.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2023/dene/smartgreenhouse.1685270042.txt.gz · Last modified: 2023/05/28 13:34 by daria.ciobanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0