Оповещение о необходимости полива на датчиках влажности. Умный дом: Автомат полива

Про умные дома вы, наверное, слышали. Многие идеи в этом направлении весьма футуристичны, но это не должно останавливать.

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

Вообще, умный дом - это очень сложная система датчиков, механических и электронных компонентов, управляемая по заложенной программе. Эта система следит за расходом (и утечкой) воды, газа, электричества. Управляет освещением. Включает противопожарные элементы. Обеспечивает удаленное управление разными устройствами по телефону или СМС. Включает элементы защиты от краж и несанкционированного доступа. Содержит устройства бесперебойного питания жизненно важных для всей системы блоков.

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

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

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

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

Насос для автомата полива растений

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

Важно: прежде чем подключать насос к готовому устройству, проверьте его в работе. Автомобильный насос может выдать фонтан в несколько метров; дома такое «поливание» могут не понять и запретить на корню. Подберите опытным путем оптимальное напряжение. Автонасос рассчитан на питание от бортовой сети 12 В, на моем экземпляре достаточный напор появляется уже при напряжении 8…9 В. Насос от принтера напора в несколько метров не даст, но с ним другая проблема: в принтере он качал чернила, а они очень трудно отмываются, и такой насос аккуратнейшим образом необходимо будет промыть.

О датчиках

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

Датчик из гвоздей - самая простая конструкция. Для его изготовления нужен кусок пластика или резины, два гвоздя, провода и кембрик (изолента).

Датчик уровня жидкости можно сделать так же, как и датчик влажности почвы, а можно придумать конструкцию поплавкового типа. Второй вариант предпочтительнее. На рисунке 3 вариант такого датчика, где 1 - емкость с водой для полива и отметкой минимума, 4 - трубка из любого материала и стержень 3, который свободно ходит в трубке. Трубку и стержень можно взять от старой шариковой ручки. Внизу на стержень крепится поплавок 2 (кусок пенопласта). В верхней, надводной, части конструкции на трубке размещаем на пластиковой пластине контакты 5, это и будут контакты датчика. Сверху на стержень крепим токопроводящую пластину 6. Ход стержня в трубке 1…2 см. К контактам 5 припаиваем провода для подключения к Arduino. Трубка 4 неподвижно крепится внутри емкости.

Принцип работы датчика следующий. Когда воды много, поплавок 2 выталкивает стержень 3 до упора вверх, при этом пластина 6 не касается контактов 5. Когда уровень воды опускается ниже отметки МИН, поплавок опускается вместе с уровнем воды и опускает стержень с пластиной б, которая, в свою очередь, касается контактов 5 и замыкает их между собой. Контроллеру остается только считывать состояние контактов 5. Если лень возиться, можно купить похожие в автозапчастях, они там продаются как датчики уровня охлаждающей жидкости, цена самых простых 100 - 150 рублей.

Управление доверим Arduino

Для нее это тривиальная задача. Датчики одним контактом подключаем к пину Arduino и через высокоомный резистор подтягиваем к «земле», другим контактом - к +5 В питания Arduino. Для выбора способа подключения насоса нам нужно знать ток, который он потребляет в режиме работы, причем обязательно при перекачивании воды; на холостом ходу ток может быть меньше. Если ток меньше 3,5 А, то можно для подключения насоса применить транзисторную сборку uln2003.

Каждый выход uln2003 может управлять нагрузкой 0,5 А. Я подключил параллельно все семь входов и выходов для увеличения тока нагрузки: 7×0,5=3,5 А. Если ток насоса больше 3,5 А, то можно поставить полевой транзистор, например irf630 (но к нему нужны дополнительные элементы). Этот транзистор выдерживает ток до 9 А. Если вашему насосу требуется больший ток, то меняйте насос, а то у нас получится не поливалка, а брандспойт:-)

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

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

Программа простая, но требует корректировки в каждом конкретном случае. Особенно нужно уделить внимание паузе между включением и выключением насоса: чем меньше цветочный горшок и чем больше производительность насоса, тем меньше должна быть пауза. Также от размеров горшка зависит и пауза после выключения насоса. После полива земля должна пропитаться, иначе, если влага до датчика не дойдет, то система включит полив еще раз. Оптимальный вариант - трубку подачи воды разместить рядом с датчиком, чтобы земля в районе датчика пропитывалась сразу. Здесь же отмечу: уровень влажности для включения полива можно регулировать самим датчиком, погружая его на разную глубину.

Код программы

// константы
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);
}
}

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

А вот для источника питания такое решение сыграет положительную роль: оно не позволит устройству включить 10 насосов одновременно. Первый delay(2000) включает на 2 секунды насос, если у вас большое растение в большом горшке, то время надо увеличить, если насос очень производительный, то, наоборот, уменьшить. Второй delay(30000) дает почве 30 секунд пропитаться водой, об этом я писал ранее. Возможно, это время тоже нужно регулировать.

Конструктивно устройство состоит из двух частей - электронной и механической. Электронную часть и элементы питания желательно поместить в корпус, чтобы случайные брызги не вывели электронику из строя. Можно задействовать не всю Arduino, а микроконтроллер, кварц с конденсаторами и стабилизатор питания на 5 В. В этот же корпус помещаем микросхему uln2003, резисторы, выводим на лицевую панель светодиоды и устанавливаем разъем для подключения датчиков и насоса. Если насос мощный и uln греется, то в корпусе сверлим отверстия для вентиляции. Дополнительный индикатор включения устройства устанавливать не нужно, один из светодиодов уровня воды включен всегда, он и выполнит эту функцию.

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

