Поливка цветов arduino. Умный дом: Автомат полива. WEB приложение для управления поливом через интернет
![Поливка цветов arduino. Умный дом: Автомат полива. WEB приложение для управления поливом через интернет](https://i2.wp.com/arduinoplus.ru/wp-content/uploads/2018/02/poliv2-620x485.jpg)
ArdСистема автополива автоматизирует работу по уходу за комнатным цветком. В тематических магазинах продают такую конструкцию по безбашенной цене. Однако вещь стоящая, так как машина самостоятельно регулирует «порции» влаги для растения.
В этой статье читателю предлагается создать собственный автополив на arduino. Микроконтроллер в данном случае выступает системой управления периферийных устройств.
Необходимые инструменты и периферия для реализации проекта «Автополив» на базе микроконтроллера 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. Автополив строится следующим образом:
- Помещаем плату для сенсора на микроконтроллер.
- Подключаем анализатор влажности с помощью платы, описанной выше, к аналогичному пину – А0.
- Присоединяем сенсор к микроконтроллеру:
- Контакт CS подключается к пину № 9 на плате.
- Дисплейные контакты SPI соединяются с соответствующим разъемом на той же плате.
- Силовой ключ вставляем в пин №4.
- Коммутатор подводим к силовому ключу в разъемы, обозначаются буквами p+, p-.
- Теперь подключаем водяную помпу с трубкой с помощью клеммника в контакты с буквами l+ и l-. Постепенно перед конструирующим человеком построится схема.
- Втыкаем сенсорную панель, анализирующую влажность, в горшок с цветком.
- Конец трубки вставляем с водой в почву. В случае, если растение вместе с горшком по весу не превышает 2 кг, закрепляем шланг отдельно. Иначе водяная капель может опрокинуть цветок.
- Опускаем водяную помпу в бутылку, наполненную водой.
- Подключаем конструкцию к электрическому питанию.
Ниже предлагаем вам две альтернативные схемы для нашего устройства:
Датчик анализирует статус влажности путем определения кислотности земли. Перед вставкой ирригатора в систему необходимо протестировать и откалибровать оборудование:
- Записываем сведения, выведенные на дисплей. При этом сенсор воткнут в сухой горшок. Это обозначается, как min влажности.
- Поливаем землю с растением. Ждем, когда вода до конца пропитает почву. Тогда показания на сенсорном экране покажут один уровень. Необходимо записать полученные сведения. Это значит max влажности.
- В записном блокноте фиксируем константы 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 < HUM_MIN) { // Даем сигнал о начале работы водяной помпы digitalWrite(VODPOMPA_PIN, HIGH); //Объявляем потом, длящийся 2 секунды delay(2000); // Завершаем работу помпы digitalWrite(POMP_PIN, LOW); // Ставим в значение переменной Time текущее время и добавляем 3 минуты Time = millis(); } }
Дополнительно вы можете посмотреть пару интересных видео от наших коллег.
На следующем рисунке приведена структурная схема комплексного решения для дистанционного управления и мониторинга системы полива.
Контроллер системы управления собирает данные с датчиков системы и с помощью GPRS-модема передаёт их на сервер. В ответ он получает от сервера команды для управления исполнительными устройствами системы (поливочными клапанами, насосом и клапаном блокировки долива воды в резервуар).
Пользователь имеет доступ на сервер через веб-приложение с ПК или мобильного устройства.
Шкаф управления системой
На следующем рисунке приведена структурно-функциональная схема шкафа управления.
Центром системы является контроллер Arduino Mega.
Контроллер управляет модемом SIM900 с помощью AT-команд, передаваемых через COM-порт.
Таким образом осуществляется обмен данными с сервером.
Возникают случаи, когда модем может попасть в «сложную ситуацию». Иногда для того, чтобы восстановить его нормальную работу требуется аппаратная перезагрузка. Для этого в систему добавлен модуль перезагрузки модема, представляющий собой электромагнитное реле, через которое скоммутировано питание модема.
Сигналы от датчиков уровня воды в резервуаре принимает модуль ввода дискретных сигналов. Датчики имеют выход типа «сухой контакт». Подробнее о них можно почитать . Для того чтобы завести дискретные сигналы от датчиков в контроллер, пропитываем их напряжением 24 В от блока питания. Модуль ввода представляет собой дискретные входы с опторазвязкой, преобразующие входной уровень напряжения в 24 В в уровень 5В, понятный контроллеру.
Для измерения температуры на улице к контроллеру подключен датчик DS18B20. Контроллер производит с ним обмен по интерфейсу OneWire.
В данной статье мы не будем приводить электрическую схему шкафа управления, код программы Arduino и подробно рассказывать о работе веб-сервера, т.к. это тема для отдельного разговора. Для тех, кто хочет углубиться в эту тему мы подготовили .
WEB приложение для управления поливом через интернет
Через веб-приложение пользователь:
- отслеживает текущее состояние системы: уровень воды в баке, температуру на улице, состояние линий полива(полив идёт/полив остановлен).
- управляет поливом (включает и выключает необходимые линии) в ручном режиме
- составляет расписание для полива в автоматическом режиме
- получает оповещение о важных событиях в системе (потеря связи, низкий уровень воды в баке и т.д.)
- анализирует график изменения температуры на улице за время работы системы
- просматиривает события, происходящие на объекте, пользуясь журналом событий
Главный экран управления и мониторинга состояния системы
На главном экране веб-приложения отображаются текущие состояния всех узлов системы: показания датчиков уровня воды в резервуаре и датчика температуры (таблица слева), а также состояние электромагнитных клапанов всех контуров полива (таблица справа).
На этом же экране пользователь может вручную включить или выключить любую из линий полива.
В нижней части экрана отображаются последние события, произошедшие на станции.
Экран управления расписанием полива в автоматическом режиме
На данном экране пользователь может создать расписание для работы системы в автоматическом режиме, чтобы сервер включал и выключал полив на станции без участия пользователя.
Журнал событий
В журнал заносятся важные события на станции: включение/выключение линий полива, обрыв связи со станцией, восстановление связи со станцией, температура на улице ниже заданного уровня, резервуар пуст, резервуар почти пуст.
Оповещение пользователя
В настройках станции пользователь может назначить некоторые события как «предупредительные» или «аварийные». При возникновении этих событий сервер будет оповещать пользователя по электронной почте и (или) СМС. Это могут быть события обрыва связи со станцией, низкий уровень воды в резервуаре или низкая температура на улице.
Нижний предел температуры и время таймаута, после которого система регистрирует обрыв связи, — задаются в настройках.
График уличной температуры
На этом экране отображается график изменения температуры в течение заданного промежутка времени (10 мин., 30 мин., час, 12 часов, сутки, неделя, месяц).
Дальнейшее развитие системы
В дальнейшем планируется повысить информативность системы, дополнив её счётчиками воды. Показания счётчиков будут видны пользователю через веб приложение. На основании этих данных можно будет строить графики расхода воды за длительный период времени.
Кроме того, планируется оборудовать линии полива датчиками влажности почвы и управлять поливом, руководствуясь их показаниями. Это позволит создать ещё более комфортные условия для роста растений и повысить экономию воды.
Заключение
Для тех, кто хочет более подробно изучить технологию обмена данными с удалённым сервером с помощью Arduino и модема SIM900, мы подготовили серию уроков на эту тему. Вот .
На этом пока всё! Надеемся, что было интересно! До новых встреч на LAZY SMART ! Чтобы не пропустить новую статью, вступай в нашу
Хотели бы вы, чтобы ваши растения сообщали о том, что их надо полить? Или просто держали вас в курсе уровня влажности почвы?
В этой статье мы рассмотрим проект автоматизированного полива с использованием датчика уровня влажности почвы:
Обзор датчика уровня влажности почвы
Подобные датчики подключаются достаточно просто. Два из трех коннекторов - это питание (VCC) и земля (GND). При использовании датчик желательно периодически отключать от источника питания, чтобы избежать возможного окисления. Третий выход - сигнал (sig), с которого мы и будем снимать показания. Два контакта датчика работают по принципу переменного резистора - чем больше влаги в почве, тем лучше контакты проводят электричество, падает сопротивление, сигнал на контакте SIG растет. Аналоговые значения могут отличаться в зависимости от напряжения питания и разрешающей способности ваших аналоговых пинов микроконтроллера.
Для подключения датчика можно использовать несколько вариантов. Коннектор, приведенный на рисунке ниже:
Второй вариант более гибкий:
Ну и конечно можно напрямую запаять контакты на датчик.
Если вы планируете использовать датчик за пределами квартиры, стоит дополнительно задуматься о защите контактов от грязи и прямого попадания солнечных лучей. Возможно, стоит подумать о корпусе или нанесении защитного покрытия непосредственно на контакты датчика уровня влажности и проводники (смотрите на рисунок ниже).
Датчик уровня влажности почвы с нанесенным защитным покрытием на контактах и изолированными проводниками для подключения:
Проблема недолговечности датчика уровня влажности почвы
Один из недостатков датчиков подобного типа - недолговечность их чувствительных элементов. К примеру, компания Sparkfun решает эту проблему, используя дополнительное покрытие (Electroless Nickel Immersion Gold). Второй вариант продления срока действия сенсора - подавать на него питание непосредственно при снятии показаний. При использовании Arduino, все ограничивается подачей сигнала HIGH на пин, к которому подключен датчик. Если вы хотите запитать датчик большим напряжением чем предоставляет Arduino, всегда можно использовать дополнительный транзистор.
Контроль уровня влажности почвы - пример проекта
В приведенном ниже проекте использованы датчик уровня влажности, аналог платы Arduino - RedBoard и LCD дисплей, на котором выводятся данные про уровень влажности почвы.
Датчик уровня влажности почвы компании SparkFun:
Красный проводник (VCC) подключается к 5 В на Arduino, черный - к земле (GND), зеленый - сигнал - к аналоговому пину 0 (A0). Если вы используете другой аналоговый пин на Arduino, не забудьте внести соответствующие изменения в скетч для микроконтроллера, представленный ниже.
LCD дисплей подключен к 5 В, земле и цифровому пину 2 (также можно изменить и внести изменения в код) для обмена данными с микроконтроллером по серийному протоколу связи.
Стоит отметить, что если вы хотите продлить срок службы вашего сенсора, можно подключить его питание к цифровому пину и питать его только при считывании данных, а после - отключать. Если запитывать датчик постоянно, его чувствительные элементы вскоре начнут ржаветь. Чем больше влажность почвы, тем быстрее будет проходить коррозия. Еще один вариант – нанести гипс на датчик. В результате влага будет поступать, но коррозия значительно замедляется.
Программа для Arduino
Скетч достаточно простой. Для передачи данных на LCD дисплей вам необходимо подключить библиотеку Software Serial library. Если у вас в ее нет, скачать можно здесь: Arduino GitHub
Дополнительные пояснения приведены в комментариях к коду:
// Пример использования датчика уровня влажности почвы с LCD дисплеем.
SoftwareSerial mySerial(3,2); // pin 2 = TX, pin 3 = RX (не используется)
int thresholdUp = 400;
int thresholdDown = 250;
int sensorPin = A0;
String DisplayWords;
int sensorValue;
mySerial.write(254);
mySerial.write(128);
// очистка дисплея:
mySerial.write(" ");
mySerial.write(" ");
// перемещение курсора к началу первой строки LCD дисплея:
mySerial.write(254);
mySerial.write(128);
// "Dry, Water it!"
mySerial.write(254);
mySerial.write(192);
mySerial.print(DisplayWords);
} else if (sensorValue >= thresholdUp){
// перемещение курсора к началу второй строки дисплея:
mySerial.write(254);
mySerial.write(192);
mySerial.print(DisplayWords);
// перемещение курсора к началу второй строки дисплея:
mySerial.write(254);
mySerial.write(192);
mySerial.print(DisplayWords);
В программе использованы различные минимальное и максимальное значения. В результате среднее значение может характеризовать влажность в зависимости от того, почва увлажняется или сушится. Если вы не хотите использовать это среднее значение, максимальное и минимальное значения можно принимать одинаковыми. Однако эксперименты показывают, что предложенный подход позволяет более точно характеризовать процессы, которые происходят в почве. Определенного точного среднего значения в реальных условиях не существует. Так что с выборкой диапазона можно поиграться. Если вас интересуют процессы, которые происходят в почве при взаимодействии с водой, почитайте тут, например: Wiki . Процессы достаточно сложные и интересные.
В любом случае, переменные вам надо настроить под собственные условия: тип почвы, необходимый уровень увлажнения. Так что тестируйте, экспериментируйте пока не определитесь с подходящими значениями.
После организации считывания данных с датчика уровня влажности и их отображения, проект можно развить дальше, организовав систему автоматического полива.
Датчик уровня влажности в составе автоматической системы полива на основании Arduino:
Для автоматизации полива нам понадобятся дополнительные детали: возможно, шкивы, зубчатые шестерни, двигатель, муфта, транзисторы, резисторы. Список зависит от вашего проекта. Ну все, что может попасться под руку в быту. Более детально один из примеров показан ниже:
Это один из множества вариантов установки двигателя для системы автоматического полива. Колесо можно установить непосредственно в воде. В таком случае при его быстром вращении, вода будет подаваться к растению. В общем, можете проявить фантазию.
Схема подключения двигателя постоянного тока () на примере копии Arduino от SparkFun приведена ниже:
Ниже приведен скетч для Arduino (по сути он такой же как и приведенный выше с небольшим дополнением для управления двигателем):
// В скетче считываются данные с датчика и отображается уровень влажности почвы
// если почва сухая, начинает работать двигатель
// Для работы с дисплеем используется библиотека softwareserial library
#include <SoftwareSerial.h>
// Подключите пин для обмена данными с использованием LCD дисплея по серийному протоколу RX к цифровому пину 2 Arduino
SoftwareSerial mySerial(3,2); // pin 2 = TX, pin 3 = RX (unused)
// Управляем двигателем с помощью пина 9.
// Этот пин должен обязательно поддерживать ШИМ-модуляцию.
const int motorPin = 9;
// Тут мы настраиваем некоторые константы.
// Настройка констант зависит от условий внешней среды, в которой используется датчик
int thresholdUp = 400;
int thresholdDown = 250;
// Настраиваем пин A0 на Arduino для работы с датчиком:
int sensorPin = A0;
pinMode(motorPin, OUTPUT); // устанавливаем пин, к которому подключен двигатель в качестве выхода
mySerial.begin(9600); // устанавливаем скорость обмена данными на 9600 baud
delay(500); // ждем пока дисплей прогрузится
// Здесь мы объявляем строку, в которой хранятся данные для отображения
// на жидкокристаллическом дисплее. Значения будут изменяться
// в зависимости от уровня влажности почвы
String DisplayWords;
// В переменной sensorValue хранится аналоговое значение датчика с пина А0
int sensorValue;
sensorValue = analogRead(sensorPin);
mySerial.write(128);
// очистка дисплея:
mySerial.write(" ");
mySerial.write(" ");
// перемещение курсора к началу первой строки LCD дисплея: mySerial.write(254);
mySerial.write(128);
// запись необходимой информации на дисплей:
mySerial.write("Water Level: ");
mySerial.print(sensorValue); //Использование.print вместо.write для значений
// Теперь мы проведем проверку уровня влажности по сравнению с заданными нами предварительно числовыми константами.
// Если значение меньше thresholdDown, отображаем слова:
// "Dry, Water it!"
// перемещение курсора к началу второй строки дисплея:
mySerial.write(254);
mySerial.write(192);
DisplayWords = "Dry, Water it!";
mySerial.print(DisplayWords);
// запуск двигателя на небольших оборотах (0 – остановка, 255 – максимальная скорость):
analogWrite(motorPin, 75);
// Если значение не ниже thresholdDown надо провести проверку, не будет
// ли оно больше нашего thresholdUp и, если, больше,
// отобразить надпись "Wet, Leave it!":
} else if (sensorValue >= thresholdUp){
// перемещение курсора к началу второй строки дисплея:
mySerial.write(254);
mySerial.write(192);
DisplayWords = "Wet, Leave it!";
mySerial.print(DisplayWords);
// выключение двигателя (0 – остановка, 255 – максимальная скорость):
analogWrite(motorPin, 0);
// Если полученное значение в диапазоне между минимальным и максимальным
// и почва была раньше влажной, а теперь сохнет,
// отображаем надпись "Dry, Water it!" (то есть, когда мы
// приближаемся к thresholdDown). Если почва была сухой, а теперь
//быстро увлажняется, отображаем слова "Wet, Leave it!" (то есть, когда мы
// приближаемся к thresholdUp):
// перемещение курсора к началу второй строки дисплея:
mySerial.write(254);
mySerial.write(192);
mySerial.print(DisplayWords);
delay(500); //Задержка в пол секунды между считываниями
Удачи вам в реализации автоматического полива ваших растений!
В данной статье будет описано, как собирается небольшой агрегат для автоматического полива растений на базе Arduino с контролем влажности. Необходимость самого полива будет определяться по датчику влажности почвы. При желании можно будет поливать сразу несколько растений.
Материалы и инструменты:
- Arduino Uno
- Растение в горшке с сухой землёй
- Водяной насос
- Датчик влажности почвы со шлейфом
- Силовой ключ (тройка) со шлейфом
- Клеммник нажимной
- Провод «папа-папа» ×1 шт
- Провод «мама-папа» ×1 шт
- Блок питания с разъёмом USB
- USB кабель
Сборка:
Дисплей подключается к контакту 3 тройка-шилда. При соединении всех проводов данного типа важно удостовериться, что с контактом GND соединялся чёрный провод.
У помпы на концах проводов отсутствуют контакты, поэтому используется клеммник. Если есть навык в пайке контактов, тогда правильнее припаивать к проводам «Штырьковые соединители».
Вот так выглядит подключённое питание:
С помощью Arduino IDE программируется Arduino Uno прикреплённым ниже файлом. Сам сенсор влажности, конечно же, втыкается в почву. Подсоединяется конец трубки с водой в землю. Если горшок весит немного, тогда автор рекомендует закрепить отдельно трубку так, чтобы растение не было перевернуто. Далее, помпа опускается в удобную ёмкость с водой, и подключается питание.
Калибровка:
Чтобы показания датчика были верными требуется провести несложную процедуру его калибровки. Потому что точность показаний напрямую зависит от кислотности почвы.
1. При воткнутом в сухой горшок датчике записываются показания с дисплея. Это значение ничто иное как минимум влажности.
2. Цветок поливают водой и дожидаются пока вода не впитается полностью в землю, и показания сенсора остановятся на одном значении. Данные записываются и помечаются как максимальная влажность.
3. В файле прошивки изменяются значения констант HUMIDY_MIN устанавливается минимальная влажность, и HUMIDY_MAX соответственно максимальная влажность. Arduino Uno прошивается заново.
Масштабирование проекта
В данной статье описан способ полива всего для одного цветка. Но зачастую требуются поливать сразу несколько растений. Конечно, можно подключить к Arduino большее количество помп и датчиков влажности, но насколько это будет затратно. Автор в этом случае предлагает решение дешёвое и простое. В трубке, которая подсоединена к помпе проделываются дырочки шилом, расстояние между ними около 30 сантиметров, в эти отверстия втыкаются стержни из использованной шариковой ручки.
Горшки в доме,как правило, стоят в ряд, например, на подоконнике. Трубка ложится на горшки так чтобы каждое отверстие соответствовало горшку. Только вот решение о поливе будет приниматься устройством лишь по одному горшку. Лучше всего это будет работать если горшки одинакового размера зачастую на подоконниках так и случается. Сохнуть почва в них будет примерно одинаково. При желании и большом количестве растений у вас дома, можно подключать дополнительные помпы, и разделять все горшки по группам равным по размерам.
Хорошо известная пословица «Ничто не ново под луной» в случае применения автоматического полива растений работает на все сто. Ну чем не автомат марлевый жгут, который непрерывно «поливает» растение, если один конец в банке с водой, а другой закопан в грунт? Или совсем суперполив с помощью системы с хорошей электронной начинкой также охотно выполнит автоматический полив растений – она все может, все сделает, но… Нет же, находятся критиканы - жгут малоэффективный, электроника ценой кусается - дорого, да и не может электронный блок перенастраиваться – для каждого нового применения нужен свой. А здесь желательно что-то такое-эдакое...
Из чего состоит автомат полива?
Вот это «такое-эдакое» мы и попытаемся сделать. Оно будет дешевым, легко перенастраиваться и эффективным – дальше некуда. Логика его работы (говорят, алгоритм) следующая: если земля сухая – автомат поливает, если почва увлажнилась – полив прекращается до высыхания грунта. А сколько ждать? Да вопрос так даже не стоит. Правильным критерием будет «высыхание» грунта. Как только высохло, так и поливаем – в любое время дня и ночи...
А теперь разложим по полочкам наш автоматический полив растений с точки зрения разработчика «умной» поливалки:
- окружающая среда – условия квартиры, наполненный грунтом цветочный горшок, который и нужно поливать;
- блок управления – микроконтроллерная плата, в качестве которой считается наиболее приемлемым подключение ардуино;
- объект управления – банка с водой, исполнительный механизм - насос для перекачки воды;
- дополнительные элементы системы автоматического полива растений:
- ее «глаза» - датчики высыхания грунта и уровня воды в банке;
- «руки» - насос, который будет качать воду в зону полива;
- чистая техника - ключ коммутации, фактически выключатель насоса и два светодиода, зеленый и красный, для индикации «вода есть» и «воды мало».
Казалось бы, что вместо банки с водой нужно просто подключиться к водопроводной трубе, но шлангочки-трубочки по квартире – не очень украшают помещение, так что задача автоматического полива растений решается с использованием автономной емкости, которую надо ручками «заправлять» водичкой. А чтоб банка с водой не раздражала эстетические вкусы ее можно замаскировать декоративным рисунком, чтоб казалось, что так и надо.
Насос, выполняющий автоматический полив растений
Водяной насос
Насос для перекачки воды – покупной. Его можно взять от стеклоомывателя, принтера или аквариумный. Любой из них легко справится с задачей, но проще применить от автомобиля. Все просто – пришел, увидел, купил, но перед применением нужно опытным путем подобрать напряжение питания, чтоб его струя меньше напоминала самодельный домашний гейзер. Спокойная водяная струя образуется при напряжении от 8 В до 9 В.
Более сложный вопрос - рабочий ток двигателя насоса. У разных образцов это может быть 2-3 и больше ампер, а допустимая токовая нагрузка по выходу контроллера значительно меньше – 10 - 20 мА. Поэтому необходимо увеличить коммутационную способность блока управления. Для этого к его выходу подключают мощный транзистор, который, благодаря подключению ардуино и обеспечивает включение насоса. Применим сборку транзисторов uln2003 (см. схему), каждый из которых может коммутировать ток 0,5 А. Если входы и выходы объединить параллельно, то допустимый нагрузочный ток будет равняться суммарному, т.е. 0,5 * N. Так и сделаем.
Подключение ардуино – блока управления
Принципиальная схема устройства автоматического полива растений
Блок управления – одноплатный микропроцессорный контроллер Arduino, который и предназначен для таких простеньких задач. Техника работы с ним простая – отлаживают программу на компьютере и после подключения ардуино «переганяют» ее в процессор. Если что-то нужно изменить, то программу переделывают на компьютере и переустанавливают в контроллер. И при этом ничего не нужно перепаивать, переделывать. Это как раз и есть то, что называют «возможностью перенастройки».
Следующим этапом подключения ардуино к устройству, которое непосредственно выполняет функции автоматического полива растений, заключается в соединение проводов датчиков и силового провода питания насоса с самим контроллером. В данном случае лучше всего для блока питания использовать аккумулятор – полив работает очень короткое время – буквально несколько секунд, и постоянное «дежурство» сетевого блока питания нецелесообразно.
Датчики – «глаза» автомата
Датчик влажности из гвоздей
Датчик влажности лучше всего сделать из материала не подверженного окислению, например, графитовых стержней. Если не мудрствовать, то пара гвоздей, забитых в изолирующую пластину, за несколько секунд превращаются именно в такой датчик (см. рисунок), который использует подключение ардуино, чтобы дать о себе знать системе автоматического полива растений, а установку графитовых стержней можно отложить на период «сдачи» нашей поливалки в постоянную эксплуатацию.
Поплавковый датчик уровня воды
Датчик уровня воды легко реализуется таким же «гвоздиковым», как выше, но мы сделаем другой – поплавковый (см. рисунок). Его легко собрать из трубки 4, которая фиксируется на банке, а стержень 3 по ней легко перемещается. В нижней части стержня крепится поплавок 2, а в верхней его части находится перемычка 6. На верхнем конце трубки расположена диэлектрическая пластина с двумя контактами 5 провода от которых идут на подключение ардуино.
Принцип датчика прост, как мир: если воды много поплавок 2 поднимает стержень 3, замыкающая пластина поднимается вверх и контакты 5 размыкаются. При снижении уровня воды до метки и ниже, поплавок опускается, и пластина 6 замыкает контакты 5.
Алгоритм устройства управления
Алгоритм управления
Самое важное при конструировании блоков управления на микропроцессорах – правильно построить алгоритм работы. Ведь подробное описание работы на специальном языке программ всех узлов, имеющих подключенный ардуино, определяет порядок опроса и анализа входных сигналов. Кроме того, для выполнения тех или иных действий заданных разработчиком (а это как раз мы с вами), контроллер должен учитывать отрезки времени работы исполнительных механизмов. И вот, что у нас получилось (см. рисунок). Рассмотрим по шагам.
После подключения ардуино в работу, он опрашивает состояние датчика уровня воды и отражает его светодиодами – это сигнализация для нас. Следующий датчик – влажности – может сказать «а почва-то влажная» и тогда блоку управления следует возвратиться в начало – его цикл работы завершился и так далее – без устали по циклу. Как только почва высохла контроллер, благодаря датчику, об этом узнает и начнет отрабатывать свою прямую задачу – полив.
Сначала будет включен насос, например, на 2 сек. А почему не на три-четыре-пять? Да потому, что эти 2 секунды мы определили экспериментально (а вполне могло быть и другое число – все зависит от насоса). Критерием служит количество перекачанной воды. Ее должно быть достаточно для полива в течение некоторого промежутка времени – час-два, может сутки. На смачивание грунта после полива отводится 30 сек (на ваш вкус). Только после отработки этого отрезка времени контроллер продолжит работу дальше, т.е. начнется новый цикл.
Новый цикл – это опять опрос датчика через подключение ардуино, анализ информации и т.д.
Алгоритм работы можно усложнять. Например, понадобится поливать не один горшок, а несколько – не ставить же контроллер на каждый. Для этого нужно использовать и его свободные входы/выходы куда и подсоединить датчики и насосы от каждого горшка, а в алгоритме предусмотреть дополнительные блоки их опроса.
После составления алгоритма работы устройства, на его основе пишут программу и моделируют на компьютере работу программы при помощи специальных отладчиков, которые всегда есть для конкретного контроллера – в нашем случае это ардуино. Отлаженная программа записывается в процессор ардуино, для этого там уже все есть, надо только включить с компьютера соответствующий блок отладчика.
Вариант такой программы приведен ниже (Вы можете скачать текст программы внизу статьи, вместе с чертежами устройства).
Код программы:
// константы
const int dw = 12; // датчик уровня воды на 12 пин
const int dg = 11; // датчик влажности почвы на 11 пин
const int nasos = 2; // управление насосом на 2 пин
const int ledG = 3; // зеленый светодиод на 3 пин
const int ledR = 4; // красный светодиод на 4 пин
// переменные
int dwS = 0; // состояние датчика уровня воды
int dgS = 0; // состояние датчика уровня влажности почвы
//установки void setup() {
// объявляем пины светодиодов и насоса как выходы: pinMode(nasos, OUTPUT); pinMode(ledG, OUTPUT); pinMode(ledR, OUTPUT);
// объявляем пины датчиков и насоса как входы: pinMode(dw, INPUT); pinMode(dg, INPUT);
}
// рабочий цикл void 1оор(){
// считываем состояния датчика уровня жидкости dwS = digitalRead(dw);
// если воды много - включаем зеленый, иначе красный if (dwS == LOW) { digitalWrite(ledG, HIGH); digitalWrite(ledR, LOW);
}
else {
digitalWrite(ledG, LOW); digitalWrite(ledR, HIGH);
}
// считываем состояния датчика влажности почвы dgS = digitalRead(dg);
// если почва сухая, включаем полив if (dgS == LOW) { digitalWrite(nasos, HIGH); delay(2000);
digitalWrite(nasos, LOW); delay(30000);
}
else {
digitalWrite(nasos, LOW);
}
}
Конструкция автомата полива
А теперь займемся размещением узлов нашего автомата. Датчик влажности располагается в грунте горшка на углублении 2-5 см (подбирается экспериментально). Трубка, подающая воду, находится рядом с одним из его электродов. Самый простой вариант емкости – стеклянная банка, а датчик воды с насосом крепятся на ее пластиковой крышке, причем насос можно разместить внутри банки.
Электронику, выполняющую автоматический полив растений – контроллер, блок питания, микросхему ключей uln2003 и резисторы прячем в стандартный корпус, которых сейчас в продаже можно подобрать - на любой вкус. На передней панели устанавливаем светодиоды и разъем, через который осуществляется подключение ардуино с насосом и датчиками.
Вот так в нашем доме может появиться еще один умный помощник, выполняющий автоматический полив растений, который будет следить за увлажнением грунта наших цветов и не скажет «да, знаешь, как то замотался в текучке, забыл». И если все так и случилось, то настоящий «самоделкин» посмотрит вокруг пристально, как будто с вопросом, «что бы еще сделать такое-эдакое?».