Создать акаунт
Домик Дом - Во Дворе » Сад-Огород » Автоматический полив на Arduino своими руками с управлением через интернет

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

06 июл 2025, 10:10
Сад-Огород
4
0
Платформа Адруино подходит не только лишь для маленьких проектов в радиолюбительстве как многие считают. С ее помощью в домашних критериях можно сделать устройства для выполнения других задач более увлекательных задач. К примеру, сделать ирригатор, обеспечивающий автоматический полив растений. В данном случае сенсор влажности будет сам докладывать о необходимости пуска полива. В то же время ирригатор дозволит поддерживать требуемую влажность нескольких растений, а обладатели дома избавятся от рутинной необходимости делать это самим либо просить кого-либо во время разъездов.

Подготовка к сборке

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

  • Плата Arduino Uno (Arduino Rev3) — уникальная платформа.
  • Troyka Shield — плата для подключения сенсоров. Освободит от необходимости припаивать сенсоры либо воспользоваться макетными платами.
  • Водяной насос и сенсор влажности (с которым идет шлейф для подключения).
  • Силовой ключ (на базе полевого транзистора) также с готовым шлейфом.
  • Нажимной клеммник (для соответствующего крепления проводков).
  • Проводы типа «папа-папа» и «мама-папа» по одной единице.
  • Импульсный адаптер (ток 1000 мА) и USB-провод.

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

Процесс сборки

Чтоб получить в распоряжение готовый для опции ирригатор, будет нужно выполнить последующие деяния:

  • Сначало установить плату Troyka Shield на Arduino Uno.

  • К пину A0 через Troyka Shield подключается датчик определения влажности;

  • Также средством Troyka Shiled к основной платке подключается экран. Тут пин CS необходимо соединить с 9-ым пином Troyka Shield, а к соответственному выходу на Troyka Shield цепляем SPI пины монитора.

  • Силовой ключ присоединяем к четвертому контакту.

  • Потом к силовому ключу подводим коммутирующее напряжение через разъем с подписями P+ и P–.

  • Водяной насос подключается к силовому ключе через пины L+ и L?.

    В итоге наша маленькая схема готова и должна смотреться так:

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

Сейчас ирригатор собран и будет нужно провести его доп настройку.

Работа схемы

В этом проекте мы использовали самодельный сенсор влажности земли на базе зонда, который будет употребляться для измерения уровня влажности земли. Для производства зонда мы использовали доску, покрытую медью как показано на рисунке ниже (можно использовать ненадобный кусочек печатной платы). Один контакт зонда будет подсоединен к 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.

Полная схема устройства представлена на последующем рисунке.

Проведение калибровки

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

  • Поначалу записываются числа, приобретенные после того, как сенсор вставят с сухую почву. Это малая влажность.
  • Потом необходимо полить растение и подождать момента, когда вода впитается в землю. Характеристики должны оставаться на размеренном уровне, часто это в районе 60%, но все растения различные, потому за ранее узнайте, как ваш зеленоватый друг требователен к этому параметру. Их также следует сохранить, так как это наибольшая влажность.
  • С готовыми плодами следует отредактировать наш скетч (код в среде Arduino IDE), изменяем значение малой влажности, в нашем коде это — MIN _HUM и MAX_HUM на параметр обычной влажности.
  • Остается перепрошить Arduino Uno, для этого подключает через кабель к пк, избираем порт, плату, нажимаем в правом углу кнопку загрузить.
  • Расширение функциональности автополивщика

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

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

Аннотации ПО ЭКСПЛУАТАЦИИ

  • Нажатие на ручку энкодера – переключение выбора помпы/периода/времени работы
  • Поворот ручки энкодера – изменение значения
  • Кнопка энкодера удерживается при включении системы – сброс опций

Версия 2.* ПЕРЕД ПРОШИВКОЙ 2-ой ВЕРСИИ Поменяйте ВСЕ БИБЛИОТЕКИ НОВЫМИ (ИДУТ В АРХИВЕ ПРОЕКТА, В ПАПКЕ Новенькая ВЕРСИЯ). Поворачивая ручку энкодера мы перемещаем стрелочку выбора по экрану. Направьте внимание на то, что настройка времени работы помпы находится правее «за экраном», необходимо пролистать стрелочку вправо чтоб её активировать. Чтоб поменять избранный стрелочкой параметр, необходимо повернуть ручку энкодера, удерживая её нажатой. Таким образом можно настроить время периода и работы помпы в формате ЧЧ:ММ:СС. Логика работы опций PUPM_AMOUNT, START_PIN, SWITCH_LEVEL и PARALLEL такая же как для версии 1.*

  • Поворот ручки энкодера – изменение позиции стрелки
  • Поворот ручки энкодера удерживая её нажатой – изменение значения
  • Кнопка энкодера удерживается при включении системы – сброс опций

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