Далее испытания. Не забывайте: от работы устройства зависит благополучие растения. Перед проведением практических испытаний проведите испытания стендовые, потестировав несколько дней устройство с горшком без растения. Земля в нем не должна быть залита или пересушена. В случае необходимости датчик влажности углубите побольше или, наоборот, приподнимите повыше. Регулируйте в программе продолжительность работы насоса. Он не должен каждые пять минут выдавать по капле, но и не должен раз в неделю заливать землю. По ходу эксперимента следите за температурой электронных компонентов.

Не допускайте перегрева!

Когда все отлажено, переходите к испытаниям практическим, взяв самое неприхотливое растение. Внимательно следите за состоянием растения, если что-то не так, останавливайте эксперимент до выяснения причин. Если все нормально, подключайте к Arduino еще один датчик и насос, дописывайте код и автоматизируйте полив еще одного растения. Без дополнительного расширения портов Arduino справится с десятком растений.

Приложение. Код без комментариев:
const int dw = 12;
const int dg = 11;
const int nasos = 2;
const int ledG = 3;
const int ledR = 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 loop(){ 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); }}

Предыдущая статья: Следующая статья:

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

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

Автоматические системы полива огорода — схема

Есть знатоки, утверждающие что таймеры полива для самотечных систем настолько хороши, что могут работать при давлении воды от 0 до 6 атмосфер. Работать-то они при нулевом давлении будут, только поливаться ничего не будет. Самотек – понятие не физическое, а чисто бытовое. И означает не отсутствие давление, а отсутствие постоянно действующих водяных насосов. В самотечных системах насос подает воду лишь в накопитель, который находится на некотором расстоянии от земли. За счет перепада высот между верхним уровнем воды и местом ее выхода создается давление, именно оно заставляет двигаться водяной поток.

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

Виды таймеров

В настоящее время можно приобрести три вида таймеров:

  • механические. Самые простые, относятся к полуавтоматическим системам управления. Включение выполняется вручную, выключаются автоматически через заданный период времени (до 120 минут). Не требуют источников питания, закрывающий клапан приводится в действие за счет пружины. Преимущества – низкая стоимость и высокая надежность. Недостатки – без присутствия людей во время включения не обойтись;

  • электронные с механическим управлением. Режимы полива полностью автоматизированы, график полива может регулироваться на семидневный период, длительность полива до 120 минут. Преимущества – относительно низкая стоимость, легкость создания программ и управления. Недостатки – невозможность подключения дополнительного оборудования;

  • электронные с программным управлением. Самые современные приборы, имеют возможность установки до 16 специальных функций. Недостатки – высокая стоимость. Кроме этого, неподготовленным пользователям бывает сложно устанавливать программы.

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

Таймер для полива на 2 линии, механический «Expert Garden»

  1. Электромагнитный клапан. В определенное время на электромагнитную катушку подается питание, под действием электромагнитного поля сердечник втягивается в соленоид и перекрывает водный поток. Если питание прекращается, то сердечник пружиной выталкивается вверх и просвет трубы открывается. В таймерах принцип работы может быть обратным – без напряжения клапан пружиной зарывается, а при возникновении сильного магнитного поля открывается. За счет такого принципа действия экономится заряд батареек. Отличить работу соленоидного клапана можно по характерному щелчку во время открытия/закрытия.
  2. Шаровой кран. Открытие/закрытие выполняет редуктор, который приводится в действие электрическим двигателем. Для экономии заряда также постоянно находится в закрытом положении, открывается только на период включения системы для полива. Во время срабатывания таймера с шаровым краном слышен непродолжительный шум работы электрического двигателя и редуктора.

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

Электронные таймеры с механическим управлением (тумблерного типа)

Очень простые в управлении, надежные и долговечные устройства. Для выбора режимов работы системы полива нужно выполнить следующие действия:

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

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

Производители в комплекте с таймером реализуют полный набор фитингов для подключения пластиковых труб или гибких шлангов различного диаметра. Питание таймера от двух пальчиковых батареек типа ААА 1,5 В.

Таймер полива — фото

Электронные таймеры с программным управлением

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

  • снимите пластиковую крышку. Она довольно плотно закручивается на заводе-изготовителе, придется приложить значительные усилия;
  • нажмите кнопку включения Time, на электронном табло появятся параметры установки программы. Установите текущее время и день недели, действие нужно подтверждать нажатием кнопки Set;
  • по очереди переходите на каждый день недели, выбирайте время и продолжительность включения электронного таймера. Данные параметры будут сохраняться весь период пользования;
  • при желании на приборе можно настроить до 16 различных программ. Для этого нужно нажать кнопку Prog и после этого настраивать нужное количество программ. Все введенные данные должны подтверждаться нажатием кнопки Set.

Внутри устройства установлен довольно емкий конденсатор. Он предназначен для подачи сигнала о критическом разряде батареек и перехода таймера в режим автономного питания. При понижении заряда батареек на дисплее появится предупредительный сигнал. Со времени его появления батарейки еще могут работать 2–3 дня в зависимости от частоты и длительности включения системы полива.

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

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

Есть модели таймеров, предназначенных для работы на больших и сложных системах полива. Они имеют несколько клапанов, что позволяет контролировать режимы поливки нескольких отдельных зон, для каждой из них устанавливаются свои параметры. Многоклапанные устройства могут подключаться к напряжению 220 В или иметь до восьми батареек ААА 1,5 В.

Какие данные следует принимать во внимание во время настройки датчиков

От правильности настройки программы таймера во многом зависят условия выращивания растений. Что нужно принимать во внимание?

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

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

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

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

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

