Автоматическая оросительная система на Arduino Uno

Наверняка многие из вас любят выращивать какую-нибудь зелень у себя дома или на даче. При этом растения, в отличие от животных, достаточно неприхотливы и могут спокойно расти без вашего надзора в течение достаточно продолжительного времени. Но, тем не менее, растения могут погибнуть если уровень влажности почвы, на которой они растут, будет низким в течение продолжительного времени (неделя и более). Если вы находитесь постоянно дома, то поливать растения каждый день не представляет особого труда. Но что делать если вы уехали в отпуск или командировку на достаточно продолжительное время?

Внешний вид автоматической оросительной системы на Arduino Uno

В данной статье мы рассмотрим создание автоматической оросительной системы (Automatic Irrigation System) на основе платы Arduino Uno и датчика влажности (Moisture sensor) почвы, которая будет автоматически поливать ваши растения и поддерживать оптимальный уровень влаги в почве во время вашего отсутствия. Систему можно использовать как в домашних условиях внутри помещений, так и в вашем саду. Также на нашем сайте вы можете посмотреть аналогичный проект системы полива растений с самодельным датчиком влажности почвы, выводом сообщений на экран ЖК дисплея и оповещениями о работе системы с помощью SMS.

Принцип работы автоматической оросительной системы

Логика работы нашей оросительной системы будет достаточно проста. Датчик влажности будет измерять уровень влаги в почве и когда этот уровень будет достаточно низок, то с помощью платы Arduino Uno будет подаваться сигнал на водяной насос (water pump), который будет подавать воду в почву и тем самым орошать наши растения. После подачи воды уровень влаги в почве будет повышаться и когда он достигнет необходимого уровня, датчик влажности обнаружит это и будет подан сигнал на остановку водяного насоса.

Датчик влажности почвы (Soil Moisture Sensor)

Внешний вид датчика влажности почвы

Принцип работы датчика влажности почвы достаточно прост – он содержит 2 зонда с оголенными контактами, которые работают как резистор с переменным сопротивлением – их сопротивление изменяется в зависимости от уровня влаги в почве. Сопротивление данных зондов обратно пропорционально влажности почвы, то есть чем выше содержание влаги почвы, тем лучше ее проводимость и тем меньше ее сопротивление. Низкий уровень влаги в почве свидетельствует о ее плохой проводимости и, следовательно, ее большом сопротивлении. Датчик обеспечивает на своем выходе уровень аналогового напряжения, пропорциональный сопротивлению почвы.

Датчик поставляется вместе с электронным модулем, который упрощает его подключение к плате Arduino. Данный электронный модуль содержит компаратор с высокой точностью на основе микросхемы LM393, преобразующий аналоговый сигнал в цифровой, который в дальнейшем и подается на плату Arduino (или любой другой микроконтроллер).

Водяной насос

Внешний вид водяного насоса

В данном проекте мы использовали небольшой водяной насос, который вполне справится с орошением ваших домашних растений, его можно подключать напрямую к плате Arduino. Но в данном случае мы его подключили к плате Arduino с помощью модуля реле чтобы обеспечить универсальность схемы. Дело в том, что если вы захотите использовать подобную систему для орошения вашего сада, то в данном случае маленький насос, использованный нами, уже не справится с орошением больших объемов и почвы и вам будет необходим водяной насос значительно большего размера. Запитываться такой насос будет уже от сети переменного тока. В этом случае вам всего лишь будет необходимо заменить источник постоянного тока в нашей схеме (батарейку) на питание от сети переменного тока, а плату Arduino запитать от отдельного источника постоянного тока, а вся логика работы нашей оросительной системы останется точно такой же.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Модуль датчика влажности почвы (купить на AliExpress).
  3. Модуль реле 5v (купить на AliExpress).
  4. Маленький водяной насос (мini water pump with small pipe) с питанием от 6v (купить на AliExpress).
  5. Батарейка.
  6. Соединительные провода.

Внешний вид компонентов, необходимых для сборки проекта, показан на следующем рисунке.

Внешний вид компонентов, необходимых для сборки проекта

Схема проекта

Схема автоматической оросительной системы на основе платы Arduino Uno представлена на следующем рисунке.

Схема автоматической оросительной системы на основе платы Arduino Uno