Система состоит из последующих компонент:

Блок управления – сердечко системы. Тут находится Батареи, Arduino, модуль времени DS3231, экран, преобразователи напряжения и органы управления.

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

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

Главные характеристики системы:

1. Автономная работа от аккумов около 5 месяцев 2. Система поддерживает управление 3-мя помпами. К каждой помпе можно подключить гребенку с 2-4 кранами и дополнительно регулировать потоки воды. Итого получаем возможность подключить до 12 растений 3. Время снимается с отдельного независящего модуля часов DS3231. Помпа срабатывает при пришествии часа, обозначенного в настройке (к примеру 8:00) . 4. На экран выводится информация 5. Опции полива указываются в коде программки, их можно поменять, перепрошив Arduino

Программное обеспечение

Чтоб вынудить скетч заработать, будет нужно за ранее загрузить и установить библиотеку QuadDisplay2, позволяющую работать с экраном. Она доступна на ресурсе Github по адресу: https://github.com/amperka/QuadDisplay2.

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

// Добавление библиотеки монитора #include «QuadDisplay2.h» // переопределяем пина насоса #define PIN_NASOS 4 // пин с присоединенным сенсором #define PIN_HUM A1 // мин влажность, измеренная на шаге калибровки (указываются в аналоговом значении до 1023) #define MIN_HUM 211 // лучшая влажность #define MAX _HUM 715 // периодичность полива 180 секунд #define TIME_PERIOD 60000 * 3 // переменная для хранения показаний влажности земли unsigned int hum = 0; // предшествующее время полива unsigned long previousTime = 0; // передаем CS пин QuadDisplay disp(9); void setup(void) { // пуск монитора disp.begin(); // пин насоса в режим выхода pinMode(PIN _POMP , OUTPUT); // отображаем на экране 0 disp.displayInt(0); } void loop(void) { // снимаем текущее показание сенсора влажности int humCurrent= analogRead(PIN _HUM); // сверяем показания влажности с предшествующим значением if(humCurrent != hum) { // сохраняем текущие показания влажности hum= humCurrent; // отображаем измеренное значение на экране disp.displayInt(humCurrent); } // если пришло вермя полива и влажность ниже хорошей, то запускаем насос if ((previousTime == 0 || millis() — previousTime > TIME_INTERVAL) && humidity < MIN_HUMIDITY ) { // включение насоса на 2 секунды digitalWrite(PIN_NASOS, HIGH); delay(2000); // выключаем помпу digitalWrite(PIN_NASOS, LOW); // запоминаем предшествующее время проверки полива previousTime = millis(); } }

Доп улучшения системы

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

  • Хотя контакты сенсора влажности позолочены, по мере эксплуатации они повергаются коррозии. Более насыщенное коррозирование происходит во время присоединенного напряжения. Но срок эксплуатации датчика может быть продлить в пару раз, подключив в нему напряжение средством силового ключа. Если требуется снять характеристики — на сенсор поступает питание, потом значения сохраняются и питание сразу выключается.
  • Бывают ситуации, когда ирригатор работает длительное время, никто за ним не присматривает, а в емкости завершается вода. Если насос работает вхолостую, появляется высочайшая возможность его поломки. Делему можно решить, если настроить автораспознавание отсутствия воды в емкости.
  • Выбирать сенсор следует с учетом типа емкости. Если она не очень глубочайшая, его 1-го будет достаточно. Если высоты оказывается недостаточно, подойдет ультразвуковой дальномер, оснастив его поплавком с прикрепленным детектором наклона. Можно просто положить на дно резервуара 2 провода.
  • Безопасность автополивщика, который питается через батарейки, изрядно выше по сопоставлению с работающим от сети. В эталоне будет обеспечить напряжение от батареек, но потребление Arduino Uno даже в спящем режиме выше 0.36мА. Как вариант, стоит направить внимание на плату Arduino Mini, которая в спящем режиме умеет снижать свое потребление энергии до нескольких сотен мкА.
  • При поливе комнатной растительности следует учесть огромное количество правил и советов. К примеру, их нельзя поливать зимними вечерами. Можно оснастить поливщик сенсорами света либо обыкновенными часами, а потом отредактировать программку, чтоб устройство работало в требуемое время.

