Что такое автополив на «ардуино»
Автополив — автоматизированный процесс увлажнения растений, в котором требуется минимальное участие человека. Если организовывать его на плате «Ардуино», то от пользователя потребуется только периодически:
- менять воду для полива;
- осматривать конструкцию на наличие неисправностей.
Такую систему удобно использовать тем, кто не бывает дома, но должен ухаживать за цветами, чтобы они не засохли. Кроме того, свой огород или дача — места, для которых подходит автоматизированное орошение.
Автоматический полив можно обеспечить как для больших грядок, так и для маленьких комнатных горшков или клумб в саду. Изменения коснутся помпы для подкачки воды и трубок, по которым жидкость будет поступать к растениям.
Что понадобится для работы
Для сборки конструкции потребуются следующие элементы:
- Плата Arduino (например, модель UNO или Мега).
- Датчик уровня влажности почвы.
- Насос для воды.
- Шланг для прокачки жидкости (подводится напрямую в горшок или на грядку).
- Емкость для забора воды.
- Контактные кабели.
- Блок питания электронных компонентов.
Система не будет напрямую подключаться к водопроводу, а будет забирать воду из резервной емкости, которую требуется наполнять самостоятельно. Это повысит надежность конструкции, т.к. поможет избежать непредвиденных ситуаций, связанных с неисправной работой водопровода.
Если система устанавливается в помещении, и приходится протягивать шланг через всю квартиру, нужно закрепить его там, где сможет достать рука (при необходимости ремонта или замены).
Основные параметры и схема подключения
Датчик влажности состоит из щупа и компаратора. Сигнал может измеряться как в аналоговой форме (0 — максимум влажности, 1023 — минимум), так и в цифровой (0 — влажно, 1 — сухо). Для повышения точности лучше использовать аналоговую форму. Оптимально выбрать следующие параметры: 200 — нормальная влажность, 600 — предельная сухость. Эти показатели можно изменить в загружаемой в плату прошивке.
1 вывод датчика подключается к аналоговому пину «Ардуино», 2 — к питанию (Vcc, GND), а оставшиеся 4 не соединяются ни с чем, т.к. цифровой сигнал не используется.
Вода из резервуара в систему будет подаваться при помощи насоса. Достаточно устройства на 12 В. Помпа должна работать в соответствии с выбранным типом полива растений. Оптимальный вариант — капельный.
Схема насосной станции состоит из:
- мотора;
- драйвера «двигатель-плата»;
Мотор 1 выводом подключается к драйверу, а другим — к собственному источнику питания в виде аккумулятора или батареи. Работающим двигателем подкачивается вода в трубки.
Драйвер подключается 1 выводом к информационному контакту «Ардуино», а 2 другими — к питанию (Vcc, GND).
Полив комнатных растений автоматически с помощью arduino
// установим все датчики влажности PIN ID
intmoisture1=A0;
intmoisture2=A1;
intmoisture3=A2;
intmoisture4=A3;
// объявим значения влажности
intmoisture1_value=0;
intmoisture2_value=0;
intmoisture3_value=0;
intmoisture4_value=0;
// установим выход реле для клапанов
intrelay1=3;
intrelay2=4;
intrelay3=5;
intrelay4=6;
// установим выход реле на насос
intpump=2;
voidsetup(){
// Объявим реле, как выход
pinMode(relay1,OUTPUT);
pinMode(relay2,OUTPUT);
pinMode(relay3,OUTPUT);
pinMode(relay4,OUTPUT);
// Объявим насос, как выход
pinMode(pump,OUTPUT);
// Откроем порт для мониторинга
Serial.begin(9600);
}
voidloop(){
// читаем значения с датчиков влажности
moisture1_value=analogRead(moisture1);
moisture2_value=analogRead(moisture2);
moisture3_value=analogRead(moisture3);
moisture4_value=analogRead(moisture4);
// проверяем, какое растение нуждается в воде
// и расскоментируйте нужную строчку для конкретного клапана
// установите значение требуемой влажности
//if(moisture1_value<=450){
// digitalWrite(relay1, HIGH);
//}
//if(moisture2_value<=450){
// digitalWrite(relay2, HIGH);
//}
//if(moisture3_value<=450){
// digitalWrite(relay3, HIGH);
//}
//if(moisture4_value<=450){
// digitalWrite(relay4, HIGH);
//}
digitalWrite(pump,HIGH);
digitalWrite(relay1,HIGH);
delay(500);
digitalWrite(relay2,HIGH);
delay(500);
digitalWrite(relay3,HIGH);
delay(500);
digitalWrite(relay4,HIGH);
delay(500);
digitalWrite(relay1,LOW);
delay(500);
digitalWrite(relay2,LOW);
delay(500);
digitalWrite(relay3,LOW);
delay(500);
digitalWrite(relay4,LOW);
digitalWrite(pump,LOW);
delay(500);
// убедитесь, что есть хотя бы одно растение, которое нуждается в воде
// если есть, включите насос
//if(moisture1_value<=450 || moisture2_value<=450 || moisture3_value<=450 || moisture4_value<=450){
// digitalWrite(pump, HIGH);
//}
// Оросите растение в течении 5 с
//delay(5000);
// Выключите насос
//digitalWrite(pump, LOW);
// Пройдитесь по каждому клапану и выключите их
//digitalWrite(relay1, LOW);
//digitalWrite(relay2, LOW);
//digitalWrite(relay3, LOW);
//digitalWrite(relay4, LOW);
// Подождите 5 минут и повторите процесс
//Serial.println(moisture1_value);
//delay(10000);
//delay(300000);
}
Пошаговая инструкция сборки
Элементы собираются в следующем порядке:
- В плату загружается скетч.
- «Ардуино» отключается от питания.
- К плате без питания подключаются насос и датчик.
- К выводам резервуара с жидкостью подсоединяются трубки для полива.
- Двигатель помпы подключается к автономному питанию.
- Емкость для орошения наполняется водой.
- К «Арудино» подводится питание.
- Активируется автополив.
Подключение и настройка системы производится при полностью отключенном питании и отсутствии воды в конструкции.
Элементы питания нужно расположить максимально далеко от резервуара и трубок с жидкостью.
Пример кода
int min_value = 600; //предельная сухость
int max_value = 220; //нормальная влажность
int normal_value = 500; //высокая сухость
int value = 0; //полученное значение с датчика
int last_value = 0; //последнее влияющее изменение параметра датчика
int delta =50; //изменение, влияющее на работу помпы
int ralay = 6; //вывод реле
int pomp_work = 10; //время работы насоса в секундах
int analogPin = A0; //вывод датчика влажности почвы
int second = 0; //секунды
int off = 0; //счетчик времени, оставшегося до конца полива
int pause = 15; //время паузы после полива в минутах
void setup()
Serial.begin(9600);
pinMode(ralay,HIGH);
digitalWrite(ralay, HIGH);
void water()
int pomp_temp;
pomp_temp = pomp_work;
digitalWrite(ralay, LOW);
while(pomp_temp > 0 && value > norm_value)
delay(1000);
value=analogRead(analogPin);//обновляем значение влажности
pomp_temp—;
digitalWrite(ralay, HIGH);
second=0; //сброс счетчика секунд
off=pause;//установка таймаута между поливами
void loop()
value=analogRead(analogPin);
if (value>(last_value delta)||value<(last_value-delta))
Serial.println(value);
last_value=value;
if ((value>(min_value-value_sdvig)) && off<1)
water();
if (second>59)
second=0;
if (off>0) off—;
delay(1000);//пауза 1 сек
second ;
Принцип работы автополива на базе мк «ардуино»
Система автополива функционирует по принципу опроса платой датчика влажности земли. Каждую секунду (этот промежуток настраивается программой) датчик отправляет информацию о состоянии почвы микроконтроллеру.
Если принятое значение превышает 550, а помпа не работала более 15 минут, то активируется автополив. Время увлажнения прописывается в программе (в скетче за это отвечает переменная pomp_work).
15-минутный перерыв в процессе орошения требуется, чтобы влага успела впитаться в почву, и растения получили ровно столько жидкости, сколько нужно.
Модернизировать конструкцию можно установкой датчика воды в резервуаре. Если жидкости в нем не останется, устройству нет смысла функционировать (насос быстрее изнашивается при работе на холостом ходу).
Датчик можно подключить через драйвер к «Ардуино» и прописать в скетче условие: если уровень воды ниже *значение переменной*, то не подавать управляющий сигнал на помпу.
Дополнить автополив можно системой индикации, если параллельно основным сигналам подключить светодиоды. Тогда сразу будет виден путь прохождения сигнала, а также место возникновения неисправности.