Дополнительные возможности таймеров

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

  1. Датчик дождя. Такое оборудование применяется во время монтажа полива на открытых участках. Датчик дождя подает сигнал на электронное устройство о наличии естественных осадков. Таймер реагирует на эти сигналы и пропускает один полив, совпадающий с периодом дождя. Датчик настраивается в диапазоне осадков от 3 мм до 25 мм. Такой широкий диапазон позволяет более точно регулировать нормы полива с учетом погодных условий. Наличие функции ускоренного отзыва позволяет в минимальные сроки прекращать полив после начала дождя, устройства не требуют дополнительного обслуживания. В зависимости от регулировок вентиляционного кольца устанавливается отсрочка возврата дачка в режим ожидания. Время возврата в исходное положение имеет прямую зависимость от влажности и температуры окружающего воздуха. Это позволяет добиваться значительной экономии воды.
  2. Мембранный насос. Может монтироваться в совместном с таймером или отдельном корпусе, следит за уровнем воды в накопительных емкостях. При уменьшении количества воды ниже критического уровня автоматически включается насос для пополнения запасов. После наполнения баков насос отключается.
  3. Радиоканальный датчик влажности почвы. Самый современный прибор, значительно облегчает уход за растениями. Устанавливается в нескольких местах на грядках, блокирует команду таймера на полив в случае высокой влажности почвы. Самые современные устройства, повышают урожайность сельскохозяйственных культур минимум на 10%.
  4. Фильтр очистки воды. Выполняет качественную очистку воды, значительно увеличивает время эксплуатации таймера.

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

Видео – Таймеры полива для самотечных систем

Некоторое время назад я прикинул, что было бы неплохо автоматизировать полив на даче. Обзоры некоторых пользователей муськи также сыграли не последнюю роль в принятии этого решения. Но поскольку электроника - это не мой профиль, решено было делать аппаратную часть проекта максимально упрощенной, и по возможности обойтись без ЛУТ, травления плат и прочих сложностей. Короче, хотелось реализовать свою систему как некий конструктор, собранный из стандартных компонентов, а получилось это или нет - решать вам.

UPD: добавлен скетч для Ардуино.

1. Осмысление хотелок и упорядочивание мыслей проекта
Проект изначально задумывался примерно в таком виде: 4 мощных разбрызгивателя (в перспективе 8), столько же электромагнитных клапанов, релейный модуль для них, экран 16x2 символов, часы реального времени и Arduino в качестве мозгов.
Я рассчитывал, что для управления клапанами будет достаточно какого-нибудь простого меню, через которое можно задавать текущее время, время начала полива и длительность работы.
Потом прикинул, что 8 входов ардуины отдавать на клавиатуру - это чересчур. И вообще, не все клавиатуры одинаково полезны везде оправдано использование только цифрового блока; нужно ведь не только вводить циферки, но и реализовать навигацию по меню.
А если так, то лучше использовать джойстик - это более универсальное решение чем цифровая клавиатура, да и управление становится «интуитивным»… разумеется, если его удастся таким сделать… Зимой были куплены релюшки, один 12-вольтовый клапан, один разбрызгиватель, джойстик, ардуина и экран, и в феврале-марте я начал отлаживать скетч для поливалки.
В процессе разработки программной части было внесено еще несколько изменений в первоначальный проект. В частности, я добавил несколько датчиков температуры-влажности и блок ручного управления клапанами. Кроме того, для защиты от работы мотора вхолостую я решил поставить на вход датчик расхода воды, чтобы аварийно отключать мотор в случае длительного отсутствия потока.
Зачем столько датчиков? Да просто стоят они не очень дорого, пустые входы на плате оставались, а знать температуру и влажность на разных частях участка - полезно. Датчики я планировал поставить в теплице, на улице и в приямке для насосной станции, а также где-то в огороде разместить датчик влажности почвы и датчик температуры почвы.
А вообще - покажу я лучше таблицу датчиков и пинов ардуины

2. Закупка необходимых компонентов
Привожу список компонентов системы, купленных в Китае (большинство приобрел на aliexpress, но пару лотов взял на Ebay - там было дешевле). Два лота уже сняты с продаж, поэтому вместо ссылок на них будут снапшоты - чтобы заинтересованные люди знали что искать.
1 , цена 6,36$ (лот у другого продавца, т.к. мой продавец снял этот датчик с продаж)
1 , цена 0,74$
1 , цена 0,63$
1 , цена 1,16$
1 , цена 0,56$
1 , цена 1,79$
1 , цена 1,1$
1 , цена 0,66$
1 , цена 0,5$
1 , цена 1,35$
1 , цена 3,56$
1 , цена 0,84$
3 , цена 0,99$ за штуку, всего 2,97$
4 , цена 5,59$ за штуку, всего 22,36$
4 , цена 3,62$ за штуку, всего 14,48$. Аналоги легко ищутся
4 , цена 0,95$ за пару, всего 1,9$
Итоговые затраты в интернетах - 60,96$

В местном строительном магазине были куплены следующие вещи:
2 бухты поливочного шланга 5/8 (по 30м) - 540000 бел.рублей, или примерно 28$
8 муфт 1/2 - 112000 бел.рублей, или примерно 5,8$
3 тройника 1/2 - 60000 бел.рублей, или примерно 3$
8 штуцеров 15*16 - 92000 бел.рублей, или примерно 4,8$
Итоговые затраты в оффлайне - 804000 бел.рублей, или 41,2$

