Автомат полива с датчиком влажности почвы

Автомат полива с датчиком влажности почвы

Содержание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

int thresholdUp = 400;

int thresholdDown = 250;

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

int sensorPin = A0;

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

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

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

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

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

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

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

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

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

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

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

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

if (sensorValue = thresholdUp)

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

DisplayWords = «Wet, Leave it!»;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// Подключите пин для обмена данными с использованием 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); // ждем пока дисплей прогрузится

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

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

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

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

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

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

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

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

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

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

if (sensorValue = thresholdUp)

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

DisplayWords = «Wet, Leave it!»;

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

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

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

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

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

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

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

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

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

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

Источник:
http://arduino-diy.com/arduino-datchik-urovnya-vlazhnosti-pochvy-i-avtomaticheskiy-poliv

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

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

Содержание

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

Модуль состоит из двух частей: контактного щупа YL-69 и датчика YL-38, в комплекте идут провода для подключения.. Между двумя электродами щупа YL-69 создаётся небольшое напряжение. Если почва сухая, сопротивление велико и ток будет меньше. Если земля влажная — сопротивление меньше, ток — чуть больше. По итоговому аналоговому сигналу можно судить о степени влажности. Щуп YL-69 соединен с датчиком YL-38 по двум проводам. Кроме контактов соединения с щупом, датчик YL-38 имеет четыре контакта для подключения к контроллеру.

  • Vcc – питание датчика;
  • GND – земля;
  • A0 — аналоговое значение;
  • D0 – цифровое значение уровня влажности.

Датчик YL-38 построен на основе компаратора LM393, который выдает напряжение на выход D0 по принципу: влажная почва – низкий логический уровень, сухая почва – высокий логический уровень. Уровень определяется пороговым значением, которое можно регулировать с помощью потенциометра. На вывод A0 подается аналоговое значение, которое можно передавать в контроллер для дальнейшей обработки, анализа и принятия решений. Датчик YL-38 имеет два светодиода, сигнализирующих о наличие поступающего на датчик питания и уровня цифрового сигналы на выходе D0. Наличие цифрового вывода D0 и светодиода уровня D0 позволяет использовать модуль автономно, без подключения к контроллеру.

Технические характеристики модуля

  • Напряжение питания: 3.3-5 В;
  • Ток потребления 35 мА;
  • Выход: цифровой и аналоговый;
  • Размер модуля: 16×30 мм;
  • Размер щупа: 20×60 мм;
  • Общий вес: 7.5 г.

Пример использования

Запустим Arduino IDE. Создадим новый скетч и внесем в него следующие строчки: Аналоговый вывод датчика подключен к аналоговому входу Arduino, который представляет собой аналого-цифровой преобразователь (АЦП) с разрешением 10 бит, что позволяет на выходе получать значения от 0 до 1023. Значение переменных для полного полива (minvalue) и сильной сухости почвы (maxvalue) получим экспериментально. Большей сухости почвы соответствует большее значение аналогового сигнала. С помощью функции map масштабируем аналоговое значение датчика в значение нашего светодиодного индикатора. Чем больше влажность почвы, тем больше значение светодиодного индикатора (количество зажженных светодиодов). Подключив данный индикатор к цветку, мы издали можем видеть на индикаторе степень влажности и при определять необходимость полива.

Источник:
http://3d-diy.ru/wiki/arduino-datchiki/datchik-vlazhnosti-pochvy-arduino/

Тестируем почву с Ардуино и датчиком влажности FC-28

Соединяем Arduino с датчиком влажности почвы FC-28, чтобы определить, когда ваша почва под растениями нуждается в воде.

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

В этой статье мы собираемся использовать датчик влажности почвы FC-28 с Ардуино. Этот датчик измеряет объемное содержание воды в почве и дает нам уровень влаги. Датчик дает нам на выходе аналоговые и цифровые данное. Мы собираемся подключить его в обоих режимах.

Как работает датчик почвы FC-28?

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

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

Датчик FC-28 можно соединить в аналоговом и цифровом режимах. Сначала мы подключим его в аналоговом режиме, а затем в цифровом.

Спецификация

Спецификации датчика влажности почвы FC-28:

  • входное напряжение: 3.3–5V
  • выходное напряжение: 0–4.2V
  • входной ток: 35mA
  • выходной сигнал: аналоговый и цифровой

Датчик влажности почвы FC-28 имеет четыре контакта:

  • VCC: питание
  • A0: аналоговый выход
  • D0: цифровой выход
  • GND: земля

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

Аналоговый режим

Для подключения датчика в аналоговом режиме нам потребуется использовать аналоговый выход датчика. Датчик влажности почвы FC-28 принимает аналоговые выходные значения от 0 до 1023.

Влажность измеряется в процентах, поэтому мы сопоставим эти значения от 0 до 100, а затем покажем их на последовательном мониторе (serial monitor). Вы можете установить различные значения влаги и повернуть водяную помпу «включено-выключено» согласно этим значениям.

Электрическая схема

Подключите датчик влажности почвы FC-28 к Ардуино следующим образом:

  • VCC FC-28 → 5V Arduino
  • GND FC-28 → GND Arduino
  • A0 FC-28 → A0 Arduino

Код для аналогового выхода

Для аналогового выхода мы пишем такой код:

Объяснение кода

Прежде всего, мы определили две переменные: одну для контакта датчика влажности почвы, а другую для хранения выхода датчика.

В функции setup, команда Serial.begin(9600) поможет в общении между Arduino и серийным монитором. После этого, мы напечатаем «Reading From the Sensor . ” (англ. — считываем с датчика) на обычном дисплее.

В функции цикла, мы прочитаем значение от аналогового выхода датчика и сохраним значение в переменной output_value. Затем мы сопоставим выходные значения с 0-100, потому что влажность измеряется в процентах. Когда мы брали показания с сухого грунта, значение датчика было 550, а во влажном грунте значение датчика было 10. Мы сопоставили эти значения, чтобы получить значение влаги. После этого мы напечатали эти значения на последовательном мониторе.

Цифровой режим

Для подключения датчика влажности почвы FC-28 в цифровом режиме мы подключим цифровой выход датчика к цифровому контакту Arduino.

Модуль датчика содержит потенциометр, который использован для того чтобы установить пороговое значение. Пороговое значение после этого сравнивается со значением выхода датчика используя компаратор LM393, который помещен на модуле датчика FC-28. Компаратор LM393 сравнивает значение выхода датчика и пороговое значение, и после этого дает нам выходное значение через цифровой вывод.

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

Электрическая схема

