- Умный автополив растений на базе Arduino
- Компоненты и их описания
- Arduino Uno
- Датчик влажности почвы
- Фоторезистор
- Релейный модуль
- Водяной насос
- Макетная плата
- Перемычки
- Программный код
- Схема автополива растений на arduino
- Автополивщик растений на Arduino
- Что это такое?
- Что для этого необходимо?
- Как это собрать?
- Калибровка
- Масштабирование решения
- Исходный код
- Демонстрация работы устройства
- Что ещё можно сделать?
- МНОГОКАНАЛЬНЫЙ АВТОПОЛИВ НА ARDUINO СВОИМИ РУКАМИ
- КОНТРОЛЛЕР УМНОЙ ТЕПЛИЦЫ
- Наши ответы на ваши вопросы
- ПОДРОБНОЕ ВИДЕО ПО ПРОЕКТУ
- ИНСТРУКЦИИ ПО ЭКСПЛУАТАЦИИ
- СХЕМЫ, ПЕЧАТНЫЕ ПЛАТЫ
- МАТЕРИАЛЫ И КОМПОНЕНТЫ
- Автоматическая система полива растений на основе Arduino
- Необходимые компоненты
- GSM модуль
- Работа схемы
- Объяснение работы проекта
- Исходный код программы
Умный автополив растений на базе Arduino
Растения играют важную роль в жизни человека. Мы получаем множество преимуществ, живя в соседстве с растениями – это свежий воздух, приятная атмосфера и конечно же полезное питание.
Многие люди пытаются окружить себя растениями как в квартире, так и на своих участках. И неважно будь это комнатные растения или посадки на дачном участке, растения требуют к себе внимания и ухода. Всё же иногда из-за напряжённого образа жизни мы элементарно забываем вовремя полить их. Это негативно сказывается на состоянии растений. Чтобы избавиться от этой проблемы, придуманы системы автополива.
Многие из готовых систем не подходят нам по конструктиву или по цене. Да и многим радиолюбителям интересней собрать своё устройство, чем покупать готовое.
В этой статье подробно расписано как сделать автополив для комнатных и уличных растений на базе Arduino своими руками.
Наш автополив на Ардуино поливает растение только днём, когда почва пересыхает. В системе используются датчик влажности почвы и фоторезистор.
Основная цель этой системы заключается в отслеживание времени суток и влажности. Если днём земля просыхает, микроконтроллер включает водяной насос. Когда земля достаточно увлажнится, насос выключается.
Компоненты и их описания
Arduino Uno
Arduino взаимодействует через датчики с окружающей средой и обрабатывает поступившую информацию в соответствии с заложенной в неё программой. Подробнее с платой Ардуино Уно можно ознакомиться здесь.
Ардуино Уно
Датчик влажности почвы
Измерение влажности почвы на базе Arduino производится с помощью датчика влажности. Датчик имеет два контакта. Через эти контакты при погружении их в грунт протекает ток. Величина тока зависит от сопротивления грунта. Поскольку вода является хорошим проводником тока, наличие влаги в почве сильно влияет на показатель сопротивления. Это значит, чем больше влажность почвы, тем меньше она оказывает сопротивление току.
Датчик влажности почвы
Этот датчик может выполнять свою работу в цифровом и аналоговом режимах. В нашем проекте используется датчик в цифровом режиме.
На модуле датчика есть потенциометр. С помощью этого потенциометра устанавливается пороговое значение. Также на модуле установлен компаратор. Компаратор сравнивает данные выхода датчика с пороговым значением и после этого даёт нам выходной сигнал через цифровой вывод. Когда значение датчика больше чем пороговое, цифровой выход передаёт 5 вольт (HIGH), земля сухая. В противном случае, когда данные датчика будут меньше чем пороговые, на цифровой вывод передаётся 0 вольт (LOW), земля влажная.
Этим потенциометром необходимо отрегулировать степень сухости почвы, когда как вы считаете нужно начать полив.
Фоторезистор
Фоторезистор (LDR) — это светочувствительное устройство, которое используются для определения интенсивности освещения. Значение сопротивления LDR зависит от освещённости. Чем больше света, тем меньше сопротивление. Совместно с резистором, фоторезистор образует делитель напряжения. Резистор в нашем случае взяли 10кОм.
Делитель напряжения
Подключив выход делителя Uin к аналоговому входу Ардуино, мы сможем считывать напряжения на выходе делителя. Напряжение на выходе будет меняться в зависимости от сопротивления фоторезистора. Минимальное напряжение соответствует темноте, максимальное – максимальной освещённости.
В этом проекте полив начинается в соответствии с пороговым значением напряжения. В утренние часы, когда считается целесообразным начать полив, напряжение на выходе делителя равно 400. Примем это значение как пороговое. Так если напряжения на делителе меньше или равно 400, это означает, что сейчас ночь и насос должен быть выключен.
Меняя пороговое значение можно настроить период работы автополива.
Релейный модуль
Реле представляет собой переключатель с электромеханическим или электрическим приводом.
Релейный модуль
Привод реле приводится в действие небольшим напряжением, например, 5 вольт от микроконтроллера, при этом замыкается или размыкается цепь высокого напряжения.
Схема реле
В этом проекте используется 12 вольтовый водяной насос. Arduino Uno не может управлять напрямую насосом, поскольку максимальное напряжение на выводах Ардуино 5 вольт. Здесь нам приходит на помощь релейный модуль.
Релейный модуль имеет два типа контактов: нормально замкнутые и нормально разомкнутые контакты. Нормально замкнутые без управляющего напряжения замкнуты, при подаче напряжения размыкаются. Соответственно нормально разомкнутые без напряжения разомкнуты, при подаче управляющего напряжения замыкаются. В проекте используются нормально разомкнутые контакты.
Водяной насос
В проекте используем 12-и вольтовый погружной насос с 18-ваттным двигателем. Он может поднимать воду до 1,7 метра.
Водяной насос
Этот насос можно эксплуатировать только тогда, когда он полностью погружен в воду. Это налагает некие обязательства по контролю уровня воды в ёмкости. Если водяной насос будет работать без воды, он просто-напросто сгорит.
Макетная плата
Макетная плата представляет собой соединительную плату, используемую для создания прототипов проектов электроники, без пайки.
Перемычки
В данном проекте перемычки используются для соединения компонентов оборудования.
Перемычки
Программный код
Схема автополива растений на arduino
Схема автополива
Данный проект подразумевает полив одного растения или одной группы одинаковых растений. Но Uno имеет 6 аналоговых выходов, следовательно возможно подключить 6 насосов. Так же можем добавить к каждому насосу свой датчик влажности. Так мы получим 6-ти канальную систему автополива. Причем каждый канал будет работать в не зависимости друг от друга.
Автополивщик растений на Arduino
Что это такое?
В этой статье мы расскажем о том, как собрать устройство для автоматического полива с контролем влажности почвы — ирригатор. Необходимость полива будем определять по показаниям датчика влажности почвы. Одновременно можно будет поливать несколько растений.
Что для этого необходимо?
Мы собрали все необходимые детали в сет компонентов. В набор входят:
Так же удобно для индикации использовать:
Как это собрать?
Калибровка
Показания датчика влажности сильно зависят от кислотности почвы. Поэтому перед началом пользования ирригатором требуется провести простую процедуру калибровки.
Масштабирование решения
Мы описали решение для одного растения. Но обычно требуется поливать несколько растений. Помимо очевидного решения — подключения к Arduino нескольких помп и датчиков влажности — существует более простое и дешёвое. Достаточно в трубке, которая идёт в комплекте с помпой проделать шилом дырочки на расстоянии около 30 см и воткнуть в эти дырочки куски стержней от обычных шариковых ручек. Выглядеть это будет так:
Горшки с цветами дома часто стоят в ряд на подоконнике. Вам достаточно просто положить трубку на горшки так, чтобы отверстия в ней приходились по одному на горшок. Теперь наше устройство может поливать сразу несколько горшков. Однако в таком случае принимать решение о необходимости полива можно только по одному горшку. Однако обычно горшки примерно одинаковые по размерам и, соответственно, сохнут с примерно равной скоростью. Можно так же комбинировать два решения, разделяя все горшки на группы примерно равных по размерам.
Исходный код
Для работы скетча вам понадобиться скачать и установить библиотеку для работы с дисплеем QuadDisplay2
Демонстрация работы устройства
Что ещё можно сделать?
А ещё можно собрать автополив на Slot Shield — инструкция по сборке и прошивка.
МНОГОКАНАЛЬНЫЙ АВТОПОЛИВ НА ARDUINO СВОИМИ РУКАМИ
• 18.08.18 Версия 1.5: исправлены ошибки
• 17.04.19 Версия 2.0: новая логика меню, более гибкие таймеры! ЗАМЕНИТЕ СТАРЫЕ ВЕРСИИ БИБЛИОТЕК НОВЫМИ ИЗ ПАПКИ!
• 20.04.19 Версия 2.1: добавлено автоотключение подсветки дисплея (включается по любому действию с энкодера)
05.06.2019 Исправлена схема версии 2+!
КОНТРОЛЛЕР УМНОЙ ТЕПЛИЦЫ
Наши ответы на ваши вопросы
Все хотят датчики влажности, каждый третий об этом написал.
- Вопрос: зачем тогда нужен таймер и все эти настройки? Мой проект не об этом, мой проект о таймере
- С датчиками влажности МИКРОКОНТРОЛЛЕР ВООБЩЕ НЕ НУЖЕН. Почему? Как? Смотрите ЗДЕСЬ
- Все жалуются на дождь. В видео звучало слово “теплица” и “рассада”, там не идёт дождь
- Китайские датчики влажности почвы разъедаются почвой, так как сделаны не из золота!
Да, согласен, нужна одна помпа и клапана на каналы! Добавил прошивку auto-pumps_valve, читайте описание в начале скетча, там всё написано!
Многоканальная система автополива растений для установки в умную теплицу, на огород или в квартиру. Особенности:
- Поддержка от 1 до 15 помп (Arduino NANO / UNO)
- Индивидуальная настройка периода и времени работы
- Дисплей 1602 с отображением настроек
- Индивидуальное название каждого канала (можно по-русски!)
- Удобное управление и настройка энкодером
- Хранение настроек в энергонезависимой памяти
- Настройка уровня управляющего сигнала
- Настройка часы/минуты/секунды работы
- Параллельный режим работы / очередь
ПОДРОБНОЕ ВИДЕО ПО ПРОЕКТУ
В данном видео показан полный и максимально подробный процесс разработки и изготовления устройства, а также обзор его возможностей и функций.
Понятные схемы, OpenSource прошивки с комментариями и подробные инструкции это очень большая работа. Буду рад, если вы поддержите такой подход к созданию Ардуино проектов! Основная страница пожертвовать – здесь.
ИНСТРУКЦИИ ПО ЭКСПЛУАТАЦИИ
- Нажатие на ручку энкодера – переключение выбора помпы/периода/времени работы
- Поворот ручки энкодера – изменение значения
- Кнопка энкодера удерживается при включении системы – сброс настроек
Версия 2.*
ПЕРЕД ПРОШИВКОЙ ВТОРОЙ ВЕРСИИ ЗАМЕНИТЕ ВСЕ БИБЛИОТЕКИ НОВЫМИ (ИДУТ В АРХИВЕ ПРОЕКТА, В ПАПКЕ НОВАЯ ВЕРСИЯ).
Поворачивая рукоятку энкодера мы перемещаем стрелочку выбора по экрану. Обратите внимание на то, что настройка времени работы помпы находится правее «за экраном», нужно пролистать стрелочку направо чтобы её активировать. Чтобы изменить выбранный стрелочкой параметр, нужно повернуть рукоятку энкодера, удерживая её нажатой. Таким образом можно настроить время периода и работы помпы в формате ЧЧ:ММ:СС. Логика работы настроек PUPM_AMOUNT, START_PIN, SWITCH_LEVEL и PARALLEL такая же как для версии 1.*
- Поворот ручки энкодера – изменение позиции стрелки
- Поворот ручки энкодера удерживая её нажатой – изменение значения
- Кнопка энкодера удерживается при включении системы – сброс настроек
СХЕМЫ, ПЕЧАТНЫЕ ПЛАТЫ
СХЕМЫ ОБНОВЛЕНЫ ДЛЯ ВЕРСИИ 2+ .
Внимание! Для коммутации индуктивных нагрузок рекомендуется использовать искрогасящие цепи, иначе микроконтроллер может зависнуть. Читайте в этом проекте в разделе СХЕМЫ
5V помпы
12V помпы
220V AC помпы
14 реле
МАТЕРИАЛЫ И КОМПОНЕНТЫ
Ссылки на магазины, с которых я закупаюсь уже не один год
Автоматическая система полива растений на основе Arduino
Всегда, когда вы уезжаете из своего дома на несколько дней, вы вынуждены беспокоиться о своих растениях поскольку они требуют регулярного полива. Поэтому в данной статье мы рассмотрим проектирование автоматической системы полива растений на основе платы Arduino, которая будет обеспечивать периодическую подачу воды вашим растениям и передавать вам SMS об этом на ваш сотовый телефон.
В основе данной системы будет лежать использование датчика влажности почвы (Soil Moisture Sensor), который будет проверять уровень влажности почвы и если он ниже заданного уровня, то плата Arduino будет включать водяной насос чтобы обеспечить подачу воды растениям. Водяной насос будет автоматически выключаться когда уровень влажности почвы будет соответствовать норме. Всегда при включении и выключении водяного насоса вам на сотовый телефон будет передаваться сообщение с помощью GSM модуля. Представленная система окажет большую помощь на фермах, в садах и домах. Система полностью автоматическая и не требует никакого вмешательства человека.
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress).
- GSM модуль SIM800 (купить на AliExpress).
- Транзистор BC547 (2 шт.) (купить на AliExpress).
- ЖК дисплей 16х2 (опционально) (купить на AliExpress).
- Реле на 12v.
- Водяной насос (купить на AliExpress).
- Датчик влажности почвы (Soil Moisture Sensor) (у нас он самодельный, но при желании его можно купить на AliExpress).
- Резисторы (1 кОм, 10 кОм) (купить на AliExpress).
- Переменные резисторы (10 кОм, 100 кОм) (купить на AliExpress).
- Регулятор напряжения (микросхема LM317) (купить на AliExpress).
- Источник питания 12v 1A.
- Соединительные провода и концевой соединитель.
GSM модуль
В этом проекте мы использовали TTL SIM800 GSM модуль. SIM800 представляет собой четырех диапазонный GSM/GPRS модуль, способен работать в диапазонах частот 850/900/1800/1900 МГц и обеспечивать передачу голоса, SMS, данных с низким энергопотреблением. Внешний вид SIM800 показан на рисунке ниже – он достаточно компактный и не займет много места в ваших устройствах. Модуль SIM800 включает:
- четырех диапазонный GSM/GPRS модуль компактного размера;
- возможность задействования GPRS;
- выход TTL.
Более подробно изучить работу с GSM модулем можно в статье про автоматическую доску объявлений на Arduino. Также можно посмотреть все статьи на нашем сайте, использующие технологию GSM.
Работа схемы
В этом проекте мы использовали самодельный датчик влажности почвы на основе зонда, который будет использоваться для измерения уровня влажности почвы. Для изготовления зонда мы использовали доску, покрытую медью как показано на рисунке ниже (можно использовать ненужный кусок печатной платы). Один контакт зонда будет подсоединен к Vcc (напряжению постоянного тока), а другой – к базе транзистора BC547. К базе транзистора также подключен потенциометр для регулирования чувствительности датчика влажности почвы.
Плата Arduino будет управлять всем процессом работы нашей системы. Выход схемы измерения влажности непосредственно подсоединен к цифровому контакту D7 платы Arduino. Светодиод, присутствующий в схеме датчика, показывает наличие влаги в почве, когда он горит – влаги достаточно, а когда он выключен – это свидетельствует об отсутствии влаги в почве.
GSM модуль используется для передачи SMS пользователю. Мы использовали TTL SIM800 GSM модуль, который имеет выход непосредственно в TTL модуль, но можно использовать и любой другой GSM модуль. Регулятор напряжения LM317 используется для подачи питания на SIM800 GSM модуль. LM317 очень чувствителен к максимально допустимому напряжению и перед его использованием рекомендуется прочитать даташит на него. Его рабочее напряжение составляет от 3.8v до 4.2v (более предпочтительно использовать 3.8v). На следующем рисунке показана схема подачи питания на TTL sim800 GSM модуль:
Если вам нужно использовать SIM900 TTL модуль, то вы должны использовать 5V, а если вы хотите использовать SIM900 модуль, то вы должны подключить 12v в DC Jack slot платы.
Реле 12V используется для управления небольшим водяным насосом, работающим от 220VAC. Реле управляется с помощью транзистора BC547, который в дальнейшем подсоединен к цифровому контакту 11 платы Arduino.
ЖК дисплей (опционально) используется для отображения статуса устройства и сообщений. Управляющие контакты ЖК дисплея RS и EN подключены к контактам 14 и 15 платы Arduino, а контакты данных D4-D7 непосредственно подключены к контактам 16, 17, 18 и 19 платы Arduino. ЖК дисплей используется в 4-битном режиме и управляется встроенной библиотекой Arduino.
Полная схема устройства представлена на следующем рисунке.
Объяснение работы проекта
Спроектированная нами система автоматического полива растений не требует никакого участия человека в своей работе, весь процесс управляется платой Arduino, а GSM модуль используется для передачи сообщений на ваш сотовый телефон. Внешний вид собранной системы показан на следующем рисунке.
Если влага присутствует в почве, то тогда сопротивление между двумя контактами зонда для измерения влажности мало, транзистор Q2 остается в открытом состоянии и на контакт D7 платы Arduino подается напряжение низкого уровня. И когда на контакте D7 напряжение низкого уровня плата Arduino передает пользователю SMS “Soil Moisture is Normal. Motor turned OFF” (уровень влаги в норме, насос выключен), водяной насос при этом остается в выключенном состоянии.
А когда влаги в почве становится очень мало, то транзистор Q2 запирается и на контакт D7 платы Arduino подается напряжение высокого уровня. Как только плата Arduino обнаруживает это, она включает водяной насос и передает пользователю сообщение “Low Soil Moisture detected. Motor turned ON” (низкий уровень влаги, насос включен). Насос автоматически выключится как только уровень влаги в почве достигнет требуемой величины. Более подробно все эти процессы показаны в видео в конце статьи.
На следующем рисунке приведена структурная схема работы нашего проекта.
Исходный код программы
В программе нам сначала необходимо подключить библиотеку последовательной связи (SoftwareSerial library) чтобы задействовать последовательную связь на контактах 2 и 3 платы Arduino, а также подключить библиотеку для работы с ЖК дисплеем.
#include
SoftwareSerial Serial1(2,3);
#include
LiquidCrystal lcd(14,15,16,17,18,19);
int led=13;
int flag=0;
String str=»»;
#define motor 11
#define sensor 7
Затем в функции void setup () последовательная связь инициализируется на скорость 9600 бод/с и задаются режимы работы (на ввод или вывод данных) для используемых контактов. Функция gsmInit вызывается для инициализации GSM модуля.
Serial1.begin(9600);
Serial.begin(9600);
pinMode(led, OUTPUT);
pinMode(motor, OUTPUT);
pinMode(sensor, INPUT_PULLUP);
lcd.print(«Water Irrigaton»);
lcd.setCursor(4,1);
delay(2000);
lcd.clear();
lcd.print(«Circuit Digest»);
lcd.setCursor(0,1);
lcd.print(«Welcomes You»);
delay(2000);
gsmInit();
Затем в функции void loop () считывается значение с выхода датчика измерения влажности и в зависимости от этого значения включается/выключается мотор водяного насоса и пользователю передаются SMS с помощью функции sendSMS .
void loop()
<
lcd.setCursor(0,0);
lcd.print(«Automatic Mode «);
if(digitalRead(sensor)==1 && flag==0)
<
delay(1000);
if(digitalRead(sensor)==1)
<
digitalWrite(led, HIGH);
sendSMS(«Low Soil Moisture detected. Motor turned ON»);
lcd.begin(16,2);
lcd.setCursor(0,1);
. .
. .
Функция gsmInit () играет важную роль в нашей программе и, к сожалению, ряд пользователей считают ее достаточно трудной для программирования. Эта функция используется для инициализации GSM модуля. Сначала проверяется соединен ли GSM модуль с сетью при помощи передачи ему соответствующей ‘AT’ команды. Если модуль ответил OK, это значит что он готов к работе. Система будет проверять модуль до тех пор пока не получит от него ответ ‘OK’. Затем выключается режим ECHO (чтобы модуль не повторял в ответе написанную ему команду) с помощью команды ATE0. Затем проверяется доступность сети при помощи команды ‘AT+CPIN?’. Если вставленная карта является SIM картой и PIN присутствует, модуль формирует ответ READY. Эта проверка также осуществляется непрерывно до тех пор пока сеть не будет найдена. Более подробно эти процессы показаны в видео в конце статьи.
void gsmInit()
<
lcd.clear();
lcd.print(«Finding Module..»);
boolean at_flag=1;
while(at_flag)
<
Serial1.println(«AT»);
while(Serial1.available()>0)
<
if(Serial1.find(«OK»))
at_flag=0;
>
delay(1000);
>
. .
. .
То есть с помощью спроектированной нами системы вам не будет нужно беспокоиться о своих растениях когда вы уезжаете на несколько дней из дома. В дальнейшем этот проект можно улучшить, добавив мониторинг состояния устройства через интернет — то есть система будет передавать вам Email о своем состоянии или передавать свои данные на веб-страницу, которую можно будет посмотреть из любой точки мира.