Также стоит упомянуть то, что не вошло в этот список - некоторые вещи из этого списка достались мне условно-бесплатно (старая рухлядь), на какие-то вещи я просто запамятовал цены. Это:
40 метров 4-жильного сигнального кабеля для подключения температурных датчиков;
40 метров самого дешевого 2-жильного медного кабеля для передачи 12 вольт на электромагнитные клапаны;
2 разветвителя RJ-11, которые были использованы в качестве выходов для подключения датчиков температуры и влажности, и 4 коннектора для кабелей с датчиками;
2 разветвителя RJ-45, для связи блока управления, находящегося в доме, с блоком реле и датчиков почвы, находящимся на улице рядом с насосом, и 4 коннектора для кабелей;
старый кабель (витая пара) - метров 30-40, для соединения ардуины с релюшками;
коннектор для подключения дисковода, выпаянный со старой материнской платы, и шлейф от дисковода;
старый блок питания на 24 вольта;
обрезки мебельного щита толщиной 12-16 мм для изготовления коробок для системы.

Фотки разветвителей до применения не сделал, выглядят примерно так:

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

3.1 Датчик влажности почвы (надеюсь, долгоживущий)
Как вы можете заметить, в списке покупок отсутствует датчик влажности почвы, хотя в проекте он заявлен. Дело в том, что сама идея закапывать в землю кусок текстолита с тоненькими полосками металла мне показалась достаточно бредовой, поэтому я решил найти способ получше. Пошарившись по интернету, я нашел на тематическом форуме, там есть хорошие советы и примеры. В общем, решил сделать так же, как там и написано: 2 проводника, резисторы и 3-жильный провод. В качестве катода и анода была использована одна велосипедная спица, безжалостно покусанная на части. Вот для сравнения куски донора и целая спица


Паяем провода, резисторы и куски спицы - в общем, делаем все так, как написано на форуме


Потом временно фиксируем анод и катод на пластилин, чтобы заделать наше рукоделие термоклеем


Далее в качестве формочки был взят маленький стаканчик от детского йогурта, в нем я сделал отверстие для провода, аккуратно установил конструкцию внутрь и залил анкерным составом Ceresit СХ-5






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






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

Для использования этого мегадевайса требуется предварительная калибровка. Делается это элементарно: берем сухую почву, в нее тыкаем самодельный датчик, проверяем и записываем полученное значение влажности. Затем льем туда столько воды, чтобы получилось небольшое болотце, и снова снимаем значение с датчика.
По-быстрому откалибровался вот этим скетчем с форума:
#define PIN_SOIL_LEFT 6 #define PIN_SOIL_RIGHT 7 #define PIN_SOIL_HUMIDITY 0 void setup(){ Serial.begin(9600); pinMode(PIN_SOIL_LEFT, OUTPUT); pinMode(PIN_SOIL_RIGHT, OUTPUT); pinMode(PIN_SOIL_HUMIDITY, INPUT); } void setSensorPolarity(boolean flip){ if(flip){ digitalWrite(PIN_SOIL_LEFT, HIGH); digitalWrite(PIN_SOIL_RIGHT, LOW); }else{ digitalWrite(PIN_SOIL_LEFT, LOW); digitalWrite(PIN_SOIL_RIGHT, HIGH); } } void loop(){ setSensorPolarity(true); delay(1000); int val1 = analogRead(PIN_SOIL_HUMIDITY); delay(1000); setSensorPolarity(false); delay(1000); // invert the reading int val2 = 1023 - analogRead(PIN_SOIL_HUMIDITY); reportLevels(val1,val2); } void reportLevels(int val1,int val2){ int avg = (val1 + val2) / 2; String msg = "avg: "; msg += avg; Serial.println(msg); }
В моем случае, значение на датчике было чуть больше 200 в сухой почве, и чуть меньше 840 во влажной.
Теперь у нас есть минимальный и максимальный уровни влажности конкретно взятой почвы, их нужно будет внести в соответствующие константы в основном скетче. Вот и все!

3.2 Блок питания для клапанов
Можно было, конечно, купить в Китае обычный блок питания на 12 вольт, выдающий хотя бы 1 ампер, но в закромах Родины куче старого барахла нашелся зарядник от дохлого шуруповерта, выдающий полампера при напряжении 24 вольта. Поэтому был куплен понижающий преобразователь на LM2596, и затем успешно встроен в старый блок. Отдельных фоток процесса я не делал, бо не об этом обзор… Вот модифицированный блок вместе с клапаном, сойдет за пример


В корпусе блока было сделано отверстие, удобной регулировки напряжения. Теперь с помощью отвертки и мультиметра можно выставить любое напряжение от 5 до 24 вольт. Получилось довольно неплохо, как мне кажется. К сожалению, я прощёлкал Aloha_ про понижающие преобразователи… Но в моем случае все вроде бы нормально, перегрева не замечено.

3.3 Держатели для разбрызгивателей
Вот эту штуку в магазине купить точно не получится! Потому что сделана она в количестве 4 единиц по спецзаказу:) Хотя здесь все просто: полудюймовая труба высотой один метр, снизу сделан изгиб под 90 градусов и приварен уголок длиной 30-40 см, чтобы держатель можно было воткнуть в землю в нужной части участка. Вверху резьба должна быть внутренняя на полдюйма (в моем случае там просто наварена муфта), внизу - кому как удобнее. В моем случае там наружная полдюймовая резьба, но как показала практика - лучше бы была внутренняя, тогда не пришлось бы навинчивать сначала муфту, потом в нее штуцер или клапан… В общем, не продумал заранее, поэтому получил дополнительные расходы на муфты:(
Наглядные фото держателя - вот:




И еще чуть дальше будет фотка держателя в процессе эксплуатации.

3.4 Коробки для блока управления и реле
Сначала я планировал разместить все части поливатора в одной коробке, и оснастить ее выходами на клапаны (12 вольт), насос (220 вольт) и собственно на датчики. Однако потом решил разнести силовую и слаботочную части поливатора, да и щелканье реле ранним утром будет очень сомнительным удовольствием. Соответственно, плата с ардуиной, джойстик, кнопки, экран и часы реального времени остаются в «домашней» коробочке, а реле будут вынесены в коробку на улицу, поближе к мотору и клапанам.
Для сборки управляющего блока мне понадобился кусок мебельного щита, перьевые сверла для отверстий под кнопки и под джойстик, и лобзик, для отверстия под экран

Под спойлером сверлим, пилим и собираем коробочку













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






Экранчик и часы реального времени были объединены в одно целое вот таким способом


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


Осталось закинуть в коробку мозги - и блок управления готов.
Теперь внимание. Эстетам, детям и беременным женщинам настоятельно не рекомендуется открывать следующий спойлер… Потому что красивых плат, которые умеют делать Yurok, ksiman и прочие известные здесь личности, вы не увидите. Зато вы увидите монтаж платы в лучших традициях КитайПодвалПрома: проводки вместо дорожек, и термоклей, чтобы это все не развалилось. Поэтому еще раз предупреждаю: не надо открывать спойлер! Поверьте на слово, эта плата работает, но лучше ее не видеть:)