Соединения для датчика влажности почвы FC-28 и Ардуино в цифровом режиме следующие:

  • VCC FC-28 → 5V Arduino
  • GND FC-28 → GND Arduino
  • D0 FC-28 → Пин 12 Arduino
  • Светодиод положительный → Вывод 13 Ардуино
  • Светодиод минус → GND Ардуино

Код для цифрового режима

Код для цифрового режима ниже:

Объяснение кода

Прежде всего, мы инициализировали 2 переменные для соединения вывода светодиода и цифрового вывода датчика.

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

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

На этом вводный урок по работе с датчиком FC-28 для Ардуино мы завершаем. Успешных вам проектов.

Источник:
http://arduinoplus.ru/testiruem-pochvu-s-arduino-i-datchikom-vlazhnosti-fc-28/

Как работает датчик влажности почвы, и его взаимодействие с Arduino

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

С этим типом системы вы можете поливать растения только при необходимости и избегать чрезмерного или недостаточного полива.

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

Как работает датчик влажности почвы, и его взаимодействие с Arduino

Как работает датчик влажности почвы?

Работа датчика влажности почвы довольно проста.

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

Рисунок 1 – Работа датчика влажности почвы

Это сопротивление обратно пропорционально влажности почвы:

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

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

Обзор аппаратного обеспечения

Типовой датчик влажности почвы состоит из двух компонентов.

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

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

Рисунок 2 – Зонд датчика влажности почвы

Датчик также содержит электронный модуль, который соединяет датчик с Arduino.

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

Этот же сигнал подается на высокоточный компаратор LM393 для его оцифровки, с выхода которого сигнал подается на вывод цифрового выхода (DO).

Рисунок 3 – Регулировка чувствительности датчика влажности почвы

Для регулировки чувствительности цифрового выхода (DO) модуль содержит встроенный потенциометр.

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

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

Совет: поверните движок потенциометра по часовой стрелке, чтобы увеличить чувствительность, или против часовой стрелки, чтобы уменьшить ее.

Рисунок 4 – Светодиодные индикаторы питания и состояния почвы

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

Распиновка датчика влажности почвы

Датчик влажности почвы очень прост в использовании и содержит только 4 вывода для связи с внешним миром.

Рисунок 5 – Распиновка датчика влажности почвы

AO (аналоговый выход) выдает аналоговый сигнал с напряжением в диапазоне между напряжением питания и 0 В и будет подключен к одному из аналоговых входов нашей платы Arduino.

Вывод DO (цифровой выход) выдает цифровой выходной сигнал со схемы встроенного компаратора. Вы можете подключить его к любому цифровому выводу на Arduino или напрямую к 5-вольтовому реле или подобному устройству.

Вывод VCC подает питание на датчик. Рекомендуется питать датчик напряжением от 3,3 до 5 В. Обратите внимание, что сигнал на аналоговом выходе будет зависеть от того, какое напряжение питания подается на датчик.

GND для подключения земли.

Измерение влажности почвы с помощью аналогового выхода

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

Подключение

Давайте подключим наш датчик влажности почвы к плате Arduino.

Сначала вам нужно подать питание на датчик. Для этого вы можете подключить вывод VCC на модуле к выводу 5V на Arduino.

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

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

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

Кроме того, итоговая мощность, потребляемая модулем (оба светодиода горят), составляет около 8 мА, поэтому можно запитать модуль от цифрового вывода на Arduino.

Итак, давайте подключим вывод VCC модуля к цифровому выводу 7 Arduino, а вывод GND модуля к выводу GND Arduino.

И, наконец, подключите вывод AO модуля к выводу A0 аналого-цифрового преобразователя Arduino.

Схема соединений показана на рисунке ниже.

Рисунок 6 – Подключение датчика влажности почвы к Arduino для считывания показаний на аналоговом выходе

Калибровка

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

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

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

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

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

850, когда почва сухая;

400, когда почва полностью насыщена влагой.

Рисунок 7 – Калибровка датчика влажности почвы

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

Финальная сборка

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

  • 750 – достаточно сухая для полива.

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

Рисунок 8 – Вывод аналоговых показаний датчика влажности почвы

Измерение влажности почвы с помощью цифрового выхода

Для нашего второго эксперимента мы определим состояние почвы с помощью цифрового выхода.

Подключение

Мы будем использовать схему из предыдущего примера. На этот раз нам просто нужно удалить подключение к выводу аналого-цифрового преобразователя и подключить вывод DO модуля к цифровому выводу 8 Arduino.

Соберите схему, как показано ниже:

Рисунок 9 – Подключение датчика влажности почвы к Arduino для считывания показаний на цифровом выходе

Калибровка

Для калибровки цифрового выхода (DO) модуль имеет встроенный потенциометр.

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

Рисунок 10 – Состояния цифрового выхода датчика влажности почвы

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

Теперь ваш датчик откалиброван и готов к использованию.

Код Arduino

После того, как схема будет собрана, загрузите в Arduino следующий скетч.

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

Рисунок 11 – Вывод цифровых показаний датчика влажности почвы

Источник:
http://radioprog.ru/post/823

Датчик влажности почвы для Ардуино

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

Обзор датчиков

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

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

Интересно: платформа позволяет с нуля создать собственную прошивку контроллера. Этому способствует обширный и хорошо документированный инструментарий разработчика.

Устройство состоит из трех компонентов:

  • погружной щуп с электродами;
  • комплект проводов;
  • управляющий блок.

Щуп соединяется с платой, а последняя подключается непосредственно к мини контроллеру Arduino. Все подобные модули имеют три или четыре выхода:

  • S — сигнальный (цифровой/аналоговый);
  • VCC — питание;
  • GND — заземление.

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

Датчик может подключаться и к аналоговому, и цифровому входу платы Ардуино.

Схема подключения

Принцип соединения гигрометра с Arduino общий для всех видов сенсоров.

  • Выход VCC подключается к Arduino на 5В-контакт.
  • GND соединяется с соответствующим контактом Ардуино.
  • Сигнальный выход — с сигнальным входом (аналоговым или цифровым, в зависимости от ситуации).

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

Примеры подключения

Рассмотрим работу moisture-датчика на примере модели FC-28. Он умеет:

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

  • напряжение на входе — 3.3–5 В;
  • напряжение сенсора на выходе — 0–4.2 В;
  • тип выдаваемого сигнала — цифровой, аналоговый;
  • значение тока на входе 35 мА.

FC-28 оснащен четырьмя контактами:

  • питание — пин VCC;
  • контакт GND — заземление;
  • A0 — вывод аналогового сигнала;
  • D0 — вывод цифрового.

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

Аналоговый режим работы

В этом режиме используется аналоговый вывод. Рассматриваемый датчик влажности почвы Arduino работает со входными значениями в диапазоне 0–1023.

Влажность измеряется в процентах, поэтому в ПО сообщаемые значения будут сопоставлены цифрам 0–100.

Далее следует запрограммировать аналоговый вывод. Пример программы:

Цифровой режим

Для этого цифровой пин датчика подключается к соответствующему контакту платы Arduino.

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

Если «порог» превышен, цифровой контакт передаст 5В, включая светодиод. Если оно меньше, диод не загорится. На примере ниже — образец такой системы, собранной с помощью макетной платы и простых диодов.

Схема подключения в данном случае почти идентична аналоговой, но:

  • D0 будет соединен с 12 пином компьютера;
  • «плюс» светодиода — с 13 выводом;
  • «минус» — с контактом GND контроллера Arduino.

Соединение с дисплеем:

Программный код цифрового режима гигрометра c комментариями:

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

Недостатки

Основная проблема таких датчиков — их недолговечность. Чувствительные элементы погружаются в почву, на них подается электричество, и это приводит к постепенному окислению и выходу из строя: окислы быстро уничтожают металл. Щуп начинает выдавать неверные показания, а со временем перестает работать совсем.

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

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

Заключение

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

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

Видео по теме

Источник:
http://vashumnyidom.ru/komfort/uxod/datchik-vlazhnosti-pochvy-arduino.html

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

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

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

Для реализации проекта из этой статьи нам потребуются следующие компоненты:

1. Что такое датчик влажности почвы и как он работает?

Существует бесконечное множество датчиков влажности почвы и практически все варианты работают по схожему принципу; подключение датчиков, соответственно, тоже не претерпевает сложных изменений.

У всех подобных датчиков имеется 3 выхода – VCC (питание), GND (земля) и S (сигнальный выход). Из-за особенностей работы датчика и относительно небольшого его потребления, питать датчик желательно от цифрового пина микроконтроллера, включая лишь на время замера и выключая после него.

1.1 Подключение датчика к Arduino

Для подключения датчика к Arduino в комплекте обычно идут все необходимые компоненты:

  • Микросхема
  • Щуп для установки в почву
  • Провода для подключения

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

Один из возможных вариантов защиты – применение так называемой жидкой изоленты или обычного лака для ногтей, оба варианта справятся с задачей!

1.2 Теория и специфика работы датчика

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

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

Технические характеристики.

Напряжение питания контроллера, В

12

Напряжения питание рейки клапанов (диапазон), В

12-24

Потребляемый ток(без учета тока выходов), мА

80

Количество зон полива

4

Количество климатических зон

1

Блокировка полива

есть

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

есть

Защита от аварийной (неконтролируемой) подачи воды

есть

Тип используемых температурных датчиков

DS18B20

Диапазон напряжений датчика влажности, В

0-3.3

Максимальное напряжение выходов с ОК, В

24

Максимальный ток, выходов с ОК, мА

250

Максимальное напряжение клапанной рейки, В

24

Максимальный ток, одного (каждого) выхода клапанной рейки, А

1

Максимальный суммарный ток рейки клапанов, А

5

Размеры (ВхШхГ)

150х130х19 мм

Внешний вид и назначение элементов.

  1. Регулировка контрастности дисплея.
  2. Многофункциональная кнопка.
  3. Элемент питания типа CR2032.

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

  4. Индикация питания (красный светодиод).

    В случае наличия основного питания (17) светодиод будет гореть. Данный индикатор не отображает есть ли питание на рейке (11).

  5. Индикация работы (синий светодиод).

    Индикатор загорится в случае если контроллер выполняет какую-либо задачу: полив, вентиляцию, обогрев, сброс воды.

  6. Индикация ошибки-предупреждения (оранжевый светодиод).

    Индикатор загорится если контроллер не смог осуществить возложенные на него задачи. Скажем при поливе за указанное число попыток влажность почвы не пришла в норму или за заданный промежуток времени не смог снизить(увеличить) температуру в теплице.

  7. Аппаратный сброс контроллера.

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

  8. Разъем программирования (SWD).

    Используется для загрузки программы («заливка прошивки») в микроконтроллер по интерфейсу SWD.

  9. Клавиатура.

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

  10. Рейка клапанов.

    Выходы для питания электроклапанов, объединённых общим программно-управляемым питанием.

  11. Питание рейки клапанов.

    На данный разъем подается питание от 12 до 24В, в зависимости от типа используемых клапанов.

  12. Клапан первого канала.
  13. Клапан второго канала.
  14. Клапан третьего канала.
  15. Клапан четвертого канала.

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

  16. Клапан сброса воды.

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

  17. Питание контроллера +12В.
  18. Датчик влажности канала 1.
  19. Датчик влажности канала 2.
  20. Датчик влажности канала 3.
  21. Датчик влажности канала 4.

    Входы для подключения датчиков влажности.

  22. Датчик температуры воды.
  23. Датчик температура воздуха.

    Цифровые датчики температуры, типа DS18B20. Лучше ставить оригинальные, у некоторых китайских подделок может быть дрейф показаний температуры.

  24. Выход для подключения обогревателя.
  25. Выход для подключения вентиляции.

    Выходы для подключения вентиляции и отопления выполнены по типу открытый коллектор («ОК»). Максимальное напряжение, коммутируемое соответствующим «ключом» – 24 В.

  26. Выход +12 (7.5-12В).

    Контакт внутренне соединен с основным питанием, конструктивно выведен здесь чтобы облегчить подключение выходов с «ОК».

  27. Блокировка полива. Вход.

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

  28. Дисплей.
  29. Динамик.

Подключение основного питания

Для подключения основного питания вам понадобится блок питания с напряжением +12 В и выходным током не менее 100 мА (при использовании совмещенного питания для клапанов на 12В - выходной ток определяется потребностью ваших клапанов). Подключите его соблюдая полярность к разъему 17.

Подключение электрических клапанов

Контроллер рассчитан на применение в своем составе электромагнитных, нормально-закрытых электрических клапанов на напряжение от 12 до 24 вольт постоянного тока, а также при помощи дополнительного твердотельного реле клапанов на напряжение 220В переменного тока.

Вариант 1. Электроклапаны на 12 В.

При использовании электроклапанов на 12 В, питание на электроклапаны можно подать как от отдельного источника (Вариант 1), так и с основного питания (Вариант 2). При использовании основного питания, его источник должен обеспечить потребности клапанов.

Вариант 1. Раздельное питание.

Вариант 2. Совмещенное питание.

Вариант 2. Электроклапаны на 24 В.

При использовании электроклапанов на 24 В, подключите к соответствующим разъемам рейки клапанов - источник + 24В и электроклапаны.

Вариант 3. Электроклапаны на 220 В (переменного тока).

Для использования клапанов на 220В вам понадобятся твердотельные реле, одно реле на каждый из клапанов. Тип используемых реле должен быть с входным напряжением 12 В (обычно такие реле имею входное напряжение в диапазоне 3-32В и «легко» подходят). Рейку в данном случае достаточно будет запитать от основного питания, путем установки перемычки между основным питанием и питанием рейки.

Подключение датчиков

Датчики влажности

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

Вид сверху.

Обратная сторона.

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

Датчики температуры

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

DS18B20 - Оригинальный вид

Упакованный в гильзу

Блокировка полива (аппаратная).

Для временной приостановки полива без внесения изменений в текущий алгоритм и не затрагивая другую функциональность (обогрев, вентиляцию) в контроллере предусмотрена аппаратная блокировка полива путем разрыва цепи 27. При замкнутой цепи разъема 27 контроллер будет работать в обычном режиме, в случае же разрыва полив заблокируется до момента восстановления целостности последней. Размыкатели в цепи могут стоять последовательно, тем самым можно организовать более одной точки блокировки. Подобная функциональность вам понадобится для комфортного нахождения в теплице, на газоне или других зонах полива, без угрозы для вас и ваших гостей внезапно намокнуть начавшимся поливом.

Аварийная блокировка полива.

Аварийная блокировка полива может наступить в следующих случаях:

  • Влажность почвы не пришла к заданной величине по истечении всех циклов полива (в случае полива по датчику влажности). В случае если задан параметр «Повтор полива», то через указанное в данном параметре времени (в часах) - ошибка сбросится и контроллер будет пробовать поливать.
  • Температура подводимой воды – выше заданной (см. «Контроль за температурой воды»).

При аварийной блокировке полива – контроллер полив прервет, и будет ждать условий выхода из «состоянии ошибки»

  1. Нажата «Многофункциональная кнопка»
  2. Влажность почвы пришла в норму по независимым от контроллера причинам.
  3. В случае установки параметра «Повтор полива» - дождется окончания заданного в параметре времени.

Многофункциональная кнопка.

Многофункциональная кнопка (2) - функциональность которой зависит от времени нажатия на нее.

  1. Быстрое нажатие на кнопку - сбросит все счетчики полива, приведя их в исходное состояние. Используется чтобы вывести контроллер из состояния «ошибка полива», либо чтобы начать полив заново.
  2. Более длительное нажатие (≈2-3 сек) кнопки переведет контроллер в состояние «калибровка клавиатуры», данный режим необходим при некорректной работе основной клавиатуры.
  3. Длительное нажатие (около 10 сек) сбросит все настройки контроллера в заводские и перезагрузит его.

Подключение отопления и вентиляции

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

Сигналы управления (24,25) имеют выход с «ОК», и соответственно требуют питания. Для облегчения монтажа на разъем (26) выведено основное питание +12В.

Для подключения нагрузки, так же, как и в случае с электроклапанами на 220В, предлагается использовать твердотельные реле.;

Полив.

Обзор экрана одного из каналов полива.

  • K-01 (02,03,04) - Номер канала.
  • П:70% - Уровень влажности, которую автомат должен поддерживать, устанавливается в настройках, раздельно для каждого канала.
  • Т:56% - Текущее значение уровня влажности, которую передает датчик влажности.
  • Полив - Текущая операция, выполняемая автоматом в настоящий момент.
  • A:05 – Счетчик циклов полива. Количество циклов полива до окончания полива.
  • Т:001 - Время до конца проведения текущей операции в секундах.

Полив по влажности.

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

На рейку клапанов, предварительно, подается питание - на время, заданное в настройках как «Задержка старта» (питание с рейки вы можете использовать по своему усмотрению, например, для упреждающего включение насоса).

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

Полив по времени.

            Полив по времени осуществляется через равные промежутки времени, через 1,2,3….24 часа.

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

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

            Пример:

  • Циклов полива = 20
  • Длительность полива = 20 секунд
  • Пауза полива    = 30 секунд

Длительность полива: 20 циклов  * 20 сек  = 400 секунд  ≈ 6 минут.
Общее время полива: 20 циклов  * (20 сек + 30 сек)  = 1000 сек  ≈ 17 минут.

            В случае если время полива выпадет на запрещенные для полива часы, контроллер начнет, полив сразу после ее окончания.

Ограничения на полив.

Запрет полива по времени.

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

Для включения функции:

Меню -> Номер канала -> Окно запрета полива переключить в TRUE (1).

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

Меню -> Номер канала -> Старт запр. полива (время в часах).

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

Меню -> Номер канала -> Стоп запр. полива.

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

Например, «Старт запр. Полива» = 13, «Стоп запр. Полива» = 14 - тогда с 13:00 до 14:00 часов текущего дня контроллер не будет производить полив, а будет ждать окончания периода запрета, то есть 14:00, на экране состояния канала полива в это время будет выведена надпись: «Запр 13:00 - 14:00»,

Хотелось бы отметить что время старта и стопа полива величины, переходящие через сутки, например, если вы качестве времени старта поставите 14 часов, а время стопа 11, то есть ровно наоборот того как было в прошлом примере, запрет будет распространятся с 14:00 текущего дня до 11 часов следующего, другими словами автомат будет иметь возможность полива только в период 11:00 до 14:00 (всего 3 часа). Также следует учесть, что если в период до наступления запретной зоны, автомат перешел в состояние ошибки, по какой бы то ни было причине, то после выхода за пределы запретной зоны данная ошибка сбросится и автомат попытается выполнить полив.

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

Контроль за температурой воды.

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

Задержка старта.

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

Цикл полива

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

Защита от аварийной подачи воды.

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

  1. На всю рейку клапанов.
  2. На конкретный клапан.

Тем самым, чтобы вода из магистрали «пошла» в зону полива, необходимо чтобы произошли оба действия.  Если воду не санкционированно попытается включить одно из действий (например, «пробьёт» выходной ключ клапана), второе не даст ему это сделать (общее питание на рейке будет отсутствовать).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

//Скачиваем библиотеку для работы дисплея и подключаем к программе #include "QuadDisplay2.h"; //Создаем константу, обозначающую контакт, к которому подключена водяная //помпа #define VODPOMPA_PIN 4; // Создаем константу, обозначающую контакт, к которому подключили //анализатор влаги земли #define HUM_PIN A0; //Min по влажности #define HUM_MIN 200; // Max по влажности #define HUM_MAX 700; //Время между проверками полива #define INTER 60000 * 3; //Объявляем переменную, в которой будет храниться значение влажности unsigned int hum = 0; //В этой переменной будем хранить временной промежуток unsigned long Time = 0; // Объявляем объект из класса QuadDisplay, затем передаем номерной знак //контакта CS QuadDisplay dis(9); //Создаем метод, отвечающий за работу дисплея void setup(void) { //Запуск метода begin(); // Объявляем функцию, которая будет отвечать за выход водяной помпы из //контакта pinMode(VODPOMPA_PIN, OUTPUT); //На дисплее загорается число - 0 dis.displayInt(0); } //Создаем метод, отвечающий за показатель влажности на данный момент void loop(void) { //Рассчитываем показатель увлажнения на данный момент int humNow = analogRead(HUM_PIN); // Если значение показателя не равно предыдущему, то... if(humNow != hum) { //Сохраняем полученные сейчас значение hum= humNow; //Вывод значения на экран displayInt(humNow); } //Задаем условия: если прошел заданный пользователь промежуток времени и //статус влаги в почве меньше необходимого, то... if ((Time == 0 || millis() - Time > INTER) && hum

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

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

1. Об устройстве

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

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

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

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

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

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

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

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

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

Схема подключения:

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

Int minv = 600;//малая влажность int maxv = 220;//полный полив int normv = 500;//чуть влажная int value = 0;//полученное значение int last_value = 0;//последнее значимое изменение int value_sdvig =50;//значимое изменение int ralay = 6; //пин реле int time_work = 10;//время работы помпы в сек int analogPin = A0;//пин датчика

//Переменные таймаута
int second = 0; // секунды
int time_off = 0; // счетчик оставшегося времени
int pause_time = 15; // время отдыха после полива в минутах

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(ralay,HIGH);//настройка реле
digitalWrite(ralay, HIGH);
}

void poliv()
{
int time_tmp;
time_tmp=time_work;
digitalWrite(ralay, LOW);
while(time_tmp>0 && value>normv){// ждем истечения времени time_work или нормальной влажности почвы
delay(1000);
value=analogRead(analogPin);//обновляем значение влажности
time_tmp--;
}
digitalWrite(ralay, HIGH);
second=0; // сбрасываем секунды на ноль
time_off=pause_time;// устанавливаем задержку между поливами
}

void loop() {
// put your main code here, to run repeatedly:
value=analogRead(analogPin);
if (value>(last_value+value_sdvig)||value Serial.println(value);
last_value=value;
}
if ((value>(minv-value_sdvig)) && time_off критическая влажность - 50 и не было недавних поливов
// временные функции что бы не играться с таймерами
if (second>59)
{
second=0;
if (time_off>0) time_off--;
}
delay(1000);//пауза 1 сек
second++;
}

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

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

  • Библиотека iarduino_4LED (для работы с четырёхразрядным LED индикатором).

О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki - Установка библиотек в Arduino IDE .

Видео:

Схема подключения:

В данном уроке, LED индикатор подключён к цифровым выводам 2 и 3, кнопки подключены к цифровым выводам 11 и 12, силовой ключ к цифровому выводу 10 (с ШИМ), датчик влажности почвы к аналоговому входу A0.

Алгоритм работы:

  • При подаче питания , устройство не активно (на индикаторе мигает текущее значение влажности почвы).
    • Если однократно нажать на обе кнопки «A» и «B», то текущее состояние влажности почвы будет сохранено как пороговое (то при котором требуется начать полив) и устройство перейдёт в рабочий режим. Пороговое значение влажности почвы можно изменить в режиме ввода значений.
    • Если нажать и удерживать обе кнопки «A» и «B» дольше 2 секунд, то устройство перейдёт в режим ввода значений.
  • В рабочем режиме устройство выводит на индикатор показания: текущей влажности почвы, пороговой влажности почвы и времени прошедшего с момента последнего полива. (Пороговая влажность почвы отображается тусклее чем остальные показания). Если устройство находится в рабочем режиме и значение текущей влажности почвы упадёт ниже значения пороговой влажности почвы, то устройство перейдёт в режим полива.
  • В режиме полива устройство выводит на индикатор количество секунд до окончания полива и мигает точками, а также подаёт сигнал ШИМ на силовой ключ , который включает насос . Значение ШИМ (скорость мотора насоса) указывается в скетче . Длительность полива устанавливается в режиме ввода значений. По окончании полива, устройство переходит в режим ожидания.
  • В режиме ожидания устройство выводит на индикатор надпись STOP и мигает точками. Данный режим предусмотрен для того, что бы влага равномерно распределилась по грунту до перехода устройства в рабочий режим. Время нахождения в режиме ожидания указывается в скетче . По истечении времени режима ожидания, устройство перейдёт в рабочий режим.
  • В режим ввода значений можно перейти из любого режима, удерживая обе кнопки «A» и «B» дольше 2 секунд. Данный режим состоит из двух пунктов: установка пороговой влажности почвы (при котором требуется начать полив) и установка длительности самого полива. Вначале отобразится значение пороговой влажности, которое можно изменить нажатием или удержанием кнопки «A» (уменьшение), или кнопки «B» (увеличение). Если однократно нажать на обе кнопки «A» и «B», то значение изменится на текущую влажность почвы. После того как пороговая влажность задана, нужно нажать и удерживать дольше 2 секунд обе кнопки «A» и «B», на экране отобразится длительность полива, которую можно изменить нажатием или удержанием кнопки «A» (уменьшение), или кнопки «B» (увеличение). После того как длительность полива задана, нужно нажать и удерживать дольше 2 секунд обе кнопки «A» и «B», устройство перейдёт в рабочий режим.
  • Если в режиме полива нажать любую кнопку , устройство прекратит полив и перейдёт в режим ожидания.
  • Если в режиме ожидания нажать любую кнопку , устройство перейдёт в рабочий режим.

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

#include

// подключаем библиотеку для работы с четырёхразрядным LED индикатором iarduino_4LED dispLED(2,3); // объявляем объект для работы с функциями библиотеки iarduino_4LED, с указанием выводов индикатора (CLK , DIO) const uint8_t pinSensor = A0; // объявляем константу с указанием номера аналогового входа, к которому подключен датчик влажности почвы const uint8_t pinButtonA = 12; // объявляем константу с указанием номера вывода, к которому подключена кнопка A const uint8_t pinButtonB = 11; // объявляем константу с указанием номера вывода, к которому подключена кнопка B const uint8_t pinPump = 10; /* вывод с ШИМ */ // объявляем константу с указанием номера вывода, к которому подключен силовой ключ uint8_t btnState; // объявляем переменную для хранения состояний кнопок: 0-не нажаты, 1-нажата A, 2-нажата B, 3-нажата A и B, 4-удерживается A, 5-удерживается B, 6-удерживались A и B uint16_t arrMoisture; // объявляем массив для хранения 10 последних значений влажности почвы uint32_t valMoisture; // объявляем переменную для расчёта среднего значения влажности почвы uint32_t timWatering; // объявляем переменную для хранения времени начала последнего полива (в миллисекундах) uint32_t timSketch; // объявляем переменную для хранения времени прошедшего с момента старта скетча (в миллисекундах) const uint8_t timWaiting = 60; // объявляем константу для хранения времени ожидания после полива (в секундах) от 0 до 99 const uint8_t pwmPump = 100; // объявляем константу для хранения скорости вращения мотора насоса (коэффициент) от 0 до 255 uint16_t timDuration = 5; /* по умолчанию */ // объявляем переменную для хранения длительности полива (в секундах) от 0 до 99 uint16_t limMoisture = 0; /* по умолчанию */ // объявляем переменную для хранения пороговой влажности почвы (для вкл насоса) от 0 до 999 uint8_t modState = 0; /* при старте */ // объявляем переменную для хранения состояния устройства: 0-не активно, 1-ожидание, 2-активно, 3-полив, 4-установка пороговой влажности, 5-установка времени полива void setup(){ dispLED.begin(); // инициируем LED индикатор pinMode(pinButtonA, INPUT); // переводим вывод pinButtonA в режим входа pinMode(pinButtonB, INPUT); // переводим вывод pinButtonB в режим входа pinMode(pinPump, OUTPUT); // переводим вывод pinPump в режим выхода digitalWrite(pinPump, LOW); // выключаем насос timWatering = 0; // сбрасываем время начала последнего полива } void loop(){ //*******Чтение данных:******* btnState = Func_buttons_control(); // читаем состояние кнопок, но не дольше 2 секунд timSketch = millis(); // читаем текущее время с момента старта скетча if(timWatering>timSketch){timWatering=0;} // обнуляем время начала последнего полива, если произошло переполнение millis() valMoisture = 0; for(int i=0; i0){limMoisture--;}} if(btnState==2){if(limMoisture0){limMoisture--;} delay(100); dispLED.print(limMoisture);}} if(btnState==5){while(digitalRead(pinButtonB)){if(limMoisture0){timDuration--;}} if(btnState==2){if(timDuration0){timDuration--;} delay(100); dispLED.print(timDuration);}} if(btnState==5){while(digitalRead(pinButtonB)){if(timDuration20 && b>20){dispLED.print("----");} // если обе кнопки удерживаются дольше 2 секунд, выводим на экран прочерки, указывая что их пора отпустить if(a>20 && b==0){return 4;} // если кнопка A удерживается дольше 2 секунд, возвращаем 4 if(a==0 && b>20){return 5;} // если кнопка B удерживается дольше 2 секунд, возвращаем 3 delay(100); // задержка на 0,1 секунды, для подавления дребезга } if(a>20 && b>20){return 6;} // если обе кнопки удерживались дольше 2 секунд, возвращаем 6 if(a> 0 && b> 0){return 3;}else // если обе кнопки удерживалась меньше 2 секунд, возвращаем 5 if(a> 0 && b==0){return 1;}else // если кнопка A удерживалась меньше 2 секунд, возвращаем 2 if(a==0 && b> 0){return 2;}else // если кнопка B удерживалась меньше 2 секунд, возвращаем 1 {return 0;} // если ни одна из кнопок не была нажата, возвращаем 0 }

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

Некоторые казались фантастикой всего 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); }}

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

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

Что для этого необходимо?

Как это собрать?

Калибровка

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

    Запишите показания на дисплее при воткнутом в сухой горшок сенсоре. Это - минимум влажности.

    Полейте цветок и дождитесь пока вода полностью впитается в землю и показания сенсора установятся на одном уровне. Запишите их. Это - максимум влажности.

    В скетче исправьте значения константы 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 // включаем помпу digitalWrite(POMP_PIN, HIGH) ; // ждём 2 секунды delay(2000 ) ; // выключаем помпу digitalWrite(POMP_PIN, LOW) ; // приравниваем переменной waitTime // значение текущего времени плюс 3 минуты waitTime = millis() ; } }

Демонстрация работы устройства

Что ещё можно сделать?

    Несмотря на золочение, контакты сенсора влажности со временем корродируют. Быстрее всего корродирование происходит при подключённом питании. Срок жизни сенсора можно значительно увеличить, если подключить питание к нему через силовой ключ. Когда надо получить данные - включаем питание сенсора, снимаем показания и тут же выключаем питание.

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

    Устройство, работающее от батареек, будет значительно безопасней питающегося от сети. Идеальным вариантом было бы питание ирригатора от батареек. Но Arduino Uno, как известно, даже в режиме сна потребляет более 10 мА. Выходом может являться использование Arduino Mini, способный в режиме сна снижать потребляемый ток до сотен мкА.

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

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

Из вышеперечисленного все, кроме насоса, изготовим самостоятельно. Насос подойдет любой маломощный. Можно поискать в старых и сломанных струйных принтерах или купить в автозапчастях насос для стеклоомывателя, самый простой я нашел за 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); }}

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

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

Что для этого необходимо?

Как это собрать?

Калибровка

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

    Запишите показания на дисплее при воткнутом в сухой горшок сенсоре. Это - минимум влажности.

    Полейте цветок и дождитесь пока вода полностью впитается в землю и показания сенсора установятся на одном уровне. Запишите их. Это - максимум влажности.

    В скетче исправьте значения константы HUMIDY_MIN на значение минимальной влажности и HUMIDY_MAX на значение максимальной влажности. Заново прошейте Arduino Uno.

Масштабирование решения

Мы описали решение для одного растения. Но обычно требуется поливать несколько растений. Помимо очевидного решения - подключения к Arduino нескольких помп и датчиков влажности - существует более простое и дешёвое. Достаточно в трубке, которая идёт в комплекте с помпой проделать шилом дырочки на расстоянии около 30 см и воткнуть в эти дырочки куски стержней от обычных шариковых ручек. Выглядеть это будет так:

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

Исходный код

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

// Подключаем библиотеку для работы с дисплеем // даём разумное для пина, к которому подключена помпа // даём разумное для пина, к которому подключён датчик влажности почвы // минимальный порог влажности почвы // максимальный порог влажности почвы // интервал между проверкой на полив растения // переменная для хранения показания влажности почвы // статическая переменная для хранения времени // создаём объект класса QuadDisplay и передаём номер пина CS // начало работы с дисплеем // пин помпы в режим выхода // выводим 0 на дисплей // считываем текущее показания датчика влажности почвы // если показания текущей влажности почвы // не равняется предыдущему запросу // сохраняем текущие показания влажности // и выводим показания влажности на дисплей // если прошёл заданный интервал времени // и значения датчика влажности меньше допустимой границы // выключаем помпу // приравниваем переменной waitTime // значение текущего времени плюс 3 минуты

Демонстрация работы устройства

Тестируем почву с Ардуино и датчиком влажности FC-28

Соединяем Arduino с датчиком влажности почвы FC-28, чтобы определить, когда ваша почва под растениями нуждается в воде.

В этой статье мы собираемся использовать датчик влажности почвы FC-28 с Ардуино. Этот датчик измеряет объемное содержание воды в почве и дает нам уровень влаги. Датчик дает нам на выходе аналоговые и цифровые данное. Мы собираемся подключить его в обоих режимах.

Шаг 1: Собираем все необходимые материалы

  • Arduino Uno (например)
  • часы реального времени DS3231 с батарейкой
  • MicroSD + SD адаптер или SD-карта
  • SD-модуль
  • ЖК-дисплей 16х2
  • датчик уровня влажности почвы YL-69
  • провода
  • потенциометр, я использовал на 47 кОм, но лишь потому, что не нашел на 10 или 20 кОм в своей коллекции
  • макетная плата

Все эти компоненты вполне доступны и совсем недороги.

Электрическая схема порогового датчика влажности почвы.

В результате изысканий появилась эта схема на одной единственной микросхеме. Подойдёт любая из перечисленных микросхем: К176ЛЕ5, К561ЛЕ5 или CD4001A. У нас эти микросхемы продают всего по 6 центов.

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

На элементах DD1.1 и DD1.2 собран задающий генератор, вырабатывающий импульсы с интервалом около 10 секунд. https://oldoctober.com/

Конденсаторы C2 и C4 разделительные. Они не пропускают в измерительную цепь постоянный ток, которые генерирует почва.

Резистором R3 устанавливается порог срабатывания, а резистор R8 обеспечивает гистерезис усилителя. Подстроечным резистором R5 устанавливается начальное смещение на входе DD1.3.

Конденсатор C3 – помехозащищающий, а резистор R4 определяет максимальное входное сопротивление измерительной цепи. Оба эти элемента снижают чувствительность датчика, но их отсутствие может привести к ложным срабатываниям.

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

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

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

Системы автоматизации полива

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

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

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

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

  • MegaD-328;
  • Arduino;
  • Hunter;
  • Toro.

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

Видео: КАК ИЗМЕРИТЬ ТЕМПЕРАТУРУ И ВЛАЖНОСТЬ. ДАТЧИКИ DHT11 И DHT22 [Уроки Ардуино #13]

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

Больше информации можно узнать из видео.

Принцип функционирования прибора

Исходный сигнал передаётся через токопроводящие щупы и усиливается. Потенциометр преобразует значение напряжения в диэлектрическую проницаемость, и усредняет полученные значения по длине щупов. Обычно детекторы имеют зону воздействия длиной 20…40 мм относительно нижней поверхности корпуса. С увеличением длины чувствительность (особенно на крайних участках) возрастает. Для обеспечения необходимой точности измерений датчики подвергают предварительной калибровке.

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

  • Рабочее напряжение: 2…5 В;
  • Рабочий ток: 20…40 мА;
  • Тип интерфейса: аналоговый или цифровой;
  • Рабочая температура использования: 10°C … 30°C.

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

Описание датчика влажности почвы V1.2

Принципиальная схема самого датчика приведена ниже.

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

Однако для прямоугольного сигнала этот конденсатор имеет определенное реактивное сопротивление. Чем больше влажность почвы, тем выше емкость датчика. Следовательно, существует меньшее реактивное сопротивление для прямоугольной волны, что снижает напряжение на сигнальной линии.

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

Установка датчика.

Обычно датчик влажности почвы устанавливается на глубине от 5 до 40 см от уровня земли в зависимости от растений, которые мы поливаем. В случае газона, глубже 5-10 см закапывать его не имеет смысла.
Перед закапыванием в землю необходимо «замачивать» датчик. Для этого на ночь его погружают в чашку с обычной водой.
При помещении датчика в землю также рекомендуется обильно полить почву вокруг, чтобы она была кашеобразной и плотно утрамбовать вокруг датчика. Цель данных манипуляций – обеспечить полный контакт датчика с почвой и исключить пустоты.
Через несколько 2-3 дня датчик начнет выдавать правильные стабильные данные о влажности почвы на вашем участке.
Некоторые замечания
Гипс – достаточно нежный материал, и достаточно быстро разрушается. Нужно помнить что гипсовый датчик влажности, если его не выкапывать на зиму прослужит не более 2-х лет. Поэтому необходимо периодически их менять.
Также очень не рекомендуется закапывать датчик влажности близко к контурам заземления вашего дома и контурам молниеотводов.

Автор: Али

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

Что это такое?

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

Что для этого необходимо?

irrigator_all_in.jpg

Мы собрали все необходимые детали в сет компонентов. В набор входят:

  1. Растение в горшке с сухой землёй

Так же удобно для индикации использовать:

Как это собрать?

  1. Установите Troyka Shield на Arduino Uno irrigator_1.jpg

  2. Подключите датчик влажности почвы через Troyka Shield к аналоговому пину A0 irrigator_2.jpg

  3. Подключите дисплей к управляющей плате через Troyka Shiled:

    1. Пин cs к 9 пину Toyka Shield.

    2. Пины SPI дисплея к разъёму SPI на Troyka Shiled irrigator_3.jpg

  4. Подключите силовой ключ к контакту 4 irrigator_4.jpg

  5. Подведите коммутирующее напряжение к силовому ключу в разъём P+ и P− irrigator_5.jpg

  6. Подключите помпу к силовому ключу через клеммник с разъёмами L+ и L−. irrigator_6.jpg В итоге должна получится схема.

  7. Воткните сенсор влажности почвы в землю.

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

  9. Опустите помпу в ёмкость с водой. irrigator_7.jpg

  10. Подключите питание.

Калибровка

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

  1. Запишите показания на дисплее при воткнутом в сухой горшок сенсоре. Это — минимум влажности.

  2. Полейте цветок и дождитесь пока вода полностью впитается в землю и показания сенсора установятся на одном уровне. Запишите их. Это — максимум влажности.

  3. В скетче исправьте значения константы 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();
  }
}

