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

Arduino-Controlled Automated Irrigation System

View and Edit Project In Cirkit DesignerImage of Arduino-Controlled Automated Irrigation System

Circuit Documentation

Summary

The circuit in question is designed to monitor soil moisture levels using multiple SparkFun gator:soil sensors and control water pumps based on the moisture readings. An Arduino UNO microcontroller serves as the central processing unit, reading sensor data from its analog pins and controlling a 4-channel relay module that powers the water pumps. The relay module is used to switch the water pumps on or off depending on the moisture level detected by the sensors. The system is powered by a battery case.

Component List

Microcontroller

Sensors

Actuators

Power

Relays

Wiring Details

Arduino UNO

SparkFun gator:soil

5v mini water pump

My battery case

4 channel relay module

Documented Code

#include <Wire.h>

int AP2 = A2;
int IN2 = 2;
int moisture = 0;
String moistureString = "";
static const int sensorsTotal = 5;
static const uint8_t analogSensors[] = {A1, A2, A3, A4, A5};
static const int digitalOuts[] = {1, 2, 3, 4, 4};

void setup() {
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, HIGH);

  for (int i = 0; i < sensorsTotal; i++) {
    pinMode(analogSensors[i], INPUT);
    pinMode(digitalOuts[i], OUTPUT);
  }
  digitalWrite(LED_BUILTIN, LOW);
  Serial.println("Setup complete");
  digitalWrite(IN2, HIGH);
  delay(10000);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  for (int i = 0; i < sensorsTotal; i++) {
    moisture = analogRead(analogSensors[i]);
    Serial.print(i + 1);
    Serial.print("-");
    Serial.println(moisture);

    if (moisture > 450) {
      digitalWrite(digitalOuts[i], LOW);
    } else {
      digitalWrite(digitalOuts[i], HIGH);
    }
    moisture = 0;
  }
  digitalWrite(LED_BUILTIN, LOW);
  Serial.println("<><><><><><><>");
  delay(5000);
}

Code Explanation