Спойлер, не открывайте его, там ужос и кышмарь!

Вот зачем вы открыли, а? Ну и ладно, любуйтесь… Помидорами не кидать!









Блок управления соединен с блоком реле двумя витыми парами. Для взаимодействия «мозгов» с клапанами и мотором достаточно 5 управляющих линий и еще 2 линии для питания реле (5 вольт и земля), но ведь есть еще расходомер (питание уже есть, значит нужна всего 1 линия), датчик влажности почвы (3 линии) и 4 светодиода, отображающие текущее состояние клапанов. Итого - используется 15 линий из 16 доступных.
В блоке реле помимо самих релюшек встроены розетки для мотора и для блока питания клапанов, а также обычный выключатель для принудительного запуска мотора. Сам блок сделан из тех же обрезков мебельного щита, что и блок управления, а выглядит как обычная деревянная коробочка. На входе две витые пары разведены на плате по коннекторам на реле мотора, реле клапанов, светодиоды, датчик влажности и датчик расхода воды. В стенке предусмотрительно сделаны отверстия под провода на клапаны, на выключатель и на розетку, управляемую через реле мотора.


На клеммнике выведены провода к электромагнитным клапанам


Снаружи я прикрутил розетку для мотора, управляемую ардуиной, и выключатель для ручного включения мотора


Все провода разведены и выведены куда нужно… вроде бы


На внутренней стенке появилась розетка для 12-вольтового блока питания, он тоже здесь виден


В готовом виде все это смотрится примерно так:


Немного объясню что и как. В коробку заведено питание, внутри спрятан блок для 12-вольтовых клапанов, реле мотора и реле клапанов. Наружу выходит питание на мотор (розетка), а также выведен выключатель для ручного управления мотором (он запараллелен с релюшкой). Кроме того, есть возможность подключения датчиков влажности почвы и расхода воды, но они пустуют. Почему - расскажу немного дальше.
4. Описание функционала
Собственно, вот неполный набор электронных компонентов для сборки


Сначала был собран примерно вот такой «осьминог» из ардуины и небольшого набора периферии, именно это чудо я использовал для отладки скетча


Минимальный как я уже говорил, было решено сделать управление джойстиком, и вырисовывался следующий минимально необходимый набор пунктов меню:
1. Настройки даты и времени
2. Настройки расписания полива
3. Информация с датчиков
4. Возможность принудительной перезагрузки

Реализовать его мне удалось, причем получилось даже обойтись англоязычным дисплеем 1602 - помогла библиотека LCD_1602_RUS, которая позволила «сделать» 8 кириллических символов. После этого вперемешку с английскими буквами можно было составить вполне понятные для пожилых людей (моих родителей) русские названия пунктов меню. Конечный размер скетча - чуть меньше 1400 строк, втиснутых в 45 килобайт.
Результат компиляции:
Скетч использует 19 626 байт (63%) памяти устройства. Всего доступно 30 720 байт.
Глобальные переменные используют 1 316 байт (64%) динамической памяти, оставляя 732 байт для локальных переменных. Максимум: 2 048 байт.

Никаких предупреждений о нехватке памяти, к счастью, уже нет.
Самого скетча пока здесь нет, со временем выложу. Хочу немного «причесать» код:)
Что получилось и что не получилось? Ну, на осьминоге получилось все:) К сожалению, жизнь вносит свои коррективы, и после разнесения мозгов, релюшек и сенсоров кое-что работать перестало… Во-первых, аналоговые датчики. Увы, но сейчас из-за длины кабелей они у меня не работают - соответственно, пункт меню «ПОЧВА» показывает нулевую температуру и влажность. Есть определенные мысли, как это исправить, но пока - некогда. У родителей на даче бываю не слишком часто и занимаюсь не только поливатором, а тут еще очередная командировка… В любом случае - я буду рад дельным советам от читателей.
Во-вторых, сходу не удалось подключить расходомер - на этот раз вовсе не из-за длины кабелей. Я сгоряча поставил его на вход в мотор, сразу после обратного клапана, как оказалось - ему там не место. Датчик, видимо, не совсем герметичен, и при подъеме воды идет подсос воздуха через микрощели в корпусе, как результат - насос не тянет воду. Пока снял его, потом попробую поставить на выход насоса - должно работать, но возможно - будет немного подтекать.
Теперь по работающему функционалу. Ну, с расписанием понятно - это именно то, ради чего затевался проект. Но иногда нужно просто включить ненадолго поливалку, и для этого я сделал два режима принудительного полива: ограниченный и бесконечный. Ограниченный режим включается коротким нажатием на кнопку, длительность такого полива можно указать в настройках. Если нажать на кнопку еще раз - полив будет прекращен досрочно. По длинному нажатию включается бесконечный полив - выключить его можно опять таки нажатием на кнопку.
Ну и приятное дополнение - просмотр температуры в приямке с насосной станцией, в теплице и на улице.
Раз в сутки запланирована принудительная перезагрузка ардуины.