Демонстрация работы устройства

Принцип работы автоматической системы полива

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

  • Ёмкость для воды, колодец или водозаборная скважина.
  • Водонапорный насос.
  • Разветвлённая система трубопроводов.
  • Форсунки-разбрызгиватели или насадки для точечного полива растений.
  • Контроллер управления.

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

Другая полезная функция умных систем полива — это возможность управления ими в удалённом режиме. Контроллеры, имеющие выход в сеть через WiFi, могут поддерживать связь со смартфоном (планшетом, ноутбуком) владельца, находящимся на работе или в городской квартире. Через интернет процессор передаёт на мобильное устройство показатели встроенных в систему датчиков влажности и температуры воздуха. В зависимости от этого, пользователь через программу-фреймворк даёт команду контроллеру на полив растений. Также в удалённом режиме можно создавать сценарии работы автоматического полива и менять их в зависимости от погодных условий.

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

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

Хорошо зарекомендовали себя автоматические шаровые краны компании Aqualin со встроенными таймерами. Устанавливаются они между источником водоподачи (объёмная ёмкость, гидробак, скважина) и трубопроводом. В основе его работы лежит таймер, отдающий команды шаровому клапану с электромагнитным приводом. Устройство позволяет задавать нужный режим полива, минимальный срок работы установленного сценария составляет 1 час, а максимальный – 1 неделю.

шаровые краны для полива сада

Основные эксплуатационно-технические характеристики прибора

  1. Тип клапана – шаровый кран.
  2. Питание – автономное, от 2-х батарей АА по 1,5В.
  3. Внутренний диаметр крана – 19 мм.
  4. Соединительная резьба – ¾.
  5. Материал корпуса – синий или серый ударопрочный пластик.
  6. Время действия сценария – от 1 часа до недели.
  7. Регулировка длительности полива – от 1 минуты до 2-х часов.
  8. Диапазон рабочих температур – от +5 до +60оС.
  9. Габариты – 9 х 9 х 16,5 см
  10. Масса – 280 г.

Стоимость – 2466 рублей за комплект из двух контроллеров и втулок-переходников

Как работает автоматический ирригационный комплект для сада?

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

Стоимость на AliExpress от 476 рублей 

Контроллер при помощи резьбовой насадки-переходника крепится на водопроводный кран. В комплекте имеется два типа переходников – для резьбы с шагом ½ и ¾. Между таймером и переходником устанавливаются уплотнительные кольца во избежание протечек. К выходному штуцеру контроллера прикрепляется ещё один переходник, предназначенный для подсоединения водопроводных шлангов. На шланги, в нужных местах, посредством штуцерного соединения крепятся распылительные форсунки. На этом сбор системы заканчивается, и она готова к эксплуатации.

На таймере задаётся определённый сценарий работы: выставляется частота полива во временном интервале от 1 часа до 15 дней. Здесь же настраивается продолжительность подачи воды за один сеанс работы поливальной системы – от 59 секунд до 5 часов. Регулировать диапазон разбрызгивания воды форсунками можно поворотом их насадок вправо-влево.

Что входит в комплект?

Набор для оборудования для самостоятельного оборудования автоматической системы полива, при заказе в интернет-магазине, стоит 25$ не учитывая почтовых расходов.

В комплект входят следующие элементы:

  • Таймер-контроллер – 1 шт.
  • Гибкий шланг – 30 м, в зависимости от модификации.
  • Насадки-разбрызгиватели – 35 шт.
  • Тройниковые штуцеры для крепления разбрызгивателей к шлангу – 35 шт.
  • Пластиковые колышки для размещения шланга над землёй – 35 шт.
  • Прямые соединительные переходники для шланга – 2 шт.
  • Соединительные переходники 90оС – 2 шт.
  • Резьбовой адаптер ¾ – 1 шт.
  • Резьбовой адаптер ½ – 2 шт.

автоматичекая система полива

Стоимость на AliExpress от 476 рублей 

Электропитание блока управления автономное, от двух батарей или аккумуляторов АА по 1,5В каждая. Технические характеристики системы автополива выглядят так:

Диапазон рабочих температур – от +5 до +60оС.
Возможность подключения к трубам и кранам – ½ и ¾ дюйма.
Временной интервал программирования таймера – от 1 ч до 15 дней.
Время полива за один сеанс – от 1 до 300 минут.
Максимальный напор воды – 16 бар.
Радиус распыления воды – до 1,2 м.

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

Популярные электронные водные таймеры

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

Joekol store

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

Joekol store система полива

Технические характеристики:

  • Материал изготовления – пластик синего цвета.
  • Рабочая температура – от +1 до +40оС.
  • Максимальное давление – 8 атмосфер.
  • Питание – 2 батарейки АА по 1,5В.
  • Подключение к трубе – ¾ дюйма.

Стоимость на AliExpress 1273 рубля 

Green Helper PRO-8

Электронный таймер для автономных систем полива, имеющий 8 различных программ рабочих настроек.

Технические характеристики:

  • Рабочая температура – от +1 до +40оС.
  • Максимальное давление – до 6 атмосфер.
  • Размер соединительного штуцера – ¾ дюйма.
  • Электропитание – 2 батарейки АА по 1,5В.

Ron’s Shop Store

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

система полива rons shop store

Технические характеристики устройства:

  • Материал корпуса – пластик зелёного цвета.
  • Масса – 290г.
  • Диаметр – 16,2 см.
  • Электропитание – 2 батарейки АА по 1,5В.

Стоимость на AliExpress от 930 рублей 

Принципиальная схема

Схема выполнена на микросхеме типа К561ТЛ1. Это четыре элемента «2И-НЕ» по типу К561ЛА7, но со свойствами триггеров Шмитта. На каждом из четырех элементов микросхемы сделан датчик для своего горшка. Первый датчик для первого цветочного горшка сделан на элементе D1.1.

Собственно датчик представляет собой две пластины из нержавеющей стали (Е1.1 и Е1.2), воткнутые в землю. Когда земля сухая между ними сопротивление больше R1 и на выходе D1.1- единица. Транзистор VТ1 открывается и включает насос М1.

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

Рис. 1. Принципиальная схема устройства для автоматического полива нескольких растений.

Аналогично работают и все остальные три датчика на элементах D1.2-D1.4. В качестве пластин из нержавеющей стали, из которых сделаны датчики, можно использовать шампуры или ложки, вилки. Но только не алюминиевые. Алюминий в таком режиме начинает темнеть и довольно быстро окисляться.