Себя любимого прохладой я уже обеспечил, оснастив настольный вентилятор турелью самонаведения (см. «М-К» № 5-2019), следующая актуальная летняя тема — организация автополива комнатных цветов. Близится время отпуска и надо решать: или договариваться с соседями и доверить им ключи от квартиры, или по-быстрому придумать и сделать что-то похожее на «умный дом». Точнее, — на «умную теплицу», раз речь о растениях. Сразу скажу, что вариант с соседями меня не очень устраивает по ряду причин, а значит — займемся опять конструированием и моделированием. Как и прошлая самоделка, этот проект будет основан на дешевой плате Arduino, которую я запрограммирую и подключу к ней всякую периферию.
Покопавшись в Интернете, я довольно быстро нашел несколько различных схем автополива. Но, честно говоря, ни одна из них не понравилась. Как-то все не оптимально, на мой взгляд, — это если коротко и не вдаваясь в детальную критику. Поэтому решил не копировать известные решения, а поэкспериментировать, и набросал собственную концепцию. В целом она крайне проста: есть помпа, которая включается по таймеру и подает воду на разветвитель потока, а на каждой ветке есть собственный кран, которым можно регулировать потоки на отдельные растения или их группы. Вот и все, собственно. Готовые таймеры полива для установки на трубах стоят довольно весомых денег. Мой же вариант настраиваемого таймера на один канал обойдется примерно как обед в «Макдональдсе», а прошивка для микроконтроллера будет совсем элементарная. Правда, есть тут одна проблемка. Схема получается простая, конечно, но… мне она не интересна. Ни с творческой точки зрения, ни по функционалу. Гораздо любопытнее и практичнее будет организовать многоканальный полив. Представьте, например, что у вас на даче есть несколько парников под разные виды культур. Ну или одна большая теплица с несколькими грядками. На первой растут огурцы, на второй помидоры, на третьей — арбузы, клубника, киви или еще что-нибудь вкусное. И всем этим растениям требуются разные режимы полива. Следовательно, нам нужна оросительная система, обладающая возможностью масштабирования (от 1 до 15 помп, думаю, хватит) и имеющая удобную централизованную настройку каждого из этих каналов. Пожалуй, в таком виде многие найдут ей полезное применение на своем загородном участке.
Сформулировав задачу, приступил к ее реализации. Для начала приобрел несколько самых дешевых помп, работающих от напряжения в 5 В. В управлении питанием разумно было бы применить полевые транзисторы, но пришлось бы паять из них целую батарею — кто работал с такими устройствами, тот в курсе. Я же в целях упрощения решил использовать реле. Реле хорошо тем, что через него можно запитать как самую маленькую помпу (или среднюю, в этом качестве, кстати, сгодится насос омывателя стеклоочистителя из магазина автозапчастей), так и большой насос, работающий от сети 220 В. Установить его, к примеру, в колодце или скважине, и качать воду в теплицу.
А для настройки системы я взял символьный дисплей и энкодер — электронномеханический элемент, который преобразовывает вращательное движение вала в пачки электрических импульсов, позволяющих определить направление и угол вращения вала. Самый распространенный пример использования энкодера в повседневной жизни — ручка регулировки громкости современной автомобильной магнитолы с цифровым управлением. Ну и, конечно, «мозгом» устройства будет плата Arduino. Все эти комплектующие можно недорого приобрести на «Алиэкспрессе». Совет: заказывайте у одного продавца -товары придут в одной посылке, плюс возможна скидка, что тоже неплохо.
КАК ЗАГРУЗИТЬ ПРОШИВКУ НА ПЛАТУ ARDUINO
1. Скачать архив с необходимыми материалами.
2. Установить библиотеки (папка Libraries) в C:\ProgramFiles\Arduino\ Libraries\.
3. Подключить Arduino к компьютеру с помощью Data-кабеля.
4. Открыть файл прошивки желаемой версии (файлы прошивок .ino находятся в соответствующих папках архива).
5. Настроить Arduino IDE (указать COM-порт, куда подключена плата, и модель Arduino).
6. Внести по желанию дополнительные настройки в прошивку, и нажать «Загрузить».
Перейдем к прошивке — в данном проекте она интересовала меня больше всего. Было технически интересно «завязать» работу нескольких независимых между собой таймеров и помп, а также иметь возможность при необходимости добавлять требуемое количество каналов. В результате код получился очень красивый: все параметры системы хранятся в массивах и прогоняются циклами, а настройки, которые мы меняем, записываются в энергонезависимую память и не сбрасываются при перезагрузке.
Теперь давайте соберем макет нашего устройства. Подключаем энкодер, как это показано на приведенных схемах, на шину i2c «вешаем» плату дисплея, а затем по порядку сигнальные провода на реле (как в моем случае) или транзисторы. Этот момент очень важен, так как в прошивке Arduino прописывается первый пин подключения помп, а остальные указываются автоматически по их количеству.
Загружаем прошивку на плату и проверяем, как будут щелкать контактные группы реле. А после установки библиотек открываем файл прошивки и смотрим настройки. Китайские производители, бывает, присылают дисплеи с разными драйверами, поэтому уточните какой у вас и отметьте это в настройках. Далее нужно указать, сколько реле у вас используется, и внести другие изменения в настройках «под себя». Важно: перед загрузкой прошивки отключите пины 0 и 1 от энкодера, или поверните его рукоятку в такое положение, при котором на плате не будут гореть два светодиода. В противном случае прошивка не загрузится, поскольку в процессе задействованы именно эти пины, а энкодер будет мешать.
ПРОЕКТ «АВТОПОЛИВ» НАСТРОЙКИ В ПРОШИВКЕ ARDUINO
#define DRIVER_VERSION 0 // 0 — маркировка драйвера дисплея кончается на 4АТ, 1 — на 4Т
#define PUPM_AMOUNT 8 // количество помп, подключенных через реле или мосфет
#defineSTART_PIN3 //подключены начиная с пина номер…
#define SWITCH_LEVEL 0 // реле: 1 — высокого уровня (или мосфет), 0 — низкого
#define PARALLEL 0 // 1 — параллельный полив, 0 — полив в порядке очереди
#define TIMERSTART 0 //1 — отсчет периода с момента ВЫКЛЮЧЕНИЯ помпы, 0 — с момента ВКЛЮЧЕНИЯ помпы
#define PERIOD 0 //1 — период в часах, 0 — в минутах
#define PUMPING 1 //1 — время работы помпы в секундах, 0 — в минутах
#define DROPJCON 1 //1 — отображать капельку, 0 — будет буква «t» (time)
После успешной загрузки прошивки система сразу готова к работе. Расскажу, как ею пользоваться. Поворачивая рукоятку энкодера, мы перемещаем стрелочку выбора по экрану. Обратите внимание, что настройка времени работы помпы находится правее «за экраном», и нужно «пролистать» стрелочку направо, чтобы ее активировать. Чтобы изменить выбранный параметр, нужно повернуть рукоятку энкодера, удерживая ее нажатой. Таким образом задается время периода работы помпы в формате часы:минуты:секунды.
Названия помп можно прописать вручную в коде прошивки и даже на русском языке, что очень удобно. То есть, мы имеем полностью настраиваемый контроллер полива для любой ситуации и любой теплицы. По умолчанию стоит 1 минута 1 секунда, помпы включаются по очереди на заданное время. За последовательность их работы отвечает настройка, которая позволяет избежать одновременного включения нескольких помп, чтобы не перегружать линию питания. Если не задействовать такой режим, то помпы будут включаться одновременно. Но имейте в виду, что одно реле потребляет 60 мА во включенном состоянии, а маленькая помпа может потребовать до 500 мА.
Еще один важный момент: как только вы переключаетесь на выбор помпы, все настройки записываются в энергонезависимую память. Соответственно, после перезагрузки или после отключения питания они сохранятся такими же, как и были ранее. Если возникнет необходимость их сбросить, это можно сделать, включив систему с нажатой кнопкой энкодера. Я предусмотрел такую возможность в программе на всякий случай, авось пригодится. Хорошо было бы еще записывать в память и текущие значения таймеров, но это уже другая история — займусь ею, пожалуй, в следующей версии контроллера, рассчитанного для большой теплицы.
Также в архиве есть вариант скетча auto-pumps valve, который предназначен для схемы «одна помпа и несколько клапанов». В этом случае первое подключенное реле (пин D5 по схеме) управляет помпой, а все остальные — клапанами. Как только какой-либо клапан открывается по таймеру, начинает работать общая помпа.
Не знаю, существует ли в продаже что-то похожее, но даже если и есть, то стоит оно, скорее всего, запредельных денег. А мой автополив укладывается в 1000 рублей или чуть больше, в зависимости от количества подключенных помп. В данном варианте возможно одновременное использование до 15 каналов. Устройство устанавливается на подоконнике, на балконе или в теплице и само поливает ваши растения. Будь то цветы, овощи или фрукты. Причем в любой момент можно, оценив состояние почвы, оперативно изменить режим полива по любому из каналов. А собрать и настроить такого «робота» по силам даже 13-летним школьникам — я таких знаю!
И еще. Предвидя многочисленные вопросы читателей — почему я не использовал в этой системе датчики влажности. Знаю об этом, так как спрашивает каждый третий, кто видел ее в работе. Отвечаю. Данный проект вовсе не о датчиках, а о таймере. К тому же, в устройстве с датчиками влажности микроконтроллер вообще не нужен — с ними было бы все по-другому. Тем не менее, если вдруг захотите ими все-таки когда-то воспользоваться — не обольщайтесь: они в большинстве китайские и сделаны не из золота, а потому очень быстро разъедаются почвой.
Александр МАЙОРОВ (AlexGyver)