5. Собираем поливатор
Здесь я сделаю небольшое отступление и приведу технические характеристики водонапорных компонентов.
Насос JY1000 польской фирмы Omnigena, согласно утверждениям производителя, имеет такие характеристики:
Производительность: 60 л/мин;
Максимальная высота подъема: 50 м;
Потребляемая мощность: 1100 Вт;
Максимальная глубина самовсасывания: 8 м.

Кроме того, обнаружился вот такой полезный график

вот


Ну и конечно, не стоит забывать, что производительность очень сильно зависит от глубины скважины и забитости фильтров.

Электромагнитный клапан безымянный, но я находил на множестве страниц (например ) примерно такие характеристики:
Напряжение: DC 12 В;
Ток: 0.5A;
Давление: 0.02-0.8 МПа;
Производительность 3-25 л/мин.
Кроме того, встречается оптимистичное утверждение: Water pressure: hydrostatic pressure of 1.2 MPa, which lasted 5min, no rupture, deformation, leakage. . Т.е. в течение 5 минут клапан выдерживает даже существенно более высокое давление, чем стандартное «не более 0.8 МПа».
Вот здесь можно рассмотреть клапан в разных ракурсах


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


Вот - один клапан в такой одежке, может здесь видно получше

Производительность разбрызгивателя , согласно данным , составляет 700 - 1140 л/ч, или примерно 11.7-19 л/мин при давлении жидкости 0,21-0,35 МПа соответственно.
Как видно, в идеальных условиях насос выдает слишком большой поток, который просто физически не «осилит» ни клапан, ни тем более разбрызгиватель. Забегая вперед, скажу, что скважина в моем случае далеко не идеальная и до 60 л/мин она не дотягивала. Потом я прикинул, что напор упадет также и из-за длины шланга от мотора до самого дальнего разбрызгивателя (почти 30 метров), решил сильно не заморачиваться по этому поводу. Потом, в ходе «производственных испытаний», подключил к мотору одновременно три разбрызгивателя. Оказалось, что они льют очень слабо, да еще и давления не хватает на то, чтобы изменилось направление вращения. Выглядело так: разбрызгиватель крутится до тех пор, пока не упрется в ограничитель сектора, и вращение прекращается. Если убрать ограничитель сектора, то по кругу вращение более-менее без проблем, но радиус полива - метра 2-3. Отбросил один разбрызгиватель - стало немного лучше и они даже пытались вертеться, но радиус все равно был максимум метра 4. А вот один разбрызгиватель работает замечательно - бьет очень далеко (замерял рулеткой, на 9 метров брызгает только в путь), и никаких проблем с вращением.
Сами разбрызгиватели можно регулировать под свои нужды:
- разбить струю, выкрутив винт напротив сопла;
- изменить угол и соответственно дальность струи, поднимая или опуская пластину напротив сопла;
- изменить сектор полива с помощью ограничителей, или вообще убрать фиксатор ограничителя.
Вот фотографии «элементов управления» с близкого расстояния








Брызгалка на держателе и с подведенным шлангом/проводом выглядит вот так:

6. Работа
Блок управления, кроме текущего времени, умеет показывать всякую полезную информацию вроде температуры и влажности. Там же задается начало и длительность полива по расписанию, и длительность полива при активации кнопкой.
Коротким нажатием одной из 4 кнопок можно включить полив на определенное время (задается в настройках), длинное нажатие включает «бесконечный» режим, т.е. отключить полив на заданной линии можно будет только этой же кнопкой, или он отключится, если по расписанию линию необходимо отключить. Хотя зачем я повторяюсь? Даешь слайды!
Вот здесь видны настройки:











Вот здесь - смотрим температуру и влажность






Информацию получаем отсюда

Вот так собственно выглядит колхозинг датчиков в дачных условиях. Крыльцо


Приямок


Теплица


Эти датчики пока ничего не говорят, почему - объяснял выше



И, наконец… Семь бед - один ресет:

А теперь - видео, куда ж без него.
1. Мини-экскурсия - что есть в меню поливатора. Датчики были не подключены, поэтому все показывают по нулям.


2. Настройка поливатора на включение 2 и 3 линии длительностью по одной минуте


3. Как выглядит полив по расписанию, которое было задано для теста


4. Как выглядит полив по расписанию на экране поливатора


5. Тестовый полив с кнопки - включение и выключение. Работу разбрызгивателя не показываю, но чесслово - все работает


6. Разбрызгиватель и его настройка: что где крутится, поворачивается и фиксируется


7. Работа разбрызгивателя на небольшом секторе с близкого расстояния

7. Сравнение с рыночными предложениями
Доступный вариант на российском рынке - системы Gardena, продается в OBI. Можно взять блок управления за 13590 рублей и еще по 3990 рублей, итоговая цена будет всего-то 29550. Здорово, конечно, и выглядит красиво. Но отдавать почти 500 американских денег… И насколько я понимаю - здесь в комплекте нет разбрызгивателей, соединителей и шлангов! Ладно, смотрим дальше.
Опять Gardena в том же магазине, но здесь уже система на 6 линий. Состоит из таймера подачи воды за 11190 рублей и за 6990 рублей - итого 18180, или почти 300 бакинских… Шланги и разбрызгиватели, как и в предыдущем случае, нужно покупать отдельно.
Ebay сходу предложил блок управления вместе с клапанами примерно за 60 долларов, плюс ~35$ стоит доставка - в итоге почти сотня. Как вариант, доступны контроллеры (без клапанов) Rain Bird ESP-RZX Series 4 и Hunter XC 400i по ценам не ниже 75 баксов, не считая доставки. Клапаны отдельно; для хантера, например, они идут от 22 баксов за штуку, оптом дешевле.

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

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

