Оповещение о необходимости полива на датчиках влажности. Умный дом: Автомат полива
После того как у меня высох очередной цветок, я понял, что неплохо было бы как-то автоматизировать процесс полива. Потому что я уверен, что она сдохла из за нехватки воды.
Я решил собрать конструкцию, которая бы поливала цветок вместо меня. В итоге у меня получился вот такой аппарат, который вполне справляется со своими обязанностями:
При помощи двух регуляторов можно настроить объём поливаемой за раз воды, а также период между поливами. Кому интересно - далее подробная инструкция, как сделать такое устройство. В основу мозга я применил Ардуино (Arduino Mega).
Для сборки поливалки вам понадобится некоторое количество компонентов и не более чем 30 минут свободного времени.
Используемые компоненты:
- Arduino Mega (она просто была под рукой, но любая другая подойдёт)
- Насос и силиконовая трубка (подойдёт насос омывателя автомобильных стёкол - можно купить в любых автозапчастях или можно купить маленький погружной насос на ebay)
- Блок питания
- Два переменных резистора для регулировки (любые)
- Транзистор IRL3705N
- Два резистора (100 Ом и 100 кОм)
- Диод (любой)
- Резервуар для воды (в моем случае пластиковая коробочка из Ikea)
- Макетка
Собираем всё по такой схеме:
Или нагляднее:
Вот что получилось у меня:
Сначала протестим насос. Подадим на него 5В. Если он зажужжал, всё в порядке, двигаемся дальше.
Теперь подключим насос к Arduino. Сделаем для управления насоса с ардуино небольшую обвязку на макетке.
Попробуем поуправлять насосом с Ардуино. Зальём такой код
int pumpPin = 5 ; void setup() { pinMode(pumpPin, OUTPUT); digitalWrite(pumpPin, LOW); } void loop() { digitalWrite(pumpPin, HIGH); delay(1000 ); digitalWrite(pumpPin, LOW); delay(1000 ); }Если он периодически жужжит, значит, снова всё в порядке.
Теперь нам осталось добавить два регулятора. Подцепим к нашему устройству переменные резисторы, и проверим их работоспособность.
Зальём такой код на Ардуино
int volumePin = A0; void setup() { pinMode(volumePin, INPUT); Serial.begin(9600 ); } void loop() { Serial.println(analogRead(volumePin)); delay(100 ); }Зайдём в Serial Monitor и убедимся, что есть реакция на поворот регулятора. Он должен меняться примерно от 0 до 1024
Теперь осталось заставить заработать всё это вместе.
Вот непосредственно код поливалки:
// Первый регулятор управляет временем, которое будет литься вода (от 4 до 15 секунд) #define MAX_FLOWTIME 15 // seconds #define MIN_FLOWTIME 4 // seconds // Второй регулятор управляет частотой полива от раза в день до раза в неделю #define MAX_PERIOD 7 // days #define MIN_PERIOD 1 // days #define MAX 1015 #define MIN 0 int volumePin = A0; // Пин, к которому подцеплен регулятор, отвечающий за объём поливаемой воды int periodPin = A1; // Пин, к которому подцепелн регулятор, отвечающий за период между поливами int pumpPin = 5 ; // Пин, к которому подсоединено управление насосом int volume; int period; // Процедура, включающая насос на время, заданное в volume void water() { digitalWrite(pumpPin, HIGH); // включаем насос delay(volume); digitalWrite(pumpPin, LOW); // выключаем насос delay(period); } void setup() { pinMode(pumpPin, OUTPUT); digitalWrite(pumpPin, LOW); } void loop() { // Считываем значения регуляторов (переменных резисторов) и приводим их к заданным пределам volume = map (analogRead(volumePin), MIN, MAX, MIN_FLOWTIME, MAX_FLOWTIME) * 1000 ; period = map (analogRead(periodPin), MIN, MAX, MIN_PERIOD, MAX_PERIOD) * 1000 * 60 * 60 * 24 ; water(); }Вот все готово. Наслаждаемся отдыхом. и вы всегда будете знать что ваши растения получают воду.
Хорошо известная пословица «Ничто не ново под луной» в случае применения автоматического полива растений работает на все сто. Ну чем не автомат марлевый жгут, который непрерывно «поливает» растение, если один конец в банке с водой, а другой закопан в грунт? Или совсем суперполив с помощью системы с хорошей электронной начинкой также охотно выполнит автоматический полив растений – она все может, все сделает, но… Нет же, находятся критиканы - жгут малоэффективный, электроника ценой кусается - дорого, да и не может электронный блок перенастраиваться – для каждого нового применения нужен свой. А здесь желательно что-то такое-эдакое...
Из чего состоит автомат полива?
Вот это «такое-эдакое» мы и попытаемся сделать. Оно будет дешевым, легко перенастраиваться и эффективным – дальше некуда. Логика его работы (говорят, алгоритм) следующая: если земля сухая – автомат поливает, если почва увлажнилась – полив прекращается до высыхания грунта. А сколько ждать? Да вопрос так даже не стоит. Правильным критерием будет «высыхание» грунта. Как только высохло, так и поливаем – в любое время дня и ночи...
А теперь разложим по полочкам наш автоматический полив растений с точки зрения разработчика «умной» поливалки:
- окружающая среда – условия квартиры, наполненный грунтом цветочный горшок, который и нужно поливать;
- блок управления – микроконтроллерная плата, в качестве которой считается наиболее приемлемым подключение ардуино;
- объект управления – банка с водой, исполнительный механизм - насос для перекачки воды;
- дополнительные элементы системы автоматического полива растений:
- ее «глаза» - датчики высыхания грунта и уровня воды в банке;
- «руки» - насос, который будет качать воду в зону полива;
- чистая техника - ключ коммутации, фактически выключатель насоса и два светодиода, зеленый и красный, для индикации «вода есть» и «воды мало».
Казалось бы, что вместо банки с водой нужно просто подключиться к водопроводной трубе, но шлангочки-трубочки по квартире – не очень украшают помещение, так что задача автоматического полива растений решается с использованием автономной емкости, которую надо ручками «заправлять» водичкой. А чтоб банка с водой не раздражала эстетические вкусы ее можно замаскировать декоративным рисунком, чтоб казалось, что так и надо.
Насос, выполняющий автоматический полив растений
Водяной насос
Насос для перекачки воды – покупной. Его можно взять от стеклоомывателя, принтера или аквариумный. Любой из них легко справится с задачей, но проще применить от автомобиля. Все просто – пришел, увидел, купил, но перед применением нужно опытным путем подобрать напряжение питания, чтоб его струя меньше напоминала самодельный домашний гейзер. Спокойная водяная струя образуется при напряжении от 8 В до 9 В.
Более сложный вопрос - рабочий ток двигателя насоса. У разных образцов это может быть 2-3 и больше ампер, а допустимая токовая нагрузка по выходу контроллера значительно меньше – 10 - 20 мА. Поэтому необходимо увеличить коммутационную способность блока управления. Для этого к его выходу подключают мощный транзистор, который, благодаря подключению ардуино и обеспечивает включение насоса. Применим сборку транзисторов uln2003 (см. схему), каждый из которых может коммутировать ток 0,5 А. Если входы и выходы объединить параллельно, то допустимый нагрузочный ток будет равняться суммарному, т.е. 0,5 * N. Так и сделаем.
Подключение ардуино – блока управления
Принципиальная схема устройства автоматического полива растений
Блок управления – одноплатный микропроцессорный контроллер Arduino, который и предназначен для таких простеньких задач. Техника работы с ним простая – отлаживают программу на компьютере и после подключения ардуино «переганяют» ее в процессор. Если что-то нужно изменить, то программу переделывают на компьютере и переустанавливают в контроллер. И при этом ничего не нужно перепаивать, переделывать. Это как раз и есть то, что называют «возможностью перенастройки».
Следующим этапом подключения ардуино к устройству, которое непосредственно выполняет функции автоматического полива растений, заключается в соединение проводов датчиков и силового провода питания насоса с самим контроллером. В данном случае лучше всего для блока питания использовать аккумулятор – полив работает очень короткое время – буквально несколько секунд, и постоянное «дежурство» сетевого блока питания нецелесообразно.
Датчики – «глаза» автомата
Датчик влажности из гвоздей
Датчик влажности лучше всего сделать из материала не подверженного окислению, например, графитовых стержней. Если не мудрствовать, то пара гвоздей, забитых в изолирующую пластину, за несколько секунд превращаются именно в такой датчик (см. рисунок), который использует подключение ардуино, чтобы дать о себе знать системе автоматического полива растений, а установку графитовых стержней можно отложить на период «сдачи» нашей поливалки в постоянную эксплуатацию.
Поплавковый датчик уровня воды
Датчик уровня воды легко реализуется таким же «гвоздиковым», как выше, но мы сделаем другой – поплавковый (см. рисунок). Его легко собрать из трубки 4, которая фиксируется на банке, а стержень 3 по ней легко перемещается. В нижней части стержня крепится поплавок 2, а в верхней его части находится перемычка 6. На верхнем конце трубки расположена диэлектрическая пластина с двумя контактами 5 провода от которых идут на подключение ардуино.
Принцип датчика прост, как мир: если воды много поплавок 2 поднимает стержень 3, замыкающая пластина поднимается вверх и контакты 5 размыкаются. При снижении уровня воды до метки и ниже, поплавок опускается, и пластина 6 замыкает контакты 5.
Алгоритм устройства управления
Алгоритм управления
Самое важное при конструировании блоков управления на микропроцессорах – правильно построить алгоритм работы. Ведь подробное описание работы на специальном языке программ всех узлов, имеющих подключенный ардуино, определяет порядок опроса и анализа входных сигналов. Кроме того, для выполнения тех или иных действий заданных разработчиком (а это как раз мы с вами), контроллер должен учитывать отрезки времени работы исполнительных механизмов. И вот, что у нас получилось (см. рисунок). Рассмотрим по шагам.
После подключения ардуино в работу, он опрашивает состояние датчика уровня воды и отражает его светодиодами – это сигнализация для нас. Следующий датчик – влажности – может сказать «а почва-то влажная» и тогда блоку управления следует возвратиться в начало – его цикл работы завершился и так далее – без устали по циклу. Как только почва высохла контроллер, благодаря датчику, об этом узнает и начнет отрабатывать свою прямую задачу – полив.
Сначала будет включен насос, например, на 2 сек. А почему не на три-четыре-пять? Да потому, что эти 2 секунды мы определили экспериментально (а вполне могло быть и другое число – все зависит от насоса). Критерием служит количество перекачанной воды. Ее должно быть достаточно для полива в течение некоторого промежутка времени – час-два, может сутки. На смачивание грунта после полива отводится 30 сек (на ваш вкус). Только после отработки этого отрезка времени контроллер продолжит работу дальше, т.е. начнется новый цикл.
Новый цикл – это опять опрос датчика через подключение ардуино, анализ информации и т.д.
Алгоритм работы можно усложнять. Например, понадобится поливать не один горшок, а несколько – не ставить же контроллер на каждый. Для этого нужно использовать и его свободные входы/выходы куда и подсоединить датчики и насосы от каждого горшка, а в алгоритме предусмотреть дополнительные блоки их опроса.
После составления алгоритма работы устройства, на его основе пишут программу и моделируют на компьютере работу программы при помощи специальных отладчиков, которые всегда есть для конкретного контроллера – в нашем случае это ардуино. Отлаженная программа записывается в процессор ардуино, для этого там уже все есть, надо только включить с компьютера соответствующий блок отладчика.
Вариант такой программы приведен ниже (Вы можете скачать текст программы внизу статьи, вместе с чертежами устройства).
Код программы:
// константы
const int dw = 12; // датчик уровня воды на 12 пин
const int dg = 11; // датчик влажности почвы на 11 пин
const int nasos = 2; // управление насосом на 2 пин
const int ledG = 3; // зеленый светодиод на 3 пин
const int ledR = 4; // красный светодиод на 4 пин
// переменные
int dwS = 0; // состояние датчика уровня воды
int dgS = 0; // состояние датчика уровня влажности почвы
//установки void setup() {
// объявляем пины светодиодов и насоса как выходы: pinMode(nasos, OUTPUT); pinMode(ledG, OUTPUT); pinMode(ledR, OUTPUT);
// объявляем пины датчиков и насоса как входы: pinMode(dw, INPUT); pinMode(dg, INPUT);
}
// рабочий цикл void 1оор(){
// считываем состояния датчика уровня жидкости dwS = digitalRead(dw);
// если воды много - включаем зеленый, иначе красный if (dwS == LOW) { digitalWrite(ledG, HIGH); digitalWrite(ledR, LOW);
}
else {
digitalWrite(ledG, LOW); digitalWrite(ledR, HIGH);
}
// считываем состояния датчика влажности почвы dgS = digitalRead(dg);
// если почва сухая, включаем полив if (dgS == LOW) { digitalWrite(nasos, HIGH); delay(2000);
digitalWrite(nasos, LOW); delay(30000);
}
else {
digitalWrite(nasos, LOW);
}
}
Конструкция автомата полива
А теперь займемся размещением узлов нашего автомата. Датчик влажности располагается в грунте горшка на углублении 2-5 см (подбирается экспериментально). Трубка, подающая воду, находится рядом с одним из его электродов. Самый простой вариант емкости – стеклянная банка, а датчик воды с насосом крепятся на ее пластиковой крышке, причем насос можно разместить внутри банки.
Электронику, выполняющую автоматический полив растений – контроллер, блок питания, микросхему ключей uln2003 и резисторы прячем в стандартный корпус, которых сейчас в продаже можно подобрать - на любой вкус. На передней панели устанавливаем светодиоды и разъем, через который осуществляется подключение ардуино с насосом и датчиками.
Вот так в нашем доме может появиться еще один умный помощник, выполняющий автоматический полив растений, который будет следить за увлажнением грунта наших цветов и не скажет «да, знаешь, как то замотался в текучке, забыл». И если все так и случилось, то настоящий «самоделкин» посмотрит вокруг пристально, как будто с вопросом, «что бы еще сделать такое-эдакое?».
На следующем рисунке приведена структурная схема комплексного решения для дистанционного управления и мониторинга системы полива.
Контроллер системы управления собирает данные с датчиков системы и с помощью GPRS-модема передаёт их на сервер. В ответ он получает от сервера команды для управления исполнительными устройствами системы (поливочными клапанами, насосом и клапаном блокировки долива воды в резервуар).
Пользователь имеет доступ на сервер через веб-приложение с ПК или мобильного устройства.
Шкаф управления системой
На следующем рисунке приведена структурно-функциональная схема шкафа управления.
Центром системы является контроллер Arduino Mega.
Контроллер управляет модемом SIM900 с помощью AT-команд, передаваемых через COM-порт.
Таким образом осуществляется обмен данными с сервером.
Возникают случаи, когда модем может попасть в «сложную ситуацию». Иногда для того, чтобы восстановить его нормальную работу требуется аппаратная перезагрузка. Для этого в систему добавлен модуль перезагрузки модема, представляющий собой электромагнитное реле, через которое скоммутировано питание модема.
Сигналы от датчиков уровня воды в резервуаре принимает модуль ввода дискретных сигналов. Датчики имеют выход типа «сухой контакт». Подробнее о них можно почитать . Для того чтобы завести дискретные сигналы от датчиков в контроллер, пропитываем их напряжением 24 В от блока питания. Модуль ввода представляет собой дискретные входы с опторазвязкой, преобразующие входной уровень напряжения в 24 В в уровень 5В, понятный контроллеру.
Для измерения температуры на улице к контроллеру подключен датчик DS18B20. Контроллер производит с ним обмен по интерфейсу OneWire.
В данной статье мы не будем приводить электрическую схему шкафа управления, код программы Arduino и подробно рассказывать о работе веб-сервера, т.к. это тема для отдельного разговора. Для тех, кто хочет углубиться в эту тему мы подготовили .
WEB приложение для управления поливом через интернет
Через веб-приложение пользователь:
- отслеживает текущее состояние системы: уровень воды в баке, температуру на улице, состояние линий полива(полив идёт/полив остановлен).
- управляет поливом (включает и выключает необходимые линии) в ручном режиме
- составляет расписание для полива в автоматическом режиме
- получает оповещение о важных событиях в системе (потеря связи, низкий уровень воды в баке и т.д.)
- анализирует график изменения температуры на улице за время работы системы
- просматиривает события, происходящие на объекте, пользуясь журналом событий
Главный экран управления и мониторинга состояния системы
На главном экране веб-приложения отображаются текущие состояния всех узлов системы: показания датчиков уровня воды в резервуаре и датчика температуры (таблица слева), а также состояние электромагнитных клапанов всех контуров полива (таблица справа).
На этом же экране пользователь может вручную включить или выключить любую из линий полива.
В нижней части экрана отображаются последние события, произошедшие на станции.
Экран управления расписанием полива в автоматическом режиме
На данном экране пользователь может создать расписание для работы системы в автоматическом режиме, чтобы сервер включал и выключал полив на станции без участия пользователя.
Журнал событий
В журнал заносятся важные события на станции: включение/выключение линий полива, обрыв связи со станцией, восстановление связи со станцией, температура на улице ниже заданного уровня, резервуар пуст, резервуар почти пуст.
Оповещение пользователя
В настройках станции пользователь может назначить некоторые события как «предупредительные» или «аварийные». При возникновении этих событий сервер будет оповещать пользователя по электронной почте и (или) СМС. Это могут быть события обрыва связи со станцией, низкий уровень воды в резервуаре или низкая температура на улице.
Нижний предел температуры и время таймаута, после которого система регистрирует обрыв связи, — задаются в настройках.
График уличной температуры
На этом экране отображается график изменения температуры в течение заданного промежутка времени (10 мин., 30 мин., час, 12 часов, сутки, неделя, месяц).
Дальнейшее развитие системы
В дальнейшем планируется повысить информативность системы, дополнив её счётчиками воды. Показания счётчиков будут видны пользователю через веб приложение. На основании этих данных можно будет строить графики расхода воды за длительный период времени.
Кроме того, планируется оборудовать линии полива датчиками влажности почвы и управлять поливом, руководствуясь их показаниями. Это позволит создать ещё более комфортные условия для роста растений и повысить экономию воды.
Заключение
Для тех, кто хочет более подробно изучить технологию обмена данными с удалённым сервером с помощью Arduino и модема SIM900, мы подготовили серию уроков на эту тему. Вот .
На этом пока всё! Надеемся, что было интересно! До новых встреч на LAZY SMART ! Чтобы не пропустить новую статью, вступай в нашу
В данной статье будет описано, как собирается небольшой агрегат для автоматического полива растений на базе Arduino с контролем влажности. Необходимость самого полива будет определяться по датчику влажности почвы. При желании можно будет поливать сразу несколько растений.
Материалы и инструменты:
- Arduino Uno
- Растение в горшке с сухой землёй
- Водяной насос
- Датчик влажности почвы со шлейфом
- Силовой ключ (тройка) со шлейфом
- Клеммник нажимной
- Провод «папа-папа» ×1 шт
- Провод «мама-папа» ×1 шт
- Блок питания с разъёмом USB
- USB кабель
Сборка:
Дисплей подключается к контакту 3 тройка-шилда. При соединении всех проводов данного типа важно удостовериться, что с контактом GND соединялся чёрный провод.
У помпы на концах проводов отсутствуют контакты, поэтому используется клеммник. Если есть навык в пайке контактов, тогда правильнее припаивать к проводам «Штырьковые соединители».
Вот так выглядит подключённое питание:
С помощью Arduino IDE программируется Arduino Uno прикреплённым ниже файлом. Сам сенсор влажности, конечно же, втыкается в почву. Подсоединяется конец трубки с водой в землю. Если горшок весит немного, тогда автор рекомендует закрепить отдельно трубку так, чтобы растение не было перевернуто. Далее, помпа опускается в удобную ёмкость с водой, и подключается питание.
Калибровка:
Чтобы показания датчика были верными требуется провести несложную процедуру его калибровки. Потому что точность показаний напрямую зависит от кислотности почвы.
1. При воткнутом в сухой горшок датчике записываются показания с дисплея. Это значение ничто иное как минимум влажности.
2. Цветок поливают водой и дожидаются пока вода не впитается полностью в землю, и показания сенсора остановятся на одном значении. Данные записываются и помечаются как максимальная влажность.
3. В файле прошивки изменяются значения констант HUMIDY_MIN устанавливается минимальная влажность, и HUMIDY_MAX соответственно максимальная влажность. Arduino Uno прошивается заново.
Масштабирование проекта
В данной статье описан способ полива всего для одного цветка. Но зачастую требуются поливать сразу несколько растений. Конечно, можно подключить к Arduino большее количество помп и датчиков влажности, но насколько это будет затратно. Автор в этом случае предлагает решение дешёвое и простое. В трубке, которая подсоединена к помпе проделываются дырочки шилом, расстояние между ними около 30 сантиметров, в эти отверстия втыкаются стержни из использованной шариковой ручки.
Горшки в доме,как правило, стоят в ряд, например, на подоконнике. Трубка ложится на горшки так чтобы каждое отверстие соответствовало горшку. Только вот решение о поливе будет приниматься устройством лишь по одному горшку. Лучше всего это будет работать если горшки одинакового размера зачастую на подоконниках так и случается. Сохнуть почва в них будет примерно одинаково. При желании и большом количестве растений у вас дома, можно подключать дополнительные помпы, и разделять все горшки по группам равным по размерам.
В этой статье мы расскажем о том, как собрать устройство для автоматического полива с контролем влажности почвы - ирригатор . Необходимость полива будем определять по показаниям датчика влажности почвы. Одновременно можно будет поливать несколько растений.
Что для этого необходимо?
Как это собрать?
Калибровка
Показания датчика влажности сильно зависят от кислотности почвы. Поэтому перед началом пользования ирригатором требуется провести простую процедуру калибровки.
Запишите показания на дисплее при воткнутом в сухой горшок сенсоре. Это - минимум влажности.
Полейте цветок и дождитесь пока вода полностью впитается в землю и показания сенсора установятся на одном уровне. Запишите их. Это - максимум влажности.
В скетче исправьте значения константы HUMIDY_MIN на значение минимальной влажности и HUMIDY_MAX на значение максимальной влажности. Заново прошейте Arduino Uno.
Масштабирование решения
Мы описали решение для одного растения. Но обычно требуется поливать несколько растений. Помимо очевидного решения - подключения к Arduino нескольких помп и датчиков влажности - существует более простое и дешёвое. Достаточно в трубке, которая идёт в комплекте с помпой проделать шилом дырочки на расстоянии около 30 см и воткнуть в эти дырочки куски стержней от обычных шариковых ручек. Выглядеть это будет так:
Горшки с цветами дома часто стоят в ряд на подоконнике. Вам достаточно просто положить трубку на горшки так, чтобы отверстия в ней приходились по одному на горшок. Теперь наше устройство может поливать сразу несколько горшков. Однако в таком случае принимать решение о необходимости полива можно только по одному горшку. Однако обычно горшки примерно одинаковые по размерам и, соответственно, сохнут с примерно равной скоростью. Можно так же комбинировать два решения, разделяя все горшки на группы примерно равных по размерам.
Исходный код
Для работы скетча вам понадобиться скачать и установить библиотеку для работы с дисплеем QuadDisplay2
irrigator.ino // Подключаем библиотеку для работы с дисплеем #include "QuadDisplay2.h" // даём разумное для пина, к которому подключена помпа #define POMP_PIN 4 // даём разумное для пина, к которому подключён датчик влажности почвы #define HUMIDITY_PIN A0 // минимальный порог влажности почвы #define HUMIDITY_MIN 200 // максимальный порог влажности почвы #define HUMIDITY_MAX 700 // интервал между проверкой на полив растения #define INTERVAL 60000 * 3 // переменная для хранения показания влажности почвы unsigned int humidity = 0 ; // статическая переменная для хранения времени unsigned long waitTime = 0 ; // создаём объект класса QuadDisplay и передаём номер пина CS QuadDisplay qd(9 ) ; void setup(void ) { // начало работы с дисплеем qd.begin () ; // пин помпы в режим выхода pinMode(POMP_PIN, OUTPUT) ; // выводим 0 на дисплей qd.displayInt (0 ) ; } void loop(void ) { // считываем текущее показания датчика влажности почвы int humidityNow = analogRead(HUMIDITY_PIN) ; // если показания текущей влажности почвы // не равняется предыдущему запросу if (humidityNow ! = humidity) { // сохраняем текущие показания влажности humidity= humidityNow; // и выводим показания влажности на дисплей qd.displayInt (humidityNow) ; } // если прошёл заданный интервал времени // и значения датчика влажности меньше допустимой границы if ((waitTime == 0 || millis() - waitTime > INTERVAL) && humidity < HUMIDITY_MIN ) { // включаем помпу digitalWrite(POMP_PIN, HIGH) ; // ждём 2 секунды delay(2000 ) ; // выключаем помпу digitalWrite(POMP_PIN, LOW) ; // приравниваем переменной waitTime // значение текущего времени плюс 3 минуты waitTime = millis() ; } }Демонстрация работы устройства
Что ещё можно сделать?
Несмотря на золочение, контакты сенсора влажности со временем корродируют. Быстрее всего корродирование происходит при подключённом питании. Срок жизни сенсора можно значительно увеличить, если подключить питание к нему через силовой ключ. Когда надо получить данные - включаем питание сенсора, снимаем показания и тут же выключаем питание.
Если оставить наш ирригатор работающим на длительный срок без присмотра, вода в резервуаре может закончиться. При работе без воды помпа быстро выходит из строя. Решением проблемы может быть автоматическое определение опустошения резервуара. Сенсор подбирается исходя из типа резервуара. Если он не глубок, то подойдёт ещё один датчик влажности. Когда же высоты его не хватает, можно воспользоваться , сделать поплавок с или просто опустить на дно два провода.
Устройство, работающее от батареек, будет значительно безопасней питающегося от сети. Идеальным вариантом было бы питание ирригатора от батареек. Но Arduino Uno, как известно, даже в режиме сна потребляет более 10 мА. Выходом может являться использование Arduino Mini, способный в режиме сна снижать потребляемый ток до сотен мкА.
Существует много правил полива домашних растений, как, например: не стоит поливать зимой вечером. Можно добавить сенсоров света или часы реального времени и скорректировать программу так, чтобы она старалась поливать в нужное время.