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.
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.
Lista pieselor:
Mediu de dezvoltare: Arduino IDE
Biblioteci folosite:
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);
if(DHT.temperature > 20) { digitalWrite(FAN_PIN, HIGH); } else { digitalWrite(FAN_PIN, LOW); }
// 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!!!"); } }
if (interruptCount > 0) {
lcd.clear(); lcd.setCursor(0, 0); lcd.print("Cool music :) "); lcd.setCursor(0, 1); lcd.print("Shake it off "); playMusic(); interruptCount = 0; }
și am afișat pe LCD timpul trecut de la pornirea sistemului serei
const unsigned long interval = 86400000; unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; digitalClockDisplay(); delay(1000); lcd.setCursor(0, 1); lcd.print("Music o'clock "); playMusic(); } void digitalClockDisplay() { lcd.clear(); lcd.setCursor(0, 0); printDigits(hour()); lcd.print(":"); printDigits(minute()); lcd.print(":"); printDigits(second()); }
Realizarea acestui proiect mi-a oferit o înțelegere mai profundă a materiei și a aspectelor practice ale acesteia, în special cele legate de interconectarea și utilizarea componentelor hardware. Astfel, am reușit să creez un produs funcțional și util, îmbinând ideea proiectului cu pasiunea mea pentru plante. În timpul procesului, am întâmpinat mici probleme, cum ar fi sincronizarea LCD-ului cu informațiile primite de la senzor, dar și implementarea întreruperilor, unde am fost nevoită să adaug un delay pentru a elimina efectul de debouncing. Am depasit provocarile intampinate si am obținut o implementare eficientă și un produs fizic pe care îl voi utiliza cu bucurie pe viitor.