Планирую купить +101 Добавить в избранное Обзор понравился +128 +247

На следующем рисунке приведена структурная схема комплексного решения для дистанционного управления и мониторинга системы полива.

Контроллер системы управления собирает данные с датчиков системы и с помощью GPRS-модема передаёт их на сервер. В ответ он получает от сервера команды для управления исполнительными устройствами системы (поливочными клапанами, насосом и клапаном блокировки долива воды в резервуар).

Пользователь имеет доступ на сервер через веб-приложение с ПК или мобильного устройства.

Шкаф управления системой

На следующем рисунке приведена структурно-функциональная схема шкафа управления.

Центром системы является контроллер Arduino Mega.

Контроллер управляет модемом SIM900 с помощью AT-команд, передаваемых через COM-порт.

Таким образом осуществляется обмен данными с сервером.

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

Сигналы от датчиков уровня воды в резервуаре принимает модуль ввода дискретных сигналов. Датчики имеют выход типа «сухой контакт». Подробнее о них можно почитать . Для того чтобы завести дискретные сигналы от датчиков в контроллер, пропитываем их напряжением 24 В от блока питания. Модуль ввода представляет собой дискретные входы с опторазвязкой, преобразующие входной уровень напряжения в 24 В в уровень 5В, понятный контроллеру.

Для измерения температуры на улице к контроллеру подключен датчик DS18B20. Контроллер производит с ним обмен по интерфейсу OneWire.

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

WEB приложение для управления поливом через интернет

Через веб-приложение пользователь:

  • отслеживает текущее состояние системы: уровень воды в баке, температуру на улице, состояние линий полива(полив идёт/полив остановлен).
  • управляет поливом (включает и выключает необходимые линии) в ручном режиме
  • составляет расписание для полива в автоматическом режиме
  • получает оповещение о важных событиях в системе (потеря связи, низкий уровень воды в баке и т.д.)
  • анализирует график изменения температуры на улице за время работы системы
  • просматиривает события, происходящие на объекте, пользуясь журналом событий

Главный экран управления и мониторинга состояния системы

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

На этом же экране пользователь может вручную включить или выключить любую из линий полива.

В нижней части экрана отображаются последние события, произошедшие на станции.

Экран управления расписанием полива в автоматическом режиме

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

Журнал событий

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

Оповещение пользователя

В настройках станции пользователь может назначить некоторые события как «предупредительные» или «аварийные». При возникновении этих событий сервер будет оповещать пользователя по электронной почте и (или) СМС. Это могут быть события обрыва связи со станцией, низкий уровень воды в резервуаре или низкая температура на улице.

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

График уличной температуры

На этом экране отображается график изменения температуры в течение заданного промежутка времени (10 мин., 30 мин., час, 12 часов, сутки, неделя, месяц).

Дальнейшее развитие системы

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

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

Заключение

Для тех, кто хочет более подробно изучить технологию обмена данными с удалённым сервером с помощью Arduino и модема SIM900, мы подготовили серию уроков на эту тему. Вот .

На этом пока всё! Надеемся, что было интересно! До новых встреч на LAZY SMART ! Чтобы не пропустить новую статью, вступай в нашу

Хотели бы вы, чтобы ваши растения сообщали о том, что их надо полить? Или просто держали вас в курсе уровня влажности почвы?

В этой статье мы рассмотрим проект автоматизированного полива с использованием датчика уровня влажности почвы:

Обзор датчика уровня влажности почвы

Подобные датчики подключаются достаточно просто. Два из трех коннекторов - это питание (VCC) и земля (GND). При использовании датчик желательно периодически отключать от источника питания, чтобы избежать возможного окисления. Третий выход - сигнал (sig), с которого мы и будем снимать показания. Два контакта датчика работают по принципу переменного резистора - чем больше влаги в почве, тем лучше контакты проводят электричество, падает сопротивление, сигнал на контакте SIG растет. Аналоговые значения могут отличаться в зависимости от напряжения питания и разрешающей способности ваших аналоговых пинов микроконтроллера.

Для подключения датчика можно использовать несколько вариантов. Коннектор, приведенный на рисунке ниже:

Второй вариант более гибкий:

Ну и конечно можно напрямую запаять контакты на датчик.

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

Датчик уровня влажности почвы с нанесенным защитным покрытием на контактах и изолированными проводниками для подключения:

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

Один из недостатков датчиков подобного типа - недолговечность их чувствительных элементов. К примеру, компания Sparkfun решает эту проблему, используя дополнительное покрытие (Electroless Nickel Immersion Gold). Второй вариант продления срока действия сенсора - подавать на него питание непосредственно при снятии показаний. При использовании Arduino, все ограничивается подачей сигнала HIGH на пин, к которому подключен датчик. Если вы хотите запитать датчик большим напряжением чем предоставляет Arduino, всегда можно использовать дополнительный транзистор.

Контроль уровня влажности почвы - пример проекта

В приведенном ниже проекте использованы датчик уровня влажности, аналог платы Arduino - RedBoard и LCD дисплей, на котором выводятся данные про уровень влажности почвы.

Датчик уровня влажности почвы компании SparkFun:

Красный проводник (VCC) подключается к 5 В на Arduino, черный - к земле (GND), зеленый - сигнал - к аналоговому пину 0 (A0). Если вы используете другой аналоговый пин на Arduino, не забудьте внести соответствующие изменения в скетч для микроконтроллера, представленный ниже.