Организация полива, обдува и освещения в Смышленой теплице на Ардуино

В прошлых статьях по Смышленой теплтице (проект «Домашний цветок») «Умная теплица на Arduino- делаем 1-ые шаги» и «Индикация показаний при проектировании Смышленой теплицы на Ардуино» мы реализовали функции контроля и вывода данных на экран и светодиоды. Сейчас мы добавим нашей Смышленой теплице функции управления. Нам нужно организовать полив цветка, обдув, освещение. Делать данные операции будем по нажатии соответственных кнопок. Дополнительно к деталям, использовавшимся в прошлых статьях ( нам пригодятся последующие:

  1. Relay shield на 4 реле – 1 шт;
  2. Вентилятор 12В – 1 шт;
  3. Мембранный насос 12В – 1 шт;
  4. Лампа освещения – 1 шт;
  5. Кнопка – 3 шт;
  6. Резистор 10 кОм – 3 шт.

Кнопки и резисторы имеются в каждом из наборов «Дерзай» («Базовый» и «Изучаем Arduino» ). Мембранный вакуумный насос (набросок 1) будем использовать для полива земли. Он предназначен для всасывания воды из емкости. Рабочее напряжение 12В, потребляемый рабочий ток 0.5 – 0.7А, расход 1.5 л/мин.

Набросок 1. Мембранный вакуумный насос Нужно поменять шланг требуемой длины (набросок 2, 3).

Набросок 2, 3. Замена шланга мембранного вакуумного насоса

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

Набросок 4. Вентилятор

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

  • LED фитолампы;
  • энергосберегающие лампы дневного диапазона;
  • люминисцентные.

Насос, вентилятор, лампу подключать впрямую к Arduino нельзя! Будем управлять ими через реле. Будем использовать Relay shield (набросок 5), который содержит 4 реле с нужной обвязкой.

Набросок 5. Relay shield Сейчас соберем на макетной плате схему, представленную на рисунке 6 (схема из предшествующей части с добавлением кнопок и реле).

Набросок 6. Схема соединения для контроля характеристик и ручного управления проекта «Домашний цветок»

Приступим к дописанию кода скетча. Создаем переменные типа Boolean (true – включено, false – выключено) для состояния 3-х реле:

status_pump – насос; status_lamp – лампа; status_fun – вентилятор.

В цикле loop() отслеживаем нажатие кнопок с проверяем на дребезг (процедура debounce()) и в случае нажатия кнопки изменяем статус соответственной переменной и отправляем команду для конфигурации статуса соответственного реле на обратное: включение/выключение насоса (полив земли); включение/выключение освещения; включить/выключение вентилятора.

Сделаем в Arduino IDE новый скетч, занесем в него код из листинга 1 и загрузим скетч на на плату Arduino. Напоминаем, что в настройках Arduino IDE нужно выбрать тип платы (Arduino UNO) и порт подключения платы.

Листинг 1.

// подключение библиотек для nokia 5110 #include #include // подключение библиотеки DHT #include «DHT.h» // тип сенсора DHT #define DHTTYPE DHT11 // контакт подключения входа данных модуля DHT11 int pinDHT11=9; // контакт подключения аналогового выхода модуля влажности земли int pinSoilMoisture=A0; // контакт подключения аналогового выхода сенсора температуры TMP36 int pinTMP36=A1; // контакт подключения аналогового выхода фоторезистора int pinPhotoresistor=A2; // пины светодиодов индикации #define LED_TEMP 5 #define LED_MOISTURE 6 #define LED_LIGHT 7 // значения для критерий #define TEMP_DETECT 30 #define MOISTURE_DETECT 500 #define LIGHT_DETECT 250 // кнопки #define COUNT_BUTTONS 3 int pinButtons[]={A4,A5,A6}; int lastButtons[]={0,0,0,0}; int currentButtons[]={0,0,0,0}; // реле int pinRelays[]={2,3,4}; // статусы полива, освещения, вентилятора boolean statusRelays[]={false,false,false}; // создание экземпляра объекта DHT DHT dht(pinDHT11, DHTTYPE); // Nokia 5110 // pin 3 — Serial clock out (SCLK) // pin 4 — Serial data out (DIN) // pin 5 — Data/Command select (D/C) // pin 6 — LCD chip select (CS) // pin 7 — LCD reset (RST) Adafruit_PCD8544 display = Adafruit_PCD8544(13, 12, 11, 10, 8); unsigned long millisupdate=0; void setup() { // пуск поочередного порта Serial.begin(9600); // pinMode(LED_TEMP,OUTPUT);digitalWrite(LED_TEMP,LOW); pinMode(LED_MOISTURE,OUTPUT);digitalWrite(LED_MOISTURE,LOW); pinMode(LED_LIGHT,OUTPUT);digitalWrite(LED_LIGHT,LOW); // dht.begin(); // инициализация монитора display.begin(); // установить контраст фона экрана display.setContrast(60); display.clearDisplay(); // очистить экран display.setTextSize(1); // размер шрифта display.setTextColor(BLACK); // цвет // заставка display.setCursor(15,15); display.print(«Home Flower»); display.display(); delay(2000); } void loop() { // каждые 5 сек — получение показаний сенсоров // и вывод на экран if(millis()-millisupdate>5000) { millisupdate=millis(); display.clearDisplay(); display.setCursor(5,0); display.print(«Home Flower»); // получение данных с DHT11 float h = dht.readHumidity(); display.setCursor(5,10); if (isnan(h)) { Serial.println(«Failed to read from DHT»); display.print(«airH= error»); } else { Serial.print(«HumidityDHT11= «); Serial.print(h);Serial.println(» %»); display.print(«airH=»);display.print(h);display.print(«%»); } // получение значения с аналогового вывода модуля влажности земли display.setCursor(5,20); int val0=analogRead(pinSoilMoisture); Serial.print(«SoilMoisture= «); Serial.println(val0); display.print(«soilM=»);display.print(val0); // получение значения с аналогового вывода сенсора температуры TMP36 display.setCursor(5,30); int val1=analogRead(pinTMP36); // перевод в мВ int mV= val1*1000/1024; // перевод в градусы цельсия int t=(mV-500)/10+75;//t=23; Serial.print(«TempTMP36= «); Serial.print(t);Serial.println(» C»); display.print(«airT=»);display.print(t);display.print(» C»); // получение значения с аналогового вывода фоторезистора display.setCursor(5,40); int val2=analogRead(pinPhotoresistor); Serial.print(«Light= «); Serial.println(val2); display.print(«Light=»);display.print(val2); // обновить display.display(); // вывод состояние полива, лампы, вентилятора Serial.print(«pump — «); Serial.println(statusRelays[2]); Serial.print(«fun — «); Serial.println(statusRelays[1]); Serial.print(«lamp — «); Serial.println(statusRelays[0]); //// проверка критерий // увлажненность земли if(val0 > MOISTURE_DETECT) digitalWrite(LED_MOISTURE,HIGH); else digitalWrite(LED_MOISTURE,LOW); // температура воздуха if(t > TEMP_DETECT) digitalWrite(LED_TEMP,HIGH); else digitalWrite(LED_TEMP,LOW); // освещенность if(val2 < LIGHT_DETECT) digitalWrite(LED_LIGHT,HIGH); else digitalWrite(LED_LIGHT,LOW); // пауза 5 секунд Serial.println(); } // проверка нажатия кнопок выбора программ for(int i=0;i

После загрузки скетча на плату мы можем управлять включением/выключением насоса, лампы, вентилятора при помощи кнопок. В поочередный порт выводим показания сенсоров и состояние реле — полив, вентиляция, освещение, (набросок 7), которое мы устанавливаем при помощи кнопок. На экране – показания сенсоров.

Набросок 7. Вывод данных в поочередный порт.

А вот и наш выращиваемый цветок (набросок 8).

Набросок 8, 9. Проект «Домашний цветок».

Дальше модернизируем систему, в последующем уроке мы будем производить функции контроля и управления с телефона либо планшете с операционной системой Android.

Источник: vsamodelino.ru

Комментарии
Минимальная длина комментария - 50 знаков. комментарии модерируются
Кликните на изображение чтобы обновить код, если он неразборчив

Возможно интересно:

Смотрите также: