Автоматизация полива огорода

AANDREE
Offline
Зарегистрирован: 25.02.2015

Всем желаю здравия!

Задумал проект по организации полива огорода в автоматическом режиме. Кто поможет? Оплатить работу могу на YANDEX деньги, на карты альфа-банка и сбербанка.

 

 

AANDREE
Offline
Зарегистрирован: 25.02.2015

На всякий случай мои контакты: 903 724 88 30

Почта 7248830 @ gmail.com

carduino.ru
Offline
Зарегистрирован: 06.12.2011

Какой бюджет?

AANDREE
Offline
Зарегистрирован: 25.02.2015

Я новичок в этом деле. В расценках не разбираюсь. Могу предположить исходя из стоимости 1000 руб/час. Мастер, думаю, за час управится должен. Если не прав - исправьте.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Такой датчик - долго не выживет, мерить надо на переменке. В остальном - у меня такая система работала прошлым летом. Сейчас сделал просто периодическое затопление с сифонным сливом: датчик не нужен. Вот сделать отсечку по минимальному уровню в баке - пока не собрался...

К баку с насосом понадобится реле или мосфет на 5 вольт, т.к. с ардуины сигнал слабенький... Научитесь их включать (и выключать без фейерверка), с остальным поможем. :) Насосы - либо мембранные (шумят), либо аквариумные помпы на асинхронниках (brushless).

bwn
Offline
Зарегистрирован: 25.08.2014

У вас несоответствие между названием ТЗ и описательной частью. Что надо поливать - огород или цветочный горшок? Это очень разные исполнительные механизмы. А код я думаю и сами набросаете с помощью сообщества.

com
Offline
Зарегистрирован: 06.09.2013

а время как определять? нужны часы. будут часы - нужна их настройка, то есть экран с кнопками

AANDREE
Offline
Зарегистрирован: 25.02.2015

Часы не нужны. Обход датчиков влажности планирую осуществлять один раз в сутки (длительностью 5-10 сек). По поводу несоответствия между названием ТЗ и описательной частью - абсолютно без разницы. Для полива будет использоваться насос на 12в. Который можно купить в любом автомагазине.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

AANDREE пишет:

Часы не нужны. Обход датчиков влажности планирую осуществлять один раз в сутки (длительностью 5-10 сек).

Ну, попробуйте вот такой скетч у себя запустить... Влажность, снимаемая с датчика, настраивается параметрами window01.dry = 630; window01.moist = 643; обход датчиков - несколько чаще.

#include <EEPROM.h>
#include <avr/power.h>

#define analogPin 3 // potentiometer connected to analog pin 3
#define PumpPin   7
#define WaterPin  8
#define TestPin   9 // LED connected to digital pin 9
#define LED_PIN  13

byte WaterState = 0;

typedef struct {
  unsigned int dry;
  unsigned int moist;
  int val;         // variable to store the read value
  unsigned int pump;
  boolean alarm;
  byte count;
  byte maxcount;
} 
Soil_t;

// some timers
unsigned long SENSOR_READTIME = 90000;
unsigned long old_millis = 0;
unsigned long WaterMillis = 0;

Soil_t window01;

void setup() {

  //  630 - 640 = moist soil; 550 = slightly dry soil
  window01.dry   = 630;
  window01.moist = 643;
  window01.val = 0;
  window01.pump = 0;
  window01.alarm = false;
  window01.count = 0;
  window01.maxcount = 4;
  Serial.begin(9600);
  pinMode(TestPin, OUTPUT);   // sets the pin as output
  pinMode(PumpPin, OUTPUT);   // sets the pin as output
  pinMode(analogPin, INPUT);   // sets the pin as inpout
  digitalWrite(analogPin, LOW);   //
  window01.val = analogRead(analogPin);   // read the input pin
  delay(100);
  Serial.println("Sketch was loaded at " __DATE__); 

}

void loop()
{
    /* Toggle the LED */
  //  digitalWrite(LED_PIN, !digitalRead(LED_PIN));
  // delay(200);
  //  digitalWrite(LED_PIN, !digitalRead(LED_PIN));
  // delay(200);

  /* Collect sensor data */
  if( millis() - old_millis > SENSOR_READTIME ){
    old_millis = millis();

    // debug LED signal
    // digitalWrite(LED_PIN, HIGH);
    Serial.println( millis() );
   
    // take on test-signal
    analogWrite(TestPin, 128);  // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
    delay(200);
    window01.val = analogRead(analogPin);   // read the input pin

    // take off test-signal
    analogWrite(TestPin, 0);  // analogRead values go from 0 to 1023, analogWrite values from 0 to 255

    // Dry? Alarm! First action.
    if ( window01.val < window01.dry && window01.val > 360 ) {
      Serial.print("Soil is Dry!");
      window01.pump = 4500;
      window01.alarm = true;
    }

    // Not moist?
    if ( window01.val < window01.moist && window01.alarm == true ) {
    //  Serial.println("Soil is not moist.");
      window01.pump = 3500;
    }

    if ( window01.val > window01.moist && window01.alarm == true ) {
      window01.alarm = false;
    }

    // Debug print
    Serial.print( window01.pump ); Serial.print(" :: "); Serial.print( window01.alarm );
    Serial.print(" :val: "); Serial.println( window01.val );

    // Pump
    if (window01.pump > 0 ) {
      digitalWrite(PumpPin, HIGH);   //
      delay(window01.pump);
      digitalWrite(PumpPin, LOW);   //
      window01.pump = 0;
      window01.count++;
      if (window01.count >= window01.maxcount) {
        window01.alarm = false;
      }
    }

    digitalWrite(LED_PIN, LOW);

  } // end of millis

} // end of loop

 

AANDREE
Offline
Зарегистрирован: 25.02.2015

Спасибо за код. Надо попробовать. Только я еще не разобрался куда датчик влажности втыкать.