Автоматический полив растения (скоро Новый год)

Тема в разделе "Глядите, что я сделал", создана пользователем Вячеслав, 24 дек 2012.

  1. Megakoteyka

    Megakoteyka Оракул Модератор

    Можно поискать клапан в тех же автомагазинах - в машинах этого добра хватает, нужно только подходящий найти.
     
  2. Dima85

    Dima85 Нерд

    А может кто-то поделится исходниками этого проекта?
    Пластинки у вас не окисляются от влажной почвы?
    Как вариант можно упросить, и поливать по времени, допустим включать моторчик 1 раз в 2 дня на 30 секунд.
     
  3. Вот соглашусь, насчет полива по времени. Возможно это даже будет лучше, по опыту предновогоднего использования, датчик влажности измеряет влажность весьма относительно. Сильно зависит от глубины и от почвы. Про окисления пока не могу сказать но думаю окислятся и показания изменятся.
     
  4. Испытание помпы на высоту подъема.

     
  5. Вот и код, я его немного поменял, теперь при необходимости полива, 10 секунд лью воду, потом 5 мин. жду, потом опять мерю влажность и "по кругу".
    Код (Text):

    /*
      AnalogReadSerial
      Reads an analog input on pin 0, prints the result to the serial monitor.
      Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.
     
      # the sensor value description
      # 0  ~650  dry soil
      # 650~700  humid soil
      # 700~800  in water
     */
     int redLed=12;
     int greenLed=10;
     int blueLed=8;
     int waterPump=3;
     int sensorValue;
     int waterMax=800;
     int waterMin=650;
     
    // the setup routine runs once when you press reset:
    void setup() {
      // initialize serial communication at 9600 bits per second:
      Serial.begin(9600);
       pinMode(redLed, OUTPUT);
       pinMode(blueLed, OUTPUT);
       pinMode(blueLed, OUTPUT);
       pinMode(waterPump, OUTPUT);  
    }
     
    // the loop routine runs over and over again forever:
    void loop() {
      // read the input on analog pin 0:
      sensorValue = analogRead(A0);
      // print out the value you read:
      Serial.println(sensorValue);
      if (sensorValue<=waterMin) {
          digitalWrite(redLed, HIGH);
          digitalWrite(greenLed, LOW);
          digitalWrite(blueLed, LOW);
          //полив
          digitalWrite(waterPump, HIGH);
          delay(10*1000); //льем 10 секунд
          digitalWrite(waterPump, LOW);
          delay(5*60*1000); //ждем пять минут
      } else if ((sensorValue>waterMin)&(sensorValue<=waterMax)) {
          digitalWrite(redLed, LOW);
          digitalWrite(greenLed, HIGH);
          digitalWrite(blueLed, LOW);
          digitalWrite(waterPump, LOW);
      } else if (sensorValue>waterMax) {
          digitalWrite(redLed, LOW);
          digitalWrite(greenLed, LOW);
          digitalWrite(blueLed, HIGH);
          digitalWrite(waterPump, LOW);
      }
      delay(100);       // delay in between reads for stability
    }
     
     
  6. Dima85

    Dima85 Нерд

    Вячеслав, насколько я понимаю у вас RS-360SH, по документации он поднимает до 2 метров.
    В видео услышал вы говорили о прожорливости мотора, подскажите пожалуйста а сможет ли Arduino потянуть допустим 5 таких моторчиков подсоединенных к 5v на Arduino плате?
    С Arduino ничего не случится? К сожалению я еще долек от всего этого, интересно какие приделы у Arduino?

    Вячеслав, спасибо большое за код.
     
  7. evklid1

    evklid1 Нуб

    поставить реле...и вперёд) хоть киловатники
     
  8. evklid1

    evklid1 Нуб

    а вообще система интересна)) ...по сути можно уростить поставив емкость выше, и электроклапан на открытие закрытие)...и вообще использовать как автономную поливалку на даче в теплице
     
    catrigik нравится это.
  9. АРДУИНО и одну не потянет, если попробуете запитать помпу от выхода дуни. То ни чего не получиться, дуня перегрузиться, помпе нужен большой ток. Поэтому она и стоит через реле. А вот через реле, как уже ответили, сколько хочешь, столько и включай.
     
  10. Все верно, но на два метра у меня стремянки нет. Просто был вопрос, поднимет ли она на подоконник? Поднимет.
     
  11. Можно, вот еще бы ссылку на такой клапан, я нашел только от аквариумов, но они дорогие.
     
  12. evklid1

    evklid1 Нуб

    ок...позже буду обязательно скину)) и кое что ещё)
     
  13. Спасибо.
     
  14. evklid1

    evklid1 Нуб

  15. evklid1

    evklid1 Нуб

    ...вот только 12в
     
  16. evklid1

    evklid1 Нуб

    sanik нравится это.
  17. evklid1

    evklid1 Нуб

    была мысль сделать свою теплицу автономной),т.е бывал только в выходные, а растения за неделю без полива начинали себя плохо чувствовать, помидоры с огурцами я люблю зимой покушать, не хотелось их терять)да и урожайность увеличить...но , то одно ,то другое(( так что то всё в мечтах и осталось.
     
  18. Яков

    Яков Нуб

    Во, супер) Запитаем от блока питания и будем подавать. Спасибо за усилия)
     
  19. Пром. испытания показали:
    1. Человек сидящий рядом с помпой пугается когда она включается, поэтому добавлена функция звукового предупреждения. Перед тем как включать помпу проигрываем музыку.
    2. Очень странно работает функция Delay()!!!!! Delay(30000) - отрабатывает а Delay(40000) не отрабатывает, не ругается, просто не возвращается из делея, Такое впечатление, что Delay использует не unsigned long (как написано в описании) а int! Поэтому изменен алгоритм полива.
    Новый скетч:
    Код (Text):
    /*
      AnalogReadSerial
      Reads an analog input on pin 0, prints the result to the serial monitor.
      Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.
     
      # the sensor value description
      # 0  ~650 dry soil
      # 650~700 humid soil
      # 700~800 in water
      # Спикер на D4
    */
    int redLed=12;
    int greenLed=10;
    int blueLed=8;
    int speaker=4;
    int waterPump=3;
    int sensorValue;
    int waterMax=800;
    int waterMin=650;
     
    // the setup routine runs once when you press reset:
    void setup() {
      // initialize serial communication at 9600 bits per second:
      Serial.begin(9600);
      pinMode(redLed, OUTPUT);
      pinMode(blueLed, OUTPUT);
      pinMode(blueLed, OUTPUT);
      pinMode(waterPump, OUTPUT);
      pinMode(speaker, OUTPUT);
    }
     
     
    void Musik() {
    tone(speaker, 700, 300);
    delay(600);
    tone(speaker, 700, 300);
    delay(600);
    tone(speaker, 780, 150);
    delay(300);
    tone(speaker, 700, 150);
    delay(300);
    tone(speaker, 625, 450);
    delay(600);
    tone(speaker, 590, 150);
    delay(300);
    tone(speaker, 520, 150);
    delay(300);
    tone(speaker, 460, 450);
    delay(600);
    tone(speaker, 350, 450);
    delay(600);
    delay(600);
    tone(speaker, 350, 450);
    delay(600);
    tone(speaker, 460, 450);
    delay(600);
    tone(speaker, 520, 150);
    delay(300);
    tone(speaker, 590, 150);
    delay(300);
    tone(speaker, 625, 450);
    delay(600);
    tone(speaker, 590, 150);
    delay(300);
    tone(speaker, 520, 150);
    delay(300);
    tone(speaker, 700, 1350);
    delay(1800);
    tone(speaker, 700, 300);
    delay(600);
    tone(speaker, 700, 300);
    delay(600);
    tone(speaker, 780, 150);
    delay(300);
    tone(speaker, 700, 150);
    delay(300);
    tone(speaker, 625, 450);
    delay(600);
    tone(speaker, 590, 150);
    delay(300);
    tone(speaker, 520, 150);
    delay(300);
    tone(speaker, 460, 450);
    delay(600);
    tone(speaker, 350, 450);
    delay(600);
    delay(600);
    tone(speaker, 350, 450);
    delay(600);
    tone(speaker, 625, 450);
    delay(600);
    tone(speaker, 590, 150);
    delay(300);
    tone(speaker, 520, 150);
    delay(300);
    tone(speaker, 700, 450);
    delay(600);
    tone(speaker, 590, 150);
    delay(300);
    tone(speaker, 520, 150);
    delay(300);
    tone(speaker, 460, 1350);
    delay(5000);
    }
     
     
    // the loop routine runs over and over again forever:
    void loop() {
      // read the input on analog pin 0:
      sensorValue = analogRead(A0);
      // print out the value you read:
      Serial.println(sensorValue);
      if (sensorValue<=waterMin) {
          digitalWrite(redLed, HIGH);
          digitalWrite(greenLed, LOW);
          digitalWrite(blueLed, LOW);
          //полив
          Musik();
          digitalWrite(waterPump, HIGH);
          delay(5*1000); //льем 5 секунд
          digitalWrite(waterPump, LOW);
          delay(30*1000); //ждем 30 секунд
      } else if ((sensorValue>waterMin)&(sensorValue<=waterMax)) {
          digitalWrite(redLed, LOW);
          digitalWrite(greenLed, HIGH);
          digitalWrite(blueLed, LOW);
          digitalWrite(waterPump, LOW);
      } else if (sensorValue>waterMax) {
          digitalWrite(redLed, LOW);
          digitalWrite(greenLed, LOW);
          digitalWrite(blueLed, HIGH);
          digitalWrite(waterPump, LOW);
      }
      delay(100);       // delay in between reads for stability
    }
     
    sanik нравится это.