Lavet af:
Mickas Louis Jensen – micje19
Magnus Emil Rømer – maroe18

https://cdn.discordapp.com/attachments/690126007071408167/838461146683670583/IMG_20210502_190118.jpg
Billede 1: Færdig bygget hardware

INTRODUKTION
I portefølje opgaven skulle vi finde en automatiseret løsning til et almindeligt problem.
Det problem vi gerne ville kigge på, var et intelligent plante groenings system. Som ville gøre det meget nemmere at gro en sund plante og sørge for den får vand og næring nok. Her tænker man nok hvorfor lige en plante? Vi synes det lå rimeligt godt til det med at være studerende og måske ikke have de mest grønne fingre i livet. Derfor lå det næsten perfekt til at vi skulle skabe et system der gør det meget nemmere at gro en plante, det store fokuspunkt i projektet er nemlig at vores system kan fortælle dig hvornår din plante trænger til noget vand.

DIAGRAMTEGNING OG GENNEMGANG AF OBJEKTER

https://cdn.discordapp.com/attachments/690126007071408167/838436156315140126/unknown.png
Billede 2: Diagramtegning af systemet
  • 1 x Arduino
  • 1 x L293D h-bro
  • 1 x passive buzzer 
  • 1 x photo resistor 
  • 1 x Soil humidity sensor
  • 1 x Temperature sensor
  • 1 x LCD display
  • 1 x 3-6 dc motor
  • 1 x Water level sensor
  • 1 x 9 volt battery and adapter
  • 3 x 220 ohm resistor
  • 1 x 10k ohm resistor
  • 1 x RGB led

Blæser
Her kører der en dc motor, der blæser duften af planten rundt i lokalet og simulerer vind for planten. Da nogle planter kan have godt af at få en smule vind for at gro bedre.

Lys sensor
Lys sensoren bliver brugt til at holde øje med hvor meget lys planten for i løbet af dagen, nogle planter vil gerne have meget direkte sol og andre planter vil gerne have en blanding af sol og skygge. Så for at holde øje med det, måler vi mængden af lys planten for i løbet af en dag.

Temperatur sensor
Temperatur sensor bliver brugt til at måle rummets temperatur, for at sikre at planten ikke er for kold eller for varm til at gro ordenligt.

Jordfugtigheds sensor
Jordfugtighedssensoren måler fugtigheden af jorden planten er i, for at vide hvornår planten har brug for vand eller andet.

Vandstands sensor
Vand Sensoren måler mængden af vand tilbage i beholderen, for at kunne fortælle bruger hvornår der skal hældes mere vand i systemet.

LCD Display
Displayet bliver brugt til at oplyse om de forskellige sensor, hvor varmt rummet er, mængden af vand og jordens fugtighed.

Power supply & batteri
Power supply bliver brugt til at tilføre systemet noget mere strøm, da med de mange komponenter der er i vores system. Begyndte system hurtigt at mangle mere strøm for at kunne køre alle processerne optimalt. Dertil var vi nød til at tilføje et batteri til vores H-Bro for at vores blæser fik nok strøm.

H-bro
Der bruges en H-bro til at give dc motoren strøm nok til at kunne kører rundt.

Lysdiode og lyd system
Ved hjælp af en farveskiftende led diode og en buzzer, kommunikere planten med brugeren. i tilfælde af at den mangler vand eller andet.

HARDWARENS SAMMENSÆTNING

https://cdn.discordapp.com/attachments/690126007071408167/838461144137334784/IMG_20210502_190107.jpg
Billede 3: Hardwarens sammensætning

Vi har valgt at samle alt vores ledning i en lille kasse hvor sensorene stikker ud fra siderne af og displayet kan tilgås på siden af kassen. Dernæst har vi tilføjet et hul i toppen af kassen hvori man kan se et lys der lyser henholdsvis rød, gul eller grøn alt efter hvorvidt det er tid til at vande planten. Kasse løsningen virker fint, og kassen kan lukkes for at give hele systemet et mere “clean” look.

KODE

#include <LiquidCrystal.h>

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
float temp;
float tempCon;
int tempPin = A2;
int val = 0;
int soilPin = A0;
int soilPower = 7;
const int pump1 = A5;
const int pump2 = A4;
int red_light_pin= 13;
int green_light_pin = 10;
int blue_light_pin = 9;
int LDRsens = A3;
int Sunval = 0;
int resval = 0;  
int respin = A1; 
unsigned long sunTime;
int inSun;

void setup() 
{
  pinMode(pump1, OUTPUT);
  Serial.begin(9600); 
  lcd.begin(16, 2);
  pinMode(soilPower, OUTPUT);
  digitalWrite(soilPower, LOW);
    pinMode(red_light_pin, OUTPUT);
  pinMode(green_light_pin, OUTPUT);
  pinMode(blue_light_pin, OUTPUT);
}

