Умный автополив растений на базе 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 метра.

Помпа на 12 вольт
Водяной насос

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

Макетная плата

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

"<yoastmark

Перемычки

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

Фото перемычек папа-мама
Перемычки

Программный код

#define WATERPUMP 13 // насос подключен к контакту 13
#define SENSOR 8 // цифровой контакт датчика влажности подключен к контакту 8
#define LDR A0// фоторезистор подключен к A0
#define PORTNUMBER 9600 // открываем последовательный порт, устанавливаем скорость передачи данных 9600 бит

void setup()
{
Serial.begin(PORTNUMBER);
pinMode(WATERPUMP,OUTPUT); // Определяем вывод 13 как вывод
pinMode(SENSOR,INPUT); // Определяем вывод 8 в качестве входного, чтобы получать данные от датчика влажности почвы.
pinMode(LDR,INPUT); // Определяем А0 как ввод
digitalWrite(WATERPUMP,LOW);// Насос выключен
}
void loop()
{
int val = digitalRead(SENSOR); // сохраняет значение, полученное от датчика влажности почвы, в переменной val
int LDRValue=analogRead(LDR);// сохраняет значение, полученное от фоторезистора, в переменной LDRValue
if(LDRValue<= 400)// Сравниваем данные фоторезистора с пороговым значением
{
// если неравенство выполняется, значит ночь, полив выключен
Serial.print("Ночь, полив не требуется");
Serial.println(LDRValue);//Выводим значение фоторезистора
digitalWrite(WATERPUMP, LOW);//Насос выключен
return;// Возвращаемся к началу кода
}
//Если неравенство не выполняется, значит день, необходима проверить влажность
if( val == HIGH)// Если влажность низкая
{

Serial.print("День, влажность низкая, необходим полив");
Serial.println(LDRValue);// Выводим значение фоторезистора
Serial.println(val);// Выводим значение влажности
digitalWrite(WATERPUMP,LOW); //Насос включен
}
else
{
Serial.print("День, влажность высокая, полива не требуется");
Serial.println(LDRValue);// Выводим значение фоторезистора
digitalWrite(WATERPUMP,HIGH);//Насос выключен
}
delay(400);
}

Схема автополива растений на arduino

 

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

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

Добавить комментарий

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