LCD дисплей подключен к 5 В, земле и цифровому пину 2 (также можно изменить и внести изменения в код) для обмена данными с микроконтроллером по серийному протоколу связи.

Стоит отметить, что если вы хотите продлить срок службы вашего сенсора, можно подключить его питание к цифровому пину и питать его только при считывании данных, а после - отключать. Если запитывать датчик постоянно, его чувствительные элементы вскоре начнут ржаветь. Чем больше влажность почвы, тем быстрее будет проходить коррозия. Еще один вариант – нанести гипс на датчик. В результате влага будет поступать, но коррозия значительно замедляется.

Программа для Arduino

Скетч достаточно простой. Для передачи данных на LCD дисплей вам необходимо подключить библиотеку Software Serial library. Если у вас в ее нет, скачать можно здесь: Arduino GitHub

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

// Пример использования датчика уровня влажности почвы с LCD дисплеем.

SoftwareSerial mySerial(3,2); // pin 2 = TX, pin 3 = RX (не используется)

int thresholdUp = 400;

int thresholdDown = 250;

int sensorPin = A0;

String DisplayWords;

int sensorValue;

mySerial.write(254);

mySerial.write(128);

// очистка дисплея:

mySerial.write(" ");

mySerial.write(" ");

// перемещение курсора к началу первой строки LCD дисплея:

mySerial.write(254);

mySerial.write(128);

// "Dry, Water it!"

mySerial.write(254);

mySerial.write(192);

mySerial.print(DisplayWords);

} else if (sensorValue >= thresholdUp){

// перемещение курсора к началу второй строки дисплея:

mySerial.write(254);

mySerial.write(192);

mySerial.print(DisplayWords);

// перемещение курсора к началу второй строки дисплея:

mySerial.write(254);

mySerial.write(192);

mySerial.print(DisplayWords);

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

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

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

Датчик уровня влажности в составе автоматической системы полива на основании Arduino:

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

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

Схема подключения двигателя постоянного тока () на примере копии Arduino от SparkFun приведена ниже:

Ниже приведен скетч для Arduino (по сути он такой же как и приведенный выше с небольшим дополнением для управления двигателем):

// В скетче считываются данные с датчика и отображается уровень влажности почвы

// если почва сухая, начинает работать двигатель

// Для работы с дисплеем используется библиотека softwareserial library

#include <SoftwareSerial.h>

// Подключите пин для обмена данными с использованием LCD дисплея по серийному протоколу RX к цифровому пину 2 Arduino

SoftwareSerial mySerial(3,2); // pin 2 = TX, pin 3 = RX (unused)

// Управляем двигателем с помощью пина 9.

// Этот пин должен обязательно поддерживать ШИМ-модуляцию.

const int motorPin = 9;

// Тут мы настраиваем некоторые константы.

// Настройка констант зависит от условий внешней среды, в которой используется датчик

int thresholdUp = 400;

int thresholdDown = 250;

// Настраиваем пин A0 на Arduino для работы с датчиком:

int sensorPin = A0;

pinMode(motorPin, OUTPUT); // устанавливаем пин, к которому подключен двигатель в качестве выхода

mySerial.begin(9600); // устанавливаем скорость обмена данными на 9600 baud

delay(500); // ждем пока дисплей прогрузится

// Здесь мы объявляем строку, в которой хранятся данные для отображения

// на жидкокристаллическом дисплее. Значения будут изменяться

// в зависимости от уровня влажности почвы

String DisplayWords;

// В переменной sensorValue хранится аналоговое значение датчика с пина А0

int sensorValue;

sensorValue = analogRead(sensorPin);

mySerial.write(128);

// очистка дисплея:

mySerial.write(" ");

mySerial.write(" ");

// перемещение курсора к началу первой строки LCD дисплея: mySerial.write(254);

mySerial.write(128);

// запись необходимой информации на дисплей:

mySerial.write("Water Level: ");

mySerial.print(sensorValue); //Использование.print вместо.write для значений

// Теперь мы проведем проверку уровня влажности по сравнению с заданными нами предварительно числовыми константами.

// Если значение меньше thresholdDown, отображаем слова:

// "Dry, Water it!"

// перемещение курсора к началу второй строки дисплея:

mySerial.write(254);

mySerial.write(192);

DisplayWords = "Dry, Water it!";

mySerial.print(DisplayWords);

// запуск двигателя на небольших оборотах (0 – остановка, 255 – максимальная скорость):

analogWrite(motorPin, 75);

// Если значение не ниже thresholdDown надо провести проверку, не будет

// ли оно больше нашего thresholdUp и, если, больше,

// отобразить надпись "Wet, Leave it!":

} else if (sensorValue >= thresholdUp){

// перемещение курсора к началу второй строки дисплея:

mySerial.write(254);

mySerial.write(192);

DisplayWords = "Wet, Leave it!";

mySerial.print(DisplayWords);

// выключение двигателя (0 – остановка, 255 – максимальная скорость):

analogWrite(motorPin, 0);

// Если полученное значение в диапазоне между минимальным и максимальным

// и почва была раньше влажной, а теперь сохнет,

// отображаем надпись "Dry, Water it!" (то есть, когда мы

// приближаемся к thresholdDown). Если почва была сухой, а теперь

//быстро увлажняется, отображаем слова "Wet, Leave it!" (то есть, когда мы

// приближаемся к thresholdUp):

// перемещение курсора к началу второй строки дисплея:

mySerial.write(254);

mySerial.write(192);

mySerial.print(DisplayWords);

delay(500); //Задержка в пол секунды между считываниями

Удачи вам в реализации автоматического полива ваших растений!

Похожие публикации