Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

Arduino UNO Based Automated Garden Monitoring and Watering System

View and Edit Project In Cirkit DesignerImage of Arduino UNO Based Automated Garden Monitoring and Watering System

Circuit Documentation

Summary

The circuit in question is designed to monitor environmental conditions such as soil moisture, ambient light, temperature, and humidity. It utilizes an Arduino UNO as the central microcontroller to process sensor data and control peripherals like a relay module and an LCD display. The system is capable of reading soil moisture levels using a Soil Moisture Sensor, ambient light using an LDR module, and temperature and humidity using a DHT11 sensor. Based on the sensor readings, the Arduino can trigger relays to control external devices, and it displays the sensor data on an LCD screen with I2C communication.

Component List

Arduino UNO

Soil Moisture Sensor

DHT11 Humidity and Temperature Sensor

Module LDR (Light-Dependent Resistor)

4 Channel Relay Module

LCD Screen 16x2 I2C

Wiring Details

Arduino UNO

Soil Moisture Sensor

DHT11 Humidity and Temperature Sensor

Module LDR

4 Channel Relay Module

LCD Screen 16x2 I2C

Documented Code

#include<LiquidCrystal_I2C.h>
#include "DHT.h"
#define DHTPIN 2 
#define DHTTYPE DHT11 

int a;
int ldr= 3;
int moist_sensor = A0 ;
int relaymoist = 5 ;
int relaydht = 6;
int relayldr = 7; 

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27,16,2);

void setup()
{
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(7,OUTPUT);
  Serial.begin(9600);
  dht.begin();
  lcd.begin(16,2);
  lcd.backlight();
  lcd.setBacklight(HIGH);
  lcd.setCursor(0,0);
  lcd.print("Water");
  lcd.setCursor(6,0);
  lcd.print("Temp");
  lcd.setCursor(11,0);
  lcd.print("Humid");
}

void loop()
{
  delay(500);
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  int intensity = digitalRead(ldr);
  int moisture = analogRead(moist_sensor);

  lcd.setCursor(6,1);
  lcd.print(t);
  lcd.setCursor(12,1);
  lcd.print(h);

  if (intensity == LOW){
    digitalWrite(relayldr,HIGH);
  }
  else if(intensity == HIGH ){
    digitalWrite(relayldr,LOW);
  }
  if(t>=30){
    digitalWrite(relaydht,LOW);
  }
  else if(t<30){
    digitalWrite(relaydht,HIGH);
  }
  
  if (moisture>=900)
  {
    digitalWrite(relaymoist, LOW );
    lcd.setCursor(2,1);
    lcd.print("1 ");
    Serial.print("1 ");

  }
  
  else if(moisture>=850 && moisture<900)
  {
    digitalWrite(relaymoist, LOW );
    lcd.setCursor(2,1);
    lcd.print("2 ");
    Serial.print("2 ");

  }
  else if(moisture>=800 && moisture<850)
  {
    digitalWrite(relaymoist, LOW );
    lcd.setCursor(2,1);
    lcd.print("3 ");
    Serial.print("3 ");


  }
  else if(moisture>=750 && moisture<800)
  {
    digitalWrite(relaymoist, LOW );
    lcd.setCursor(2,1);
    lcd.print("4 ");
    Serial.print("4");

  }
  else if(moisture>=700 && moisture<750)
  {
    digitalWrite(relaymoist, LOW );
    lcd.setCursor(2,1);
    lcd.print("5 ");
    Serial.print("5");

  }
  else if(moisture>=650 && moisture<700)
  {
    digitalWrite(relaymoist, LOW );
    lcd.setCursor(2,1);
    lcd.print("6 ");
    Serial.print("6");

  }
  else if(moisture>=550 && moisture<650)
  {
    digitalWrite(relaymoist, HIGH );
    lcd.setCursor(2,1);
    lcd.print("7 ");
    Serial.print("7");

  }
  else if(moisture>=500 && moisture<550)
  {
    digitalWrite(relaymoist, HIGH );
    lcd.setCursor(2,1);
    lcd.print("8 ");
    Serial.print("8");

  }
  else if(moisture>=450 && moisture<500)
  {
    digitalWrite(relaymoist, HIGH );
    lcd.setCursor(2,1);
    lcd.print("9 ");
    Serial.print("9");

  }
  else if(moisture>=400 && moisture<450)
  {
    digitalWrite(relaymoist, HIGH );
    lcd.setCursor(2,1);
    lcd.print("10");
    Serial.print("10");

  }
  
  Serial.print("|");
  Serial.print(t);
  Serial.print("C");
  Serial.print("|");
  Serial.print(h);
  Serial.print("%");
  Serial.println("|");
}

This code is responsible for initializing the sensors and LCD, reading sensor data, and controlling the relay module based on the sensor inputs. It also displays the moisture level, temperature, and humidity on the LCD screen and outputs the data to the serial monitor.