Автоматический полив своими руками на Ардуино
Автоматический капельный полив на Ардуино представляет собой автоматизированную систему мониторинга параметров почвы и окружающей среды. В зависимости от полученных данных осуществляется управление исполнительными устройствами: включение/выключение водяных насосов для капельного полива растений. Такая система отлично подходит для автономного полива цветов дома и в саду в когда хозяева в отпуске, или для тех кто просто хочет переложить часть своих задач на роботов :) Более совершенные системы климат-контроля содержат в себе датчики по измерению концентрации углекислого газа в воздухе, датчики температуры и влажности воздуха, а для поддержания определенного уровня вышеперечисленных показателей в них могут использоваться различные вентиляторы и обогреватели.
В этой статье рассмотрим создание простейшей системы автоматического полива своими руками, базирующейся на плате Arduino. В последующих статьях (можете называть их уроками) будем совершенствовать схему, добавляя большее количество возможностей и функционала. При этом вы можете начинать сборку автополива с любой части данного обучающего цикла: если описываемое устройство уже подходит под вашу задачу, то приступайте к его созданию вместе с нами.
Микроконтроллер Arduino в системе полива представляет “мозг” всего устройства, осуществляющий сбор данных об окружающей среде, их анализ и генерацию электрических импульсов на своих выводах для управления исполнительными устройствами (водяной насос). Определимся с необходимыми компонентами для сборки автоматизированного полива, но для начала предлагаем вам прочесть вводный теоретический абзац.
Плата Arduino Nano базируется на 8-битном микроконтроллере ATMega328p с тактовой частотой 16 МГц: да, это не так много в сравнении с процессором вашего персонального компьютера и даже мобильного телефона, но по-прежнему очень неплохо для разработки несложных устройств из мира Интернета вещей (Умного дома). Выводы Ардуино бывают разные: цифровые, аналоговые, а также контакты питания. Если вкратце, то на выводах Arduino можно как создавать, так и генерировать напряжение. Оно ограничено диапазоном от 0 до 5 вольт постоянного тока, поскольку логика микроконтроллера основана на 5 вольтах. Чтобы считывать напряжение двух типов: 0 или 5 вольт — используются цифровые входы (контакты с D0 по D13). Эти же порты можно использовать в режиме “выход”, чтобы создавать на них напряжение двух типов: 0 или 5 вольт. Это дискретные выводы: логической единице соответствует 5 вольт, а логическому нулю 0 вольт. Если нужно считывать аналоговый сигнал (любое напряжение в диапазоне от 0 до 5 вольт), то используются аналоговые входы (от A0 до A7 для платы Arduino Nano). Преобразование аналоговых сигналов в цифровые происходит во встроенном 10-битном аналого-цифровом преобразователе (АЦП) внутри микроконтроллера. Возможностей для создания аналогового сигнала, то есть аналоговых выходов, на Arduino попросту нет, поэтому используется их имитация: цифровой сигнал, сгенерированный посредством широтно-импульсной модуляции (ШИМ): это позволяет создавать на определенных выходах (на плате Nano это контакты D3, D5, D6, D9, D10, D11) Arduino напряжение из диапазона 0…5 вольт (например, 2,5 или 3,5 вольта). К чему был этот рассказ? К тому, что через считывание напряжения Ардуино получает информацию от других устройств, например, датчиков или кнопок. А с помощью генерации напряжения отдает команды исполнительным устройствам: это могут быть дисплеи, электромеханические реле или база транзистора. Некоторые устройства не могут “общаться” исключительно через цифровые или аналоговые сигналы: зачастую, это чуть более сложная связь, организованная через различные интерфейсы. Самые популярные из них поддерживаются платой Arduino: среди них I2C, UART, SPI.
В системе автоматического полива важны три составляющие: управляющий контроллер, устройства считывания данных об окружающей среде и исполнительные устройства. С первым пунктом мы уже разобрались — в этом плане будет использоваться плата Ардуино (в последующих частях цикла речь уже пойдет про работу с Wi-Fi контроллерами вроде ESP8266 и ESP32). Для считывания данных нам нужен аналоговый датчик влажности почвы (гигрометр), а для того, чтобы осуществлять капельный полив, нужен небольшой водяной насос (помпа), работающий от 5 вольт. К контроллеру Ардуино можно подключить огромное количество электронных устройств, но не все из них безопасно подключать: если такой модуль может потреблять силу тока более 40 мА, то стоит воздержаться от подключения напрямую. Датчик влажности почвы потребляет небольшой ток, а вот водяной насос лучше подключить через модуль реле — устройство для управления высокомощной нагрузкой, имеющее опторазвязку для защиты контроллера от перепадов тока.
Также важны некоторые нюансы:
1) Реле могут быть твердотельными либо электромеханическими. Последние являются наиболее популярными, обладают низкой стоимостью и издают характерный щелчок при замыкании/размыкании цепи (само изменение в электрической цепи происходит с помощью поданного с контроллера Arduino цифрового сигнала напряжением в 0 или 5 вольт в зависимости от того, какое состояние работы реле нужно установить). Твердотельные считаются бесшумными, более надежными и дорогими. Остановимся в данном проекте на электромеханических реле. При необходимости вы без труда сможете заменить одно на другое: на программном коде это отразится незначительно. Водяной насос подразумевает, что к нему будет подведена трубка для забора воды из некой емкости и для того, чтобы эту воду направлять в сторону нашего растения. Достаточно просто это реализовать с помощью капельных трубочек (капельницы).
2) Датчик влажности почвы будет постоянно находиться в почве и взаимодействовать с очень агрессивной для его металлических обкладок средой. Чтобы снизить вероятность коррозии (которая несомненно приведет к снижению эффективности модуля, а в дальнейшем к его выходу из строя), можно использовать несколько методов: применение датчика с дополнительным защитным слоем и его питание импульсами с периодичностью 1 раз в 30 минут или 1 раз в 6 часов (это значение вы сможете затем поменять в программном коде): чем реже, тем лучше, ведь процесс коррозии наступает исключительно в процессе активной работы датчика под напряжением. Используемый в проекте датчик имеет емкостный метод измерений, который обеспечивает ему вполне высокую точность. На самом корпусе контактного щупа отмечена белая линия, до которой рекомендуется погружать датчик в землю.
3) Не забудьте, что для прошивки платы Ардуино нужен кабель: для Arduino Nano это miniUSB-USB. А для подключения к ней модулей необходимы соединительные провода (перемычки).
Итак, имеем следующий список комплектующих для системы автоматического полива:
— Плата Arduino Nano и кабель к ней для подключения к компьютеру;
— Беспаечная макетная плата для быстрой сборки схем;
— Блок питания 5В либо отсек для 4-х батареек АА (+ сами батарейки)
— Датчик влажности почвы с защитным покрытием;
— Одноканальное электромеханическое реле, работающее от 5 вольт;
— Водяной насос для полива, 5В.
— Соединительные провода (мама-папа, папа-папа).
Где купить все вышеперечисленные компоненты? Все компоненты, необходимые для повторения описываемого в этой статье проекта, а также - для воплощения десятков других проектов вы найдете в специальных наборах для изучения Arduino GyverKIT Pro.
Почему это выгодно?
- Во-первых, все компоненты собраны в коробку, где их удобно хранить до востребования и ничего не потеряется (в отличии от кучи пакетов с алиэкспресс)!
- Во-вторых, когда вы соберете автополив, вы, вероятно захотите создать еще что-нибудь полезное. В набор входит 140 комплектующих, лишь небольшая часть которых уйдет на автоматический полив. С помощью остального вы сможете собрать еще десяток других полезных и интересных проектов.
- В-третьих, цена всех комплектующих с Али с доставкой будет составлять примерно ту же стоимость, что и наш набор Gyverkit PRO. Только нужно будет ждать и не будет гарантии работоспособности.
А еще в комплект входит код для доступа в закрытую базу данных на сайте kit.alexgyver, где собрано множество интересных проектов на базе набора.
После того, как все компоненты будут у вас на руках, можно приступать к первому этапу сборки системы автополива. Для этого воспользуйтесь беспаечной макетной платой (входит в набор GyverKIT Pro). Благодаря этой плате вы легко соберете рабочую электрическую схему без использования паяльника и других инструментов, сможете все протестировать и заранее устранить ошибки при подключении, прежде чем все это спаять.
Схема сборки автоматического капельного полива:
Несколько пояснений к схеме: цвет проводов ничего не означает в том плане, что по своим характеристикам все провода одинаковые, однако цветовая маркировка позволяет легче ориентироваться (красные провода используются для обозначения положительного контакта питания, а черные для отрицательного). На схеме водяная помпа схематично обозначена как двигатель: здесь все верно, поскольку внутрь водяного насоса встроен мотор-редуктор. Для датчика влажности почвы и помпы подбирайте провода большей длины, поскольку эти модули будут располагаться в непосредственной близости с почвой и потребуют некоторого удаления от контроллера, чтобы обезопасить его от попадания влаги при поливе (или, как вариант, необходимо обеспечить герметичность контроллера и источника питания).
И да, схема чрезвычайно проста: настолько, что можно даже исключить микроконтроллер из схемы, но с помощью контроллера Ардуино мы можем программно задавать частоту считывания влажности почвы, а также чувствительность для датчика влажности почвы, поскольку данная модель не оснащена специальным компаратором. Таким образом автополив без контроллера не будет "умным", а больше будет походить на обычный вертикальный автополив из бутылки или другой емкости. То есть вода будет поступать в почву постоянно.
Теперь обсудим программирование нашего автоматического полива растений. Для этого вам нужна установленная на компьютер программа Arduino IDE (по этой ссылке с официального сайта можно бесплатно скачать и установить последнюю версию среды разработки для вашей операционной системы:
Предварительно скачаем и установим драйвер CH340G для платы Arduino Nano: ссылка для
Далее вам нужно скачать и открыть
В программном коде приведены комментарии для вашего удобства. Код состоит из трех частей: раздела инициализации, void setup() и void loop().
В первом разделе объявляются директивы и переменные. Через директиву define удобно обозначать константы, не занимая при этом места в памяти (но это приводит к чуть более медленному выполнению кода относительно использования переменных). Таким образом, сигнальный контакт с реле подключается к цифровому выводу D3, а аналоговый выход с датчика влажности почвы к входу A0. Создаются 4 переменных целочисленного типа. С помощью трех последних можно настраивать параметры работы кода:
timingSoil - хранит в себе значение переменной таймера для того, чтобы отмечать время, которое прошло с момента подачи питания на плату Ардуино;
timeMeasure - сюда записывается период считывания данных с датчика влажности почвы (по умолчанию 5 минут или 300000 мс: время в Arduino IDE прописывается в миллисекундах);
soilPorog - сюда записывается пороговое значение влажности почвы, при котором срабатывает реле, отвечающее за старт полива (можно выбрать значение от 0 до 1023, поскольку встроенный АЦП в Ардуино имеет 10-битное разрешение: 2 в десятой степени равняется 1024). По умолчанию установлено значение 512, что соответствует 50% влажности почвы. Точное значение лучше выяснять в ходе тестирования, чтобы ваше растение не пересохло
timeWater - здесь прописывается значение продолжительности полива в миллисекундах (по умолчанию 5 секунд).
Также в обязательном разделе void setup() прописывается только та часть кода, которая выполняется всего один раз при подаче питания на плату Arduino: с помощью функции pinMode() назначаются режимы для цифровых выводов: те контакты, которые генерируют напряжение, должны быть обозначены как выход (OUTPUT). Когда же на цифровых выводах считывается напряжение, то они являются входами (INPUT). А вот для аналоговых портов эта функция не применяется.
Далее по коду на сигнальном контакте реле генерируется высокий логический импульс (5 вольт): в этом состоянии реле будет выключено. Так устроены электромеханические реле, которые зачастую замыкают цепь при подаче низкого логического импульса (0 вольт).
Во втором обязательном разделе void loop() прописывается рабочий цикл. Каждый раз, когда проходит 5 минут (время задается переменной timeMeasure), подается 5 вольт на контакт D2: включается датчик влажности почвы; затем проходит 2 секунды и сравнивается текущее значение влажности почвы со значением переменной soilPorog. Если порог превышен, то реле включается на количество секунд, указанное в переменной timeWater, по прошествии которых реле и датчик влажности почвы выключаются и ожидают нового соблюдения основного условия цикла (через 5 минут).
Желаем приятной сборки, обучения и пользования вашим первым автоматическим поливом! До встречи в следующих частях цикла!
Товары
- Комментарии