Автополив на arduino: схемы подключения, программный код

Делаем автополив растений с помощью Arduino

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

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

Необходимые инструменты и периферия для реализации проекта «Автополив» на базе микроконтроллера Arduino

Ирригатор – устройство, контролирующее влажность почвы. Приспособление передает данные на датчик влажности, который укажет сконструированному автополиву на начало работы. Для составления программы используется язык программирования С++.

Таблица с требуемыми материалами:

Компонент Описание
Микроконтроллер Arduino Uno Платформа соединяет периферийные устройства и состоит из 2 частей: программная и аппаратная. Код для создания бытовых приборов программируется на бесплатной среде – Arduino IDE.

Чтобы составить и внедрить программу на микроконтроллер, необходимо приобрести usb-кабель. Для автономной работы следует купить блок питания на 10 В.

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

USB-кабель Обязателен в конструировании системы «автополив на ардуино» для переноски кода.
Плата для подключения сенсора – Troyka Shield С помощью платы подключается сенсорная периферия посредством обычных кабелей. По краям располагаются контакты по 3 пина – S + V + G.
Нажимной клеммник Служит фиксатором для пучковых проводов. Конструкция фиксируется с помощью кнопки на пружине.
Блок питания, оснащенный usb-входом

Анализатор влажности почвы

Идеальное средство для подключения платформ. В конструкции предусмотрен фонарик, который говорит о начале работы.

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

● MAX глубины для погружения в землю – 4 см;

● MAX потребление электроэнергии – 50 мА;

● Напряжения для питания – до 4 В.

Помпа с трубкой для погружения в воду Управление осуществляется с помощью коммутатора. Длина кабеля достигает 2 метров.
Силовой ключ Создан для замыкания и размыкания электрической цепи. Если использовать приспособление при конструировании автополива ардуино, не потребуется дополнительных спаек. Подключение к основной панели осуществляется также 3 проводами.
Соединительный провод – «отец-отец» Несколько проводов соединяют периферийные устройства.
Соединительный провод – «мать-отец» Проводки также соединяют устройства периферии.
Комнатный цветок Система пригодна для разного типа комнатных растений.

Схема подключения и алгоритм работы в проекте «Автополив» на базе мк Arduino

Ниже представлен алгоритм и схема подключения проекта на платформе arduino. Автополив строится следующим образом:

  1. Помещаем плату для сенсора на микроконтроллер.
  2. Подключаем анализатор влажности с помощью платы, описанной выше, к аналогичному пину – А0.
  3. Присоединяем сенсор к микроконтроллеру:
    1. Контакт CS подключается к пину № 9 на плате.
    2. Дисплейные контакты SPI соединяются с соответствующим разъемом на той же плате.
  4. Силовой ключ вставляем в пин №4.
  5. Коммутатор подводим к силовому ключу в разъемы, обозначаются буквами p+, p-.
  6. Теперь подключаем водяную помпу с трубкой с помощью клеммника в контакты с буквами l+ и l-. Постепенно перед конструирующим человеком построится схема.
  7. Втыкаем сенсорную панель, анализирующую влажность, в горшок с цветком.
  8. Конец трубки вставляем с водой в почву. В случае, если растение вместе с горшком по весу не превышает 2 кг, закрепляем шланг отдельно. Иначе водяная капель может опрокинуть цветок.
  9. Опускаем водяную помпу в бутылку, наполненную водой.
  10. Подключаем конструкцию к электрическому питанию.

Ниже предлагаем вам две альтернативные схемы для нашего устройства:

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

  1. Записываем сведения, выведенные на дисплей. При этом сенсор воткнут в сухой горшок. Это обозначается, как min влажности.
  2. Поливаем землю с растением. Ждем, когда вода до конца пропитает почву. Тогда показания на сенсорном экране покажут один уровень. Необходимо записать полученные сведения. Это значит max влажности.
  3. В записном блокноте фиксируем константы HUM_MIN и HUM_MAX тем значением, которое было получено в результате калибровки. Прописываем значения в программе, которую переносим затем на микроконтроллер.

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

В шланге от помпы проделываются 25 сантиметровые отверстия с помощью шила. В полученные дырочки втыкаются кусочки стержней ручек шарикового формата. В итоге получается:

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

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

Пример кода для Arduino для проекта «Автополив»

Переходим к программированию кода:

Дополнительно вы можете посмотреть пару интересных видео от наших коллег:


На этом на сегодня всё. Отличных вам проектов!

Собираем автополив на Arduino. Часть 2: написание кода и возможные проблемы

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

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

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

Самая простая установка для автополива – это сама плата Arduino, датчик влажности, оповещающий о состоянии почвы (сухая или влажная), соединительные провода, модуль реле и водяной насос (помпа).

Кстати, все компоненты для успешной сборки и реализации системы автополива вы можете найти на нашем сайте! Амперкот.ру

