panoskeramidisDrRekt420
Published © GPL3+

Secure Watering System

A home or farm-field watering system that provides a security from intruders.

IntermediateWork in progress5,486
Secure Watering System

Things used in this project

Hardware components

Arduino MKR Fox 1200
Arduino MKR Fox 1200
×1
12V/29A Power Supply
OpenBuilds 12V/29A Power Supply
×2
PIR Motion Sensor (generic)
PIR Motion Sensor (generic)
×4
IRLZ44N
×2
Power Supply 6VDC 2.0A - US
RobotGeek Power Supply 6VDC 2.0A - US
aslo switches and supplies
×1

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Schematics

Extended

Scheme

Code

Untitled file

Arduino
#include <stdio.h>

#include <DS1302.h>

int time_vrish_mpalkoni = 10;

int time_vrish_kupos = 20;

#define hour_to_start 22

#define minute_to_start 22

int input_sensor_Pin = 8; 

int alarm_pin = 12;

const int kupos_vrish = 7;

int mpalkoni_vrish = 5;

const int button_auto_gardening = 6;

uint8_t RST_PIN = 11; 

uint8_t SDA_PIN = 10;

uint8_t SCL_PIN = 9; 

DS1302 rtc(RST_PIN, SDA_PIN, SCL_PIN);

int button_diagnostics = 0;

int lastbutton_diagnostics = 1;

unsigned long start_time_pressed = 0;

unsigned long end_time_pressed = 0;

unsigned long time_hold = 0; 

unsigned long time_to_release = 0;

unsigned long prev_millis = 0;

const int button_diagnostics_pin = 4;  

const int ledPin = 3; 

 

void watering(){  

  Serial.println("Start watering");

  digitalWrite(kupos_vrish, HIGH);

  delay(time_vrish_kupos*60000);

  digitalWrite(kupos_vrish, LOW);

  delay(100);

  

  Serial.println("Start watering vrish mpalkoni");

  digitalWrite(mpalkoni_vrish, HIGH);

  delay(time_vrish_mpalkoni*60000);

  Serial.println("end delay: ");

  digitalWrite(mpalkoni_vrish, LOW);

  delay(1000);

  Serial.println("Finish watering");

}

void watering_check_diagnostics(){

  Serial.println("Start watering check diagnostics");

  digitalWrite(kupos_vrish, HIGH);

  delay(60000);

  digitalWrite(kupos_vrish, LOW);

  delay(100);

  Serial.println("end delay vrish kupos ");

  

  Serial.println("Start watering vrish mpalkoni");

  digitalWrite(mpalkoni_vrish, HIGH);

  delay(60000);

  Serial.println("end delay vrish mpalkoni ");

  digitalWrite(mpalkoni_vrish, LOW);

  delay(100);

  Serial.println("Finish watering check");

}

void setup(){

  Serial.begin(9600);

  pinMode(alarm_pin, OUTPUT);      

  pinMode(input_sensor_Pin, INPUT);

  pinMode(button_diagnostics_pin, INPUT);

  pinMode(ledPin, OUTPUT);

  pinMode(button_auto_gardening, INPUT);

  pinMode(kupos_vrish, OUTPUT);

  pinMode(mpalkoni_vrish, OUTPUT);

  rtc.halt(false);

}

unsigned long CurrentTime = 5000000;

int button_auto_gardening_state = 0; 

int sensor = 0;    

void loop(){

  unsigned long currentMillis = millis();

  if(currentMillis - prev_millis >= 1000) {

    button_auto_gardening_state = digitalRead(button_auto_gardening);

    Time t = rtc.time();

    if (button_auto_gardening_state == HIGH) {

      if( t.min==minute_to_start&&t.hr==hour_to_start){

        watering();

      }

    }else{

      Serial.println("Switch off ");

    }

    

    Serial.print("Hour: ");

    Serial.print(t.hr);

    Serial.print(" Minute: ");

    Serial.println(t.min);

    prev_millis = currentMillis;

  }

  button_diagnostics = digitalRead(button_diagnostics_pin);

  if (button_diagnostics != lastbutton_diagnostics) {

      if (button_diagnostics == HIGH) {

          start_time_pressed = millis();

          time_to_release = start_time_pressed - end_time_pressed;

      } else {

          end_time_pressed = millis();

          time_hold = end_time_pressed - start_time_pressed;

          if (time_hold >= 0 && time_hold < 1000) {

              Serial.println("Button pressed"); 

              digitalWrite(ledPin, HIGH);

              delay(1000);

              digitalWrite(ledPin, LOW);

          }

          if (time_hold >= 1000) {

            watering_check_diagnostics();

          }

      }

  } 

  lastbutton_diagnostics = button_diagnostics;

  sensor = digitalRead(input_sensor_Pin);  

  if (sensor == HIGH) {            

      digitalWrite(alarm_pin, HIGH);  

      delay(100000)

      digitalWrite(alarm_pin, LOW);

  }

}

Credits

panoskeramidis
1 project • 2 followers
Contact
DrRekt420
1 project • 1 follower
Contact

Comments

Please log in or sign up to comment.