Автополив для комнатных растений на Arduino

Arduino — автономный автополив на 1-12 комнатных растений

Всем привет!

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

Видео по моим системам автополива:

Первая система:

IMG_20210322_211108.jpg
IMG_20210929_220042 (2).jpg

Если интерес остался, то дальше, собственно говоря, буду излагать свои мысли на тему систем автополива и опишу свой проект.

Мысли на тему концепции системы

У AlexGyvera было 2 проекта, связанных с автополивом: простейшая система на Digspark на 1 помпу и многоканальная система с дисплеем и кучей наворотов. Начал я с копирования простой системы. Мой опыт изложен в соответствующем разделе форума, повторяться не буду, вот ссылка:
https://dachniymir.ru/threads/Простой-автополив.35/

Многоканальную систему реализовывать не стал, т.к. для меня важным моментом была автономность. Не хочу что-то оставлять включенным в розетку на несколько недель, когда уезжаю в командировку или в отпуск. Супергибкие настройки через энкодер лично мне не особо нужны. Потратить пару минут несколько раз в год, чтобы перепрошить Ардуину для меня не проблема. Регулярно менять настройки у меня нет необходимости. В то же время мне понравилась идея системы с дисплеем. В простой системе на Digispark как раз не хватало информации о текущих настройках и оставшемся времени до ближайшего срабатывания.
Я решил сделать что-то среднее между этими 2-мя системами.

Многие добавляют в системы автополива датчики влажности почвы. В моем понимании такие датчики должны быть в системах полива для открытого грунта, чтобы не поливать растения, если недавно был дождь. В квартире можно подобрать оптимальные интервалы и продолжительность полива и нет необходимости усложнять систему лишними элементами.

В итоге родились следующие требования к системе:

  1. Автономная работа минимум 1 месяц
  2. Должна быть возможность настраивать количество поливаемых растений
  3. Время срабатывания помп должно настраиваться с точностью до часа
  4. Должно быть информирование:
    • Текущие настройки для каждой помпы
    • Сколько дней осталось до срабатывания каждой помпы
    • Уровень заряда аккумулятора
    • Индикация, что идет зарядка аккумулятора от солнечной батареи

Мой проект

Система состоит из 3х помп. Настройки работы каждой помпы задаются отдельно. Маленькие помпы можно использовать с гребенками — разветвителями на 3-4 крана. В итоге можно поливать до 12 растений. Помимо программных настроек работы помп, дополнительные настройки делаются кранами.

На дисплей выводится следующая «таблица»: строки – номера помп, столбцы информация по каждой помпе.

  • ПР – период работы. Раз в сколько дней будет срабатывать помпа.
  • ЧР- час работы. Указывается час (например «19» — помпа сработает в 19:00), кода сработает помпа.
  • ВР – время работы помпы. Указывается в секундах на сколько включится помпа.
  • ДО – дней осталось. Через сколько дней произойдет ближайший полив.
  • Также выводится текущие время и дата

Можно программно отключить 2 и/или 3 помпу, тогда выводится информация только по активным помпам.

Меры по обеспечению автономности:

  • 3 аккумулятора 18650
  • Питание от солнечной батареи
  • Ардуино уходит в Powerdown и просыпается по Watсhdog
  • У Ардуино выпаял стабилизатор напряжения
  • Дисплей Nokia
  • Дисплей находится в выключенном состоянии, включается только после удержания кнопки, после этого через некоторое время опять выключается
  • Все индикаторы либо выпаяны с модулей, либо вынесены на панель и включаются только при удержании кнопок.

Детали:

  • Корпус из коробки для еды за 40р из Ашана
  • Arduino nano
  • Дисплей Nokia
  • Модуль часов DS3231
  • Аккумуляторы 18650 в холдере
  • Повышающий модуль до 5В
  • Понижающий модуль до 3,3В для дисплея
  • Модуль зарядки аккумулятора TP4056
  • Индикатор зарядки аккумулятора
  • Солнечная батарея
  • Электролитические и керамические конденсаторы, резисторы, светодиоды, полевые транзисторы
  • Кнопки и выключатели

Схема
Plant_water 1.1_bb.jpg

Сначала использовал Мосфет модули с Али, но они много места занимали, решил сделать батарею из Мосфетов с обвязкой из резисторов разъемы для крепления проводов винтами.

В целях энергосбережения отпаял у модуля DS3231 светодиод Power (1). Также конструкция модуля предполагает, что будут использованы аккумуляторные батарейки CR2032. Если вы используете обычные, то нужно отпаять резистор (2), иначе модуль будет постоянно заряжать обычную батарейку, тем самым убивая её.
DS3231.JPG

Общий алгоритм работы программы:

  • Просыпаемся по Вотчдогу
  • Снимаем текущие данные по времени и дате
  • Если дата изменилась, считаем количество прошедших дней для каждой помпы
  • Если число прошедших дней совпадает с периодом работы в настройках — проверяем час.
  • Если час с модуля времени равен часу указанному в настройках для помпы, подаем напряжение на Пин помпы далее задержка кода (равная интервалу полива из настроек), отключаем напряжение на Пине, сбрасываем счетчик прошедших дней для данной помпы.
  • В каждом цикле уходим в сон
  • При удержании кнопки активизируется дисплей и отображает информацию. При смене минуты в модуле времени дисплей отключается.

Хотел бы услышать ваши рекомендации по доработке.

Скетч и библиотеки

§

Всем привет!

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

Видео по моим системам автополива:

Первая система:

IMG_20210322_211108.jpg
IMG_20210929_220042 (2).jpg

Если интерес остался, то дальше, собственно говоря, буду излагать свои мысли на тему систем автополива и опишу свой проект.

Мысли на тему концепции системы

У AlexGyvera было 2 проекта, связанных с автополивом: простейшая система на Digspark на 1 помпу и многоканальная система с дисплеем и кучей наворотов. Начал я с копирования простой системы. Мой опыт изложен в соответствующем разделе форума, повторяться не буду, вот ссылка:
https://dachniymir.ru/threads/Простой-автополив.35/

Многоканальную систему реализовывать не стал, т.к. для меня важным моментом была автономность. Не хочу что-то оставлять включенным в розетку на несколько недель, когда уезжаю в командировку или в отпуск. Супергибкие настройки через энкодер лично мне не особо нужны. Потратить пару минут несколько раз в год, чтобы перепрошить Ардуину для меня не проблема. Регулярно менять настройки у меня нет необходимости. В то же время мне понравилась идея системы с дисплеем. В простой системе на Digispark как раз не хватало информации о текущих настройках и оставшемся времени до ближайшего срабатывания.
Я решил сделать что-то среднее между этими 2-мя системами.

Многие добавляют в системы автополива датчики влажности почвы. В моем понимании такие датчики должны быть в системах полива для открытого грунта, чтобы не поливать растения, если недавно был дождь. В квартире можно подобрать оптимальные интервалы и продолжительность полива и нет необходимости усложнять систему лишними элементами.

В итоге родились следующие требования к системе:

  1. Автономная работа минимум 1 месяц
  2. Должна быть возможность настраивать количество поливаемых растений
  3. Время срабатывания помп должно настраиваться с точностью до часа
  4. Должно быть информирование:
    • Текущие настройки для каждой помпы
    • Сколько дней осталось до срабатывания каждой помпы
    • Уровень заряда аккумулятора
    • Индикация, что идет зарядка аккумулятора от солнечной батареи

Мой проект

Система состоит из 3х помп. Настройки работы каждой помпы задаются отдельно. Маленькие помпы можно использовать с гребенками — разветвителями на 3-4 крана. В итоге можно поливать до 12 растений. Помимо программных настроек работы помп, дополнительные настройки делаются кранами.

На дисплей выводится следующая «таблица»: строки – номера помп, столбцы информация по каждой помпе.

  • ПР – период работы. Раз в сколько дней будет срабатывать помпа.
  • ЧР- час работы. Указывается час (например «19» — помпа сработает в 19:00), кода сработает помпа.
  • ВР – время работы помпы. Указывается в секундах на сколько включится помпа.
  • ДО – дней осталось. Через сколько дней произойдет ближайший полив.
  • Также выводится текущие время и дата

Можно программно отключить 2 и/или 3 помпу, тогда выводится информация только по активным помпам.

Меры по обеспечению автономности:

  • 3 аккумулятора 18650
  • Питание от солнечной батареи
  • Ардуино уходит в Powerdown и просыпается по Watсhdog
  • У Ардуино выпаял стабилизатор напряжения
  • Дисплей Nokia
  • Дисплей находится в выключенном состоянии, включается только после удержания кнопки, после этого через некоторое время опять выключается
  • Все индикаторы либо выпаяны с модулей, либо вынесены на панель и включаются только при удержании кнопок.

Детали:

  • Корпус из коробки для еды за 40р из Ашана
  • Arduino nano
  • Дисплей Nokia
  • Модуль часов DS3231
  • Аккумуляторы 18650 в холдере
  • Повышающий модуль до 5В
  • Понижающий модуль до 3,3В для дисплея
  • Модуль зарядки аккумулятора TP4056
  • Индикатор зарядки аккумулятора
  • Солнечная батарея
  • Электролитические и керамические конденсаторы, резисторы, светодиоды, полевые транзисторы
  • Кнопки и выключатели

Схема
Plant_water 1.1_bb.jpg

Сначала использовал Мосфет модули с Али, но они много места занимали, решил сделать батарею из Мосфетов с обвязкой из резисторов разъемы для крепления проводов винтами.

В целях энергосбережения отпаял у модуля DS3231 светодиод Power (1). Также конструкция модуля предполагает, что будут использованы аккумуляторные батарейки CR2032. Если вы используете обычные, то нужно отпаять резистор (2), иначе модуль будет постоянно заряжать обычную батарейку, тем самым убивая её.
DS3231.JPG

Общий алгоритм работы программы:

  • Просыпаемся по Вотчдогу
  • Снимаем текущие данные по времени и дате
  • Если дата изменилась, считаем количество прошедших дней для каждой помпы
  • Если число прошедших дней совпадает с периодом работы в настройках — проверяем час.
  • Если час с модуля времени равен часу указанному в настройках для помпы, подаем напряжение на Пин помпы далее задержка кода (равная интервалу полива из настроек), отключаем напряжение на Пине, сбрасываем счетчик прошедших дней для данной помпы.
  • В каждом цикле уходим в сон
  • При удержании кнопки активизируется дисплей и отображает информацию. При смене минуты в модуле времени дисплей отключается.

Хотел бы услышать ваши рекомендации по доработке.

Скетч и библиотеки

Полив комнатных растений автоматически с помощью arduino

// установим все датчики влажности PIN ID

intmoisture1=A0;

intmoisture2=A1;

intmoisture3=A2;

intmoisture4=A3;

// объявим значения влажности

intmoisture1_value=0;

intmoisture2_value=0;

intmoisture3_value=0;

intmoisture4_value=0;

// установим выход реле для клапанов

intrelay1=3;

intrelay2=4;

intrelay3=5;

intrelay4=6;

// установим выход реле на насос

intpump=2;

voidsetup(){

  // Объявим реле, как выход

  pinMode(relay1,OUTPUT);

  pinMode(relay2,OUTPUT);

  pinMode(relay3,OUTPUT);

  pinMode(relay4,OUTPUT);

  // Объявим насос, как выход

  pinMode(pump,OUTPUT);

  // Откроем порт для мониторинга

  Serial.begin(9600);  

}

voidloop(){

// читаем значения с датчиков влажности

moisture1_value=analogRead(moisture1);

moisture2_value=analogRead(moisture2);

moisture3_value=analogRead(moisture3);

moisture4_value=analogRead(moisture4);

// проверяем, какое растение нуждается в воде

// и расскоментируйте нужную строчку для конкретного клапана

// установите значение требуемой влажности

//if(moisture1_value<=450){

// digitalWrite(relay1, HIGH);

//}

//if(moisture2_value<=450){

// digitalWrite(relay2, HIGH);

//}

//if(moisture3_value<=450){

// digitalWrite(relay3, HIGH);

//}

//if(moisture4_value<=450){

// digitalWrite(relay4, HIGH);

//}

digitalWrite(pump,HIGH);

digitalWrite(relay1,HIGH);

delay(500);

digitalWrite(relay2,HIGH);

delay(500);

digitalWrite(relay3,HIGH);

delay(500);

digitalWrite(relay4,HIGH);

delay(500);

digitalWrite(relay1,LOW);

delay(500);

digitalWrite(relay2,LOW);

delay(500);

digitalWrite(relay3,LOW);

delay(500);

digitalWrite(relay4,LOW);

digitalWrite(pump,LOW);

delay(500);

// убедитесь, что есть хотя бы одно растение, которое нуждается в воде

// если есть, включите насос

//if(moisture1_value<=450 || moisture2_value<=450 || moisture3_value<=450 || moisture4_value<=450){

//  digitalWrite(pump, HIGH);

//}

// Оросите растение в течении 5 с

//delay(5000);

// Выключите насос

//digitalWrite(pump, LOW);

// Пройдитесь по каждому клапану и выключите их

//digitalWrite(relay1, LOW);

//digitalWrite(relay2, LOW);

//digitalWrite(relay3, LOW);

//digitalWrite(relay4, LOW);

// Подождите 5 минут и повторите процесс

//Serial.println(moisture1_value);

//delay(10000);

//delay(300000);

}

Шаг 1. комплектующие

Для проекта системы полива растений на Ардуино Уно вам понадобится:

  • Резистор 10к
  • Реле
  • Потенциометр
  • Перемычки
  • Сенсорный датчик
  • Датчик влажности почвы
  • 5В водяной насос
  • ЖК-дисплей LCD 16×2

Вам также понадобится:

Шаг 2. подключение компонентов

При установке компонентов не забывайте использовать макет стандартного формата, чтобы все поместилось в корпусе.

Шаг 4. создание корпуса

Ниже вы найдете в архиве 3D-модель корпуса этой системы полива растений. Все перечисленные выше компоненты должны идеально поместиться внутри. Если вы хотите создать свой собственный корпус, убедитесь, что вы очень хорошо измерили размеры ЖК-дисплея и сенсорного датчика, чтобы можно было сделать корпус, который подходит им без проблем. Надеемся, что вы знакомы с 3D-печатью.

После того, как вы закончите распечатывать корпус, вы готовы все установить. Сначала мы делаем нижнюю часть, на которой мы прикрепляем все компоненты. Обрезаем картон по размерам основания корпуса. Следующим шагом является размещение ЖК-дисплея и сенсорного датчика в специальных вырезах в корпусе.

Если вы использовали прикрепленный файл для 3D-модели, компоненты будут идеально вписываться в вырез. В некоторых случаях вам придется подрихтовать края выреза, корпус слишком жесткий. Убедитесь, что соединительные провода достаточно длинные, чтобы не допустить вытягивания ЖК-дисплея.

Используйте скотч, чтобы закрепить сенсорный датчик на внутренней стороне корпуса. Используйте достаточное количество клейкой ленты, чтобы при прикосновении к ней датчик не ослабел. Теперь мы ставим водяной насос и датчик влажности почвы. Отсоедините перемычки от датчика и насоса и протяните их через отверстие в верхней части.

Последний шаг — размещение макета в корпусе. Поставьте корпус на бок и аккуратно поместите макет внутрь. Будьте осторожны, не нажимайте слишком сильно, чтобы провода не отсоединились. Возьмите картонный вырез, чтобы закрыть дно. Закрепите края лентой.

Шаг 5. итоговый результат (видео)

На этом всё. Желаем вам успехов и новых изобретений.

Оцените статью
Дачный мир