void loop() 
{
  Sunval = analogRead(LDRsens);
  Serial.print(Sunval);
  digitalWrite(pump1, HIGH);

  soilMoist();
  delay(3000);
  lcd.clear();

  waterLev();
  delay(3000);
  lcd.clear();
  readTemp();
  delay(3000);
  lcd.clear();

  sunFunc();
  delay(3000);
  lcd.clear();
}

int readSoil()
{

    digitalWrite(soilPower, HIGH);
    delay(10);
    val = analogRead(soilPin);
    digitalWrite(soilPower, LOW);
    return val;
    val = map(val, 0, 1023, 0, 255);
}

int sunFunc() {
  lcd.print("Time in sun = ");
  if(Sunval > 400){
  sunTime = millis()/1000;
  inSun = sunTime;
  lcd.print(sunTime);
  lcd.print(" S");
  } else if(Sunval < 400) {
    lcd.print(inSun);
    lcd.print(" S");
  }
} 

int waterLev() {
  lcd.print("WATER LEVEL: ");

  lcd.setCursor(0, 1);

  resval = analogRead(respin);
  if (resval <= 100) {
    lcd.print("Empty ");
    tone(8, 240, 2000); 
  } else if (resval > 100 && resval <= 155) {
    lcd.print("Low ");
    tone(8, 640, 2000); 
  } else if (resval > 155 && resval <= 170) {
    lcd.print("Medium ");
  } else if (resval > 170) {
    lcd.print("High ");
  }
}

int soilMoist() {
  lcd.print("Soil Moisture = ");    

lcd.setCursor(0, 1);
lcd.print(readSoil());
if (val <= 200) {
    RGB_color(255, 0, 0); // Red
    digitalWrite(pump1, LOW); 
    lcd.clear();
    lcd.print("Water me!!");
    delay(10000);
  } else if (val > 200 && val <= 400) {
    RGB_color(255, 255, 0); // Yellow
    digitalWrite(pump1, LOW); 
  } else if (val > 400 && val <= 800) {
    RGB_color(0, 0, 255); // Blue
  } else if (val > 800) {
    RGB_color(0, 255, 0); // Green
  }
}

int readTemp() {
  temp = analogRead(tempPin);

   temp = (temp * 0.48828125);
   tempCon = (temp - 32)*5/9; 
  
   lcd.print("TEMPERATURE = ");
   lcd.print(tempCon);
   lcd.print("*C");
   lcd.println();
}

void RGB_color(int red_light_value, int green_light_value, int blue_light_value)
 {
  analogWrite(red_light_pin, red_light_value);
  analogWrite(green_light_pin, green_light_value);
  analogWrite(blue_light_pin, blue_light_value);
}

FLOWCHARTS

https://cdn.discordapp.com/attachments/690126007071408167/838632886247620618/Vand_niveau.png
Billede 4: Flowchart over vandmålerens funktioner

https://cdn.discordapp.com/attachments/690126007071408167/838635083795529788/Temperatur.png
Billede 5: Flowchart over temparatur målerens funktioner
https://cdn.discordapp.com/attachments/690126007071408167/838641919798149120/jordfugtighed_2.png
Billede 6: Flowchart over Jord fugtighedsmålerens funktioner
https://cdn.discordapp.com/attachments/690126007071408167/838625235519144016/LCD_Display.png
Billede 7: Flowchart over LCD displayets funktioner
https://cdn.discordapp.com/attachments/690126007071408167/838620284764028968/Sollys.png
Billede 8: Flowchart over LDR sensorens funktioner

VIDEO

https://drive.google.com/file/d/1A66HkDMq2-lujFqs-VNX767JlD_F7J5v/view?usp=sharing

PROBLEMER
Vi havde oprindeligt en drøm om at vi istedet for at have en blæser på planten ville vi have at en vandpumpe blev drevet istedet. Grundet hardware fejl af uforklarlige årsager kunne dette desværre ikke lykkedes.
Derudover løb vi ind i nogle strømsvigts problemer da vi havde tilføjet vores fjerde komponent til systemet. Dette løste vi dog hurtigt ved tilføjelsen af en power supply som nemt kunne tilføjes til breadboarded.

KONKLUSION
Systemet vi har lavet fungere godt til at tjekke status af ens plante og forholdene rundt omkring den. Uheldigvis lykkedes vi ikke med pumpe delen. Den fungere også godt til at give alarm når planten mangler vand, og virker godt hvis man har nogle planter der skal have meget specifikke forhold. Den automatisk vandingsdel mangler hvilket ville have gjort plantepasningen fuldstændig automatisk, men vi er kommet frem men en halv automatisk løsning som stadig er smart og kan være god til den glemsomme sjæl.

PERSPEKTIVERING
Vi kunne forbedre vores system ved at introducere Blynk appen, dette ville gøre det muligt at kigge på statusen af planten på ens telefon og dertil evt. tænde en vandpumpe som vi ellers også gerne ville have tilføjet. Man kunne også tilføje hjul eller en eller anden form for vippe funktion så planten kunne bevæge sig efter solen og altid få sollys hvis man havde en plante type der krævede det.

Leave a Reply