Принцип работы: если земля сухая, то подается команда на включение реле – цепь замыкается, и подается питание на помпу, и вуаля! Насос включается, и происходит полив. После чего земля становится влажной – подается команда выключить реле, и полив прекращается. Включение и выключение реле происходит благодаря установке на контактах этого модуля низкого или высокого логического уровня. Использовать нужно тот модуль, который питается от 5 вольт. Это не означает, что другие не подойдут, просто в данном проекте это самый оптимальный и удобный вариант.

Вот эти модули у нас будут упоминаться при написании кода:

– плата Arduino (нужно задать необходимые настройки в среде разработки: раздел «инструменты»)

Сначала мы создаем три переменных типа integer. В первой указывается подключение датчика влажности к контакту А0, во второй мы будем хранить полученные значения с датчика, в третьей хранится номер контакта, к которому подключается реле (в нашем случае – цифровой контакт с номером 4).

Далее мы подключаем монитор порта для получения данных с датчика влажности (это нам нужно еще и для того, чтобы протестировать полученную схему и выявить при каком значении с датчика влажности почвы нам необходим полив), там же устанавливается и скорость передачи данных через последовательный порт – 9600 бит в секунду. Не забывайте, что такая же скорость должна стоять и в самом мониторе порта, который вы откроете для просмотра данных. Он выглядит так, как на картинке ниже:

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

В цикле void loop() идет считывание значений влажности с датчика, и они выводятся на экран вашего компьютера через монитор порта. Я выбрал крайнее значение в 700. Если в данный момент времени оно будет меньше или равно такому, то включается реле (подается максимальный логический уровень, подача пяти вольт с платы Ардуино, что вызывает замыкание цепи в модуле реле и включается насос для полива.

Это реализовано в коде через конструкцию из условия по типу (if,else)

Соответственно если меньше 700 (if), то выполняется нужное нам действие, если иначе(else), то реле остается выключенным. Задержка в 2 секунды играет существенную роль, так как если почва сухая, то идет полив в течение некоторого времени и происходит замер показаний. Так как у нас это все происходит в цикле, то полив не будет останавливаться, пока почва не станет влажной на столько, на сколько нам это нужно.

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

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

Также есть проблема с датчиком влажности и вообще с измерениями влажности в почве. На то, нужен ли полив, влияет очень много факторов, и влажность почвы только один из них. Более того, датчик влажности, который использован в нашей схеме довольно дешевый, а его щупы легко способны окисляться под действием влаги и химических элементов в почве (происходит коррозия), поэтому использовать долго его не получится. Мы еще не проверяли как долго он протянет, но готовы этим заняться:)

Есть решение – покупка более дорогого, но уже емкостного датчика влажности почвы. Принцип его работы будет основан на изменении электрической емкости плоского конденсатора в модули из-за разной диэлектрической проницаемости вещества между его обкладками.

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

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

МНОГОКАНАЛЬНЫЙ АВТОПОЛИВ НА ARDUINO СВОИМИ РУКАМИ

18.08.18 Версия 1.5: исправлены ошибки
17.04.19 Версия 2.0: новая логика меню, более гибкие таймеры! ЗАМЕНИТЕ СТАРЫЕ ВЕРСИИ БИБЛИОТЕК НОВЫМИ ИЗ ПАПКИ!
20.04.19 Версия 2.1: добавлено автоотключение подсветки дисплея (включается по любому действию с энкодера)

05.06.2019 Исправлена схема версии 2+!

КОНТРОЛЛЕР УМНОЙ ТЕПЛИЦЫ

Наши ответы на ваши вопросы

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

  • Вопрос: зачем тогда нужен таймер и все эти настройки? Мой проект не об этом, мой проект о таймере
  • С датчиками влажности МИКРОКОНТРОЛЛЕР ВООБЩЕ НЕ НУЖЕН. Почему? Как? Смотрите ЗДЕСЬ
  • Все жалуются на дождь. В видео звучало слово “теплица” и “рассада”, там не идёт дождь
  • Китайские датчики влажности почвы разъедаются почвой, так как сделаны не из золота!

Да, согласен, нужна одна помпа и клапана на каналы! Добавил прошивку auto-pumps_valve, читайте описание в начале скетча, там всё написано!

Многоканальная система автополива растений для установки в умную теплицу, на огород или в квартиру. Особенности:

  • Поддержка от 1 до 15 помп (Arduino NANO / UNO)
  • Индивидуальная настройка периода и времени работы
  • Дисплей 1602 с отображением настроек
  • Индивидуальное название каждого канала (можно по-русски!)
  • Удобное управление и настройка энкодером
  • Хранение настроек в энергонезависимой памяти
  • Настройка уровня управляющего сигнала
  • Настройка часы/минуты/секунды работы
  • Параллельный режим работы / очередь

ПОДРОБНОЕ ВИДЕО ПО ПРОЕКТУ

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

Понятные схемы, OpenSource прошивки с комментариями и подробные инструкции это очень большая работа. Буду рад, если вы поддержите такой подход к созданию Ардуино проектов! Основная страница пожертвовать – здесь.

ИНСТРУКЦИИ ПО ЭКСПЛУАТАЦИИ

  • Нажатие на ручку энкодера – переключение выбора помпы/периода/времени работы
  • Поворот ручки энкодера – изменение значения
  • Кнопка энкодера удерживается при включении системы – сброс настроек

Версия 2.*
ПЕРЕД ПРОШИВКОЙ ВТОРОЙ ВЕРСИИ ЗАМЕНИТЕ ВСЕ БИБЛИОТЕКИ НОВЫМИ (ИДУТ В АРХИВЕ ПРОЕКТА, В ПАПКЕ НОВАЯ ВЕРСИЯ).
Поворачивая рукоятку энкодера мы перемещаем стрелочку выбора по экрану. Обратите внимание на то, что настройка времени работы помпы находится правее «за экраном», нужно пролистать стрелочку направо чтобы её активировать. Чтобы изменить выбранный стрелочкой параметр, нужно повернуть рукоятку энкодера, удерживая её нажатой. Таким образом можно настроить время периода и работы помпы в формате ЧЧ:ММ:СС. Логика работы настроек PUPM_AMOUNT, START_PIN, SWITCH_LEVEL и PARALLEL такая же как для версии 1.*

  • Поворот ручки энкодера – изменение позиции стрелки
  • Поворот ручки энкодера удерживая её нажатой – изменение значения
  • Кнопка энкодера удерживается при включении системы – сброс настроек

Автоматический полив растений arduino

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

Для создания системы полива нам понадобиться:

  • Обрабатывающее устройство – по старой традиции у нас за него будет arduino uno
  • Датчик влажности почвы – модуль arduino
  • Помпа(Водяной насос) – водяной насос так же можно купить в Китае или сделать самому. По скольку напряжение помпы у меня 12 вольт включать буду с помощью реле.
  • Другие важные мелочи – шланг меленького диаметра, емкость для воды, провода, источник питания.

Сразу что бы не питать иллюзий скажу, подключать к водопроводу все это дело мы не будем. Что бы избежать нештатных ситуаций, для простоты и удобства будем использовать резервуар(емкость с водой). Из резервуара воду будет качать насос(помпа), небольшой мощности будет достаточно, я буду использовать самодельную помпу с питанием 12 вольт. Хотя при подборе помпы стоит учесть: изгибы шланга, расстояние от насоса до поливаемого растения, тип насоса. В подборе шланга сложного ничего нет, выбираем по диаметру выходного отверстия помпы, но он должен быть не сильно широкий на выходе к растению. При построении системы нужно учесть тип полива, считается оптимальным капельный полив. Исходя из этого приспосабливают свободный конец шланга от помпы.

2. Датчик влажности почвы

Датчик влажности почвы измеряет влажность и выводит аналоговым сигналом от 0 до 1023 либо цифровым(0 или 1). Мы будем использовать аналоговый сигнал для большего контроля меняющейся влажности. Значение 0 это максимум влажности, 1023 максимум сухой. Мы будем использовать значение 200 – достаточная влажность, значение 600 – критическая сухость. Пороги влажности и сухости при необходимости можно изменить в скетче arduino. Сам датчик состоит из двух частей: щуп(опускается в землю) и компаратор. Записывается датчик от 3.3 до 5 вольт, можно использовать встроенный разъем arduino.

Схема компаратора на LM393:

Данные получаются по сигнальному проводу a0 и подключается следующим образом:

3. Практическая реализация

Логика работы: раз в секунду(можно сделать более долгие промежутки) arduino получает значение влажности с датчика. При получении значения больше 550 и если помпа не работала ближайшие 15 минут arduino включает реле(к которому подключен насос) на время time_work. Задержка 15 минут между поливами сделана для того что бы влага успела впитаться в почву и помпа перекачала больше воды чем надо. Переменная time_work устанавливает время работы помпы, это время за которое ваш насос успеет выкачать нужное количество воды вашему растению.
После полива устанавливается задержка 15 минут для работы помпы, при этом arduino продолжает следить за влажностью. А дальше все циклично. Со временем сделаю датчик уровня воды, что бы помпа не включалась если в резервуаре мало воды и выдавалась индикация.

Собственно сам код:

На сегодня всё, спасибо всем за внимание! Ждем ваших комментариев.

Источники:

http://amperkot.ru/blog/automatic-watering2/

http://alexgyver.ru/auto-pumps/

http://radio-blogs.ru/blog/arduino/avtomaticheskiy-poliv-rasteniy-arduino

http://arduinoplus.ru/buduschee-2116/

Ссылка на основную публикацию