Для питания схемы мы использовали внешний источник питания – батарейку. Можно использовать батарейку на 9v или 12v. Батарейка подключается к контактам Vin и ground платы Arduino. Водяной насос получает питание от батарейки через модуль реле. Выход датчика влажности почвы подключен к аналоговому контакту платы Arduino.

Сборка конструкции проекта

Подключите контакт VCC модуля реле к контакту 5v платы Arduino, а землю (ground) модуля реле – к земле платы. Затем подключите сигнальный контакт модуля реле к любому цифровому контакту платы Arduino кроме контакта 13. В нашем случае мы подключили его к контакту 3 как показано на рисунке ниже.

Подключение модуля реле к плате Arduino

На следующем шаге подключите датчик влажности почвы к плате Arduino. Соедините VCC и gnd датчика с контактами 5volt и ground платы. Аналоговый выход датчика подключите к любому аналоговому контакту платы Arduino, в данном случае мы его подключили к контакту A0.

Подключение датчика влажности почвы к плате Arduino

Затем подключите водяной насос к модулю реле. Модуль реле обычно имеет 3 точки подключения: общий провод, нормально замкнутый и нормально разомкнутый контакты. Нам необходимо подключить положительный вывод водяного насоса к общему контакту реле, а нормально разомкнутый контакт реле – к положительному выводу батареи. Далее необходимо подключить землю водяного насоса к земле Arduino и подключить небольшой шланг к водяному насосу.

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

Объяснение программы для Arduino

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

В данном проекте мы не будем использовать никаких подключаемых библиотек, только базовые функции. В начале кода программы объявим две переменные целого типа, одну для хранения значения влажности почвы, а вторую – для конвертированного в проценты значения влажности почвы.

Далее в функции setup() зададим режимы работы используемых контактов и инициализируем последовательную связь для целей отладки.

Основную часть программы мы начнем со считывания значения с датчика влажности почвы с помощью функции analogRead(A0). Считанное значение мы будем сохранять в переменной soilMoistureValue – оно будет в диапазоне от 0 до 1023.

Далее мы конвертируем это значение в проценты (то есть в диапазон от 0 до 100) с помощью функции map. То есть экстремально сухой почве будет соответствовать значение 0%, а экстремально влажной – 100%.

Калибровка датчика влажности почвы

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

После загрузки этой программы в плату Arduino откройте окно монитора последовательной связи (serial monitor). Поместите датчик влажности в очень сухую почву или просто подержите его на воздухе – запишите полученное значение в окне монитора последовательной связи и поставьте его вместо значения 490 в функцию map в основной программе нашего проекта.

Затем поместите датчик влажности в очень влажную почву или воду, запишите полученное значение в окне монитора последовательной связи и поставьте его вместо значения 1023 в функцию map в основной программе нашего проекта. Эти значения и будут калибровочными для вашего датчика влажности почвы.

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

После получения значения влажности почвы в процентах мы можем на основе этого значения управлять водяным насосом. Если значение влажности почвы будет менее 10% мы будем включать водяной насос при помощи подачи низкого уровня напряжения (LOW) на контакт 3 платы Arduino и выводить соответствующее сообщение в окно монитора последовательной связи.

Когда измеренная влажность почвы окажется более 80% (это будет свидетельствовать о том, что почва в достаточной степени насыщена водой) плата Arduino будет выключать водяной насос и выводить сообщение ‘pump off’ в окно монитора последовательной связи.

Сообщения, свидетельствующие о включении водяного насоса

Тестирование работы оросительной системы

Мы поместили всю собранную конструкцию проекта кроме водяного насоса и датчика влажности почвы в пластиковый контейнер как показано на рисунке ниже.

Пластиковый контейнер для проекта нашей оросительной системы

После того как программная и аппаратная части проекта будут готовы можно приступить к тестированию работы проекта. Поместите датчик влажности почвы как можно ближе к корням растений для более высокой точности работы системы.

Установка датчика влажности почвы рядом с растением

На заключительном шаге поместите водяной насос в емкость, наполненную водой. Теперь ваша автоматическая система полива растений готова к работа и готова позаботиться о ваших растениях когда вас нет рядом.

Тестирование работы оросительной системы

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

Исходный код программы (скетча)

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
119 просмотров


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *