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

Содержание

Делаем умную теплицу на Ардуино своими руками

Автоматизация вездесуща. Различные механизмы создают комфортные температурные условия, помогают при готовке пищи, ухаживают за одеждой, включают и гасят свет, а также поддерживают чистоту помещения. Но использование их не ограничивается бытом человека. Вообще во всем окружении, на улице или производстве, при перевозках чего-либо, в магазинах или сельском хозяйстве — везде работают незримые помощники.

С развитием технологической базы вырастает и уровень автоматизации. Сейчас роботы или механизмы выполняют не просто последовательность заложенных действий. Их устройство теперь позволяет осуществлять своеобразный «выбор», в зависимости от изменившихся внешних условий. Самый простой пример — стиральная машина. Ее внутренняя начинка определяет температуру воды и при необходимости подогревает ее, следит за временем стирки и правильностью текущих циклов выполнения.

Кроме уже описанного, в нашу жизнь вошли «умные» дома, города, кварталы или улицы. Главное отличие их от обычных — присутствие взаимосвязанных между собой систем управления. Каждая из которых контролирует одно устройство из присутствующих в комплексе. Но, работу всех их определяет общая система, отправляя сведения необходимые для функционирования или указывающие команды.

Одной из относительно редко использующихся схем интеллектуального управления можно назвать применение его в сельском хозяйстве, а конкретно для полной автоматизации парников или аппаратуры ухода за растениями. Собственно, подготовить и собрать умную теплицу на Ардуино своими руками вполне по силам и относительно разбирающемуся в электронике человеку. О чем и будет рассказано далее.

Необходимые компоненты

  1. Реле на 12v.
  2. Источник питания 12v 1A.
  3. Соединительные провода и концевой соединитель.

GSM модуль

В этом проекте мы использовали TTL SIM800 GSM модуль. SIM800 представляет собой четырех диапазонный GSM/GPRS модуль, способен работать в диапазонах частот 850/900/1800/1900 МГц и обеспечивать передачу голоса, SMS, данных с низким энергопотреблением. Внешний вид SIM800 показан на рисунке ниже – он достаточно компактный и не займет много места в ваших устройствах. Модуль SIM800 включает:

  • четырех диапазонный GSM/GPRS модуль компактного размера;
  • возможность задействования GPRS;
  • выход TTL.

Более подробно изучить работу с GSM модулем можно в статье про автоматическую доску объявлений на Arduino. Также можно посмотреть все статьи на нашем сайте, использующие технологию GSM.

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

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

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

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

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

Шаг 5: Подключаем плату Arduino

Плата Arduino – «мозг» всей системы. Вам будет удобнее взять провода тех же цветов, что и в моей инструкции, чтобы при дальнейшей работе со схемой не возникало путаницы.

  1. Соедините конец красного провода «Папа-Папа» с точечным разъемом на плате, помеченным 5В. Второй конец пока нам не нужен.
  2. Соедините конец серого провода «Папа-Папа» с точечным разъемом, помеченным А1, второй конец пока не нужен.
  3. Соедините один из голубых проводов, идущих от клеммного блока, с точечным разъемом GND (земля).
  4. Соедините один из коричневых проводов, идущих от клеммного блока, с точечным разъемом, помеченным VIN.
  5. На другой стороне платы Arduino соедините красный провод с точечным разъемом, помеченным 5В. Другой конец нам пока не нужен.

МАТЕРИАЛЫ И КОМПОНЕНТЫ

Ссылки на магазины, с которых я закупаюсь уже не один год

Вам скорее всего пригодится:

Почти все компоненты можно взять в магазине WAVGAT по первым ссылкам

  • Arduino NANO с ногами http://ali.pub/2iaezd http://ali.pub/2iaezy
  • Arduino NANO без ног http://ali.pub/2iaewn http://ali.pub/2iaey0
  • Помпа 5V http://ali.pub/2iaf0x http://ali.pub/2iaf1w
  • Помпа 12V http://ali.pub/2iaf41 http://ali.pub/2iaf5l
  • Дисплей http://ali.pub/2iaf75 http://ali.pub/2iaf84
  • Энкодер http://ali.pub/2iafdk http://ali.pub/2iafe5
  • Колпачки D shaft http://ali.pub/2id0ut
  • Реле электромагнитное
    • 1 канал http://ali.pub/2iafsc
    • 2 канала http://ali.pub/2iaft4
    • 4 канала http://ali.pub/2iaftb
    • 8 каналов http://ali.pub/2iafua
    • 16 каналов http://ali.pub/2iafuo
  • Реле твердотельное
    • 1 канал http://ali.pub/2iafwm
    • 2 канала http://ali.pub/2iafx0
    • 4 канала http://ali.pub/2iafxe
    • 8 каналов http://ali.pub/2iafxl
  • Макетная плата http://ali.pub/2iafj7
  • Джамперы папа-мама http://ali.pub/2iafkk
  • Джамперы макетные http://ali.pub/2iafi1
  • Блок питания 5V – любой зарядник для смартфона
  • Блок питания 12V https://alexgyver.ru/converters/
  • Разветвитель потока с краниками http://ali.pub/2iafzq
  • Разветвитель потока без краников http://ali.pub/2iag1a
  • Шланг силиконовый http://ali.pub/2iag2u
  • Тройничок http://ali.pub/2iag5k

Схема подключения и алгоритм работы в проекте «Автополив» на базе мк Arduino

Ниже представлен алгоритм и схема подключения проекта на платформе arduino. Автополив строится следующим образом:

  1. Помещаем плату для сенсора на микроконтроллер.
  2. Подключаем анализатор влажности с помощью платы, описанной выше, к аналогичному пину – А0.
  3. Присоединяем сенсор к микроконтроллеру:
    1. Контакт CS подключается к пину № 9 на плате.
    2. Дисплейные контакты SPI соединяются с соответствующим разъемом на той же плате.
  4. Силовой ключ вставляем в пин №4.
  5. Коммутатор подводим к силовому ключу в разъемы, обозначаются буквами p+, p-.
  6. Теперь подключаем водяную помпу с трубкой с помощью клеммника в контакты с буквами l+ и l-. Постепенно перед конструирующим человеком построится схема.
  7. Втыкаем сенсорную панель, анализирующую влажность, в горшок с цветком.
  8. Конец трубки вставляем с водой в почву. В случае, если растение вместе с горшком по весу не превышает 2 кг, закрепляем шланг отдельно. Иначе водяная капель может опрокинуть цветок.
  9. Опускаем водяную помпу в бутылку, наполненную водой.
  10. Подключаем конструкцию к электрическому питанию.

Ниже предлагаем вам две альтернативные схемы для нашего устройства:

Датчик анализирует статус влажности путем определения кислотности земли. Перед вставкой ирригатора в систему необходимо протестировать и откалибровать оборудование:

  1. Записываем сведения, выведенные на дисплей. При этом сенсор воткнут в сухой горшок. Это обозначается, как min влажности.
  2. Поливаем землю с растением. Ждем, когда вода до конца пропитает почву. Тогда показания на сенсорном экране покажут один уровень. Необходимо записать полученные сведения. Это значит max влажности.
  3. В записном блокноте фиксируем константы HUM_MIN и HUM_MAX тем значением, которое было получено в результате калибровки. Прописываем значения в программе, которую переносим затем на микроконтроллер.

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

В шланге от помпы проделываются 25 сантиметровые отверстия с помощью шила. В полученные дырочки втыкаются кусочки стержней ручек шарикового формата. В итоге получается:

  • горшки с растениями выстраиваются в ряд на подоконнике;
  • трубка устанавливается на цветочный горшок так, чтобы вода из каждого отверстия лилась в отдельный горшок;
  • вуаля: изобретение одновременно поливает все растения.

Пользователь самостоятельно выбирает время для полива, но только для одного цветка. Нередко цветки по массе и размерам одинаковы. Следовательно, почва в горшках сохнет за одинаковое время. Для этого придуман метод комбинации: количество горшков делится по группам равного веса и размера.

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

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

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

Как вариант, стоит обратить внимание на плату Arduino Mini, которая в спящем режиме умеет снижать свое потребление энергии до нескольких сотен мкА.
При поливе комнатной растительности следует учитывать множество правил и рекомендаций. Например, их нельзя поливать зимними вечерами

Можно оснастить поливщик датчиками света или обычными часами, а затем отредактировать программу, чтобы устройство работало в требуемое время.

Изготовление и тестирование

Схема односторонней печатной платы действительного размера автоматической системы полива растений показана на рис. 5, а компоновка ее компонентов – на рис. 6.

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

Установите насос в емкость для воды (см. Рис. 7), которая может вместить несколько литров воды. прикрепите водопроводную трубу к рупору серводвигателя, как показано на рис. 8.

Рис. 6: Компонентная схема печатной платыРис. 7: Установка водяного насоса в контейнерРис. 8: Крепление трубы на рупор сервопривода

Скачать исходный код: 

Перед включением схемы необходимо иметь в виду следующие макроопределения в коде:

  1. Изменение угла поворота серво-рупора в сторону первого сосуда и второго сосуда. Значения по умолчанию составляют 70 градусов и 145 градусов.
  2. Изменение времени полива в зависимости от размера горшка. Значения по умолчанию составляют пять секунд и восемь секунд.
  3. Изменение порогового значения в соответствии с вашими потребностями. Значение по умолчанию составляет 600.

Поместите цветочные горшки там, где труба из рупора серводвигателя может легко добраться до них. Когда уровень влажности опускается ниже 600, рупор сервопривода поворачивается под углом 70 градусов. То есть после того, как гудок серводвигателя переместится на 70 градусов к первому корпусу, моторный насос включится на пять секунд, а затем автоматически остановится. Затем сервопривод возвращается в исходное положение. Аналогичным образом, если вы используете второй датчик, гудок серводвигателя переместится на 145 градусов ко второму по величине резервуару, моторный насос включится на восемь секунд, а затем автоматически остановится. Серво возвращается в исходное положение.

Дальнейшее применение

Используя доску Arduino UNO, вы можете поливать шесть разных горшечных растений. Добавив еще несколько строк в код, вы можете поливать еще больше растений – используя плату Arduino Mega 2560, которая имеет больше аналоговых входных контактов.

Вы также можете добавить экран Ethernet или Wi-Fi и использовать библиотеку Twitter, которая будет отправлять твиты со стороны ваших растений для отправки сообщений, таких как: мне нужна вода, бак пуст, заправьте бак, спасибо за воду и так далее ,

ЖК-дисплей 16 × 2 может быть добавлен для индикации уровня влажности.

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

electronicsforu.com

Общие сведения об управляющих системах

Интеллектуальность современного оборудования обеспечивается микроконтроллерами. Это небольшие и ограниченные по ресурсам полноформатные компьютеры, зачастую размещенные на одной плате или микросхеме. Несмотря на свои маленькие размеры их мощности вполне достаточно для того, чтобы управлять различным оборудованием. Информацию, необходимую для выполнения своих функций, такие микрокомпьютеры получают посредством различных специализированных датчиков. Общее нахождение устройств в единой сети обеспечивается посредством дополнительных присоединяемых к микроконтроллеру модулей.

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

Основой многих из подобных комплексов составляют контроллеры серии Arduino, STM, Ti MSP430, Netduino, Teensy, Particle Photon, ESP8266 или иных распространенных плат такого типа в мире. Кроме того, некоторые специалисты создают свои варианты микро — компьютеров, управляющих оборудованием — на основе устаревших ПК или каких-либо 8 разрядных процессоров, к примеру, Z80.

Насос для автомата полива растений

Из вышеперечисленного все, кроме насоса, изготовим самостоятельно. Насос подойдет любой маломощный. Можно поискать в старых и сломанных струйных принтерах или купить в автозапчастях насос для стеклоомывателя, самый простой я нашел за 90 рублей.

Важно: прежде чем подключать насос к готовому устройству, проверьте его в работе. Автомобильный насос может выдать фонтан в несколько метров; дома такое «поливание» могут не понять и запретить на корню

Подберите опытным путем оптимальное напряжение. Автонасос рассчитан на питание от бортовой сети 12 В, на моем экземпляре достаточный напор появляется уже при напряжении 8…9 В. Насос от принтера напора в несколько метров не даст, но с ним другая проблема: в принтере он качал чернила, а они очень трудно отмываются, и такой насос аккуратнейшим образом необходимо будет промыть.

Исходный код программы

В программе нам сначала необходимо подключить библиотеку последовательной связи (SoftwareSerial library) чтобы задействовать последовательную связь на контактах 2 и 3 платы Arduino, а также подключить библиотеку для работы с ЖК дисплеем.

Затем в функции 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();

Функция gsmInit () играет важную роль в нашей программе и, к сожалению, ряд пользователей считают ее достаточно трудной для программирования. Эта функция используется для инициализации GSM модуля. Сначала проверяется соединен ли GSM модуль с сетью при помощи передачи ему соответствующей ‘AT’ команды. Если модуль ответил OK, это значит что он готов к работе. Система будет проверять модуль до тех пор пока не получит от него ответ ‘OK’. Затем выключается режим ECHO (чтобы модуль не повторял в ответе написанную ему команду) с помощью команды ATE0. Затем проверяется доступность сети при помощи команды ‘AT+CPIN?’. Если вставленная карта является SIM картой и PIN присутствует, модуль формирует ответ READY. Эта проверка также осуществляется непрерывно до тех пор пока сеть не будет найдена. Более подробно эти процессы показаны в видео в конце статьи.

Алгоритм работы всех систем:

Всю логику работы теплицы можно разбить на несколько частей:

  • Информационное табло;
  • Освещение;
  • Проветривание;
  • Полив;

Рассмотрим работу каждой части более подробно.

Информационное табло.

После подачи питания на устройство, происходит:

настройка сенсоров и датчиков; устанавливаются режимы работы всех систем, взятые либо из постоянной памяти (должны были быть записаны в массив CurrentResumeOrBorderSettingValue при предыдущем запуске), либо из массива с настройками по умолчанию ( DefaultResumeOrBorderSettingValue ); опрос всех датчиков и вывод их значений на ЖК-дисплей

Обратите внимание, что на дисплее поочерёдно отображаются 2 страницы, а время смены страниц задано переменной CHANGE_DEFAULT_SCREEN_TIME : 1 страница отображает показатели температуры и влажности земли и воздуха; 2 страница отображает время, значение освещённости и состояние установленных режимов работы каждой из систем (освещение, проветривание, полив); дополнительно в скетч добавлена функция автовозврата к стартовому табло при простое устройства дольше, чем указано в DEFAULT_SCREEN_RETURNING_TIME ;

Освещение.

После нажатия на любую клавишу, кроме ESC , на дисплей выводится меню. И первым разделом на экране будет «Настройка работы системы освещения«. При нажатии на кнопку ОК вы перейдёте во внутреннее меню данной настройки. Что она в себя включает:

  • Настройка режима работы системы освещения. Варианты значений: Выкл/Вкл/Авто
    • Выкл — выключить питание реле, отвечающее за подачу напряжения на освещение;
    • Вкл — включить питание реле, отвечающее за подачу напряжения на освещение;
    • Авто — перевести работу системы в автоматический режим, где освещение будет включаться или выключаться самостоятельно по условию. Про само условие и его настройку будет сказано далее.
  • Настройка границы минимальной освещённости. Интервал значений: от 0 до 1023
    • Условие работы системы освещения в автоматическом режиме, где заданное число будет являться нижней границей, при переходе которой сверху вниз на реле будет подано питание и освещение будет включено.
    • Дополнительно, в условие добавлен порог HUMIDITY_GAP , который исключит переключения питания реле на границе освещённости.
  • Реальный показатель освещённости. В правом верхнем углу дисплея отображается реальное значение освещённости в настоящий момент. Это сделано для удобства установки порога освещённости, так как в этом случае есть на что ориентироваться.

Проветривание

Вторым пунктом основного меню после «Настройка работы системы освещения» идёт «Настройка работы системы проветривания«. При нажатии на кнопку ОК вы переходите во внутреннее меню настройки, включающее:

  • Настройка режима работы системы проветривания. Варианты значений: Выкл/Открыть/Закрыть/Авто
    • Выкл — выключить питание реле, отвечающее за подачу напряжения на линейный толкатель;
    • Открыть — включить питание реле, отвечающее за подачу напряжения на линейный толкатель для открытия окна;
    • Закрыть — включить питание реле, отвечающее за подачу напряжения на линейный толкатель для закрытия окна;
    • Авто — перевести работу системы в автоматический режим, где проветривание будет включаться или выключаться самостоятельно по условию.
  • Настройка минимальной температуры. Интервал значений: от 0 до 49
    • Условие закрытия окна в автоматическом режиме при переходе установленного значения сверху вниз.
    • Если установлено значение, превышающее значение установленной максимальной температуры, то значение будет автоматически снижено до значения (Максимальная температура — 1);
  • Настройка максимальной температуры. Интервал значений: от 1 до 50
    • Условие открытия окна в автоматическом режиме при превышении установленного значения.
    • Если установлено значение меньше, чем значение установленной минимальной температуры, то значение будет автоматически увеличено до значения (Минимальная температура + 1);

Полив.

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

  • Настройка режима работы системы полива. Варианты значений: Выкл/Вкл/Авто
    • Выкл — выключить питание реле, отвечающее за подачу напряжения на насос;
    • Вкл — включить питание реле, отвечающее за подачу напряжения на насос;
    • Авто — перевести работу системы в автоматический режим, где полив будет включаться по условию.
  • Настройка времени суток для старта полива (час). Интервал значений: от 0 до 23

    Параметр, отвечающий за время дня (конкретный час), когда полив будет включен автоматически.

  • Время (длительность) работы полива (в секундах). Интервал значений: от 10 до 300

    Параметр, отвечающий за продолжительность работы насоса.

Шаг 3. Код системы полива

Для этого шага вам нужно скачать прикрепленный ниже файл и открыть код в редакторе Arduino IDE. Наряду с кодом вы найдете комментарии, которые разъясняют каждую часть кода. Например: вы можете легко изменить текст на ЖК-дисплее на свой собственный текст. Также в разделе Библиотеки нужно скачать и установить библиотеку , это нужно сделать до начала работы с кодом.

#include <LiquidCrystal.h> // импорт LCD библиотеки

LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // LCD соединения

byte heart = { 0b00000, 0b01010, 
                  0b11111, 0b11111, 
                  0b11111, 0b01110, 
                  0b00100, 0b00000 
                 };                 // Специальный символ сердца для дисплея

int sensorPin = A0; // датчик почвы
int sensorValue = 0;
int percentValue = 0;
int TouchSensor = 13; // сенсорный датчик
int pomp = 12; // 5В водяной насос

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2); // LCD 
  lcd.createChar(1, heart); // Специальный символ для дисплея
  pinMode(pomp, OUTPUT);
  pinMode(TouchSensor, INPUT);
}

void loop() {
  if(digitalRead(TouchSensor)==HIGH)       //Считать сигнал сенсорного датчика
   { 
    digitalWrite(pomp, HIGH);   // если сенсорный датчик HIGH (ВЫСОКИЙ), то включить помпу
    Serial.println("Pomp ON"); // Это для проверки показаний элемента
    lcd.clear();
    lcd.setCursor(4, 0); // курсор 1-я строка вверху слева
    lcd.print("WATERING"); //Печать на ЖК-дисплее при нажатии сенсорного датчика (растение получает воду)
    lcd.setCursor(4, 1); // курсор 2-я строка слева 
    lcd.write(1); // Специальный значок сердца для ЖК-дисплея
    lcd.print("SERGE"); //Печать на ЖК-дисплее при нажатии сенсорного датчика (растение получает воду)
    lcd.write(1); // Специальный значок сердца для ЖК-дисплея
    delay(100); 
    lcd.clear(); // После того, как сенсор запущен, очистить текст на ЖК-дисплее
   }
  else
   {
    digitalWrite(pomp, LOW);    // если сенсорный датчик LOW (НИЗКИЙ, не нажат), помпа выключена
    Serial.println("Pomp OFF"); // Это для проверки показаний элемента
    sensorValue = analogRead(sensorPin); // прочитать датчик почвы
    Serial.print("\n\nAnalog Value: "); // Это для проверки показаний элемента
    Serial.print(sensorValue); // Это для проверки показаний элемента
    percentValue = map(sensorValue, 1023, 200, 0, 100); // Калибровка датчика почвы
    Serial.print("\nPercentValue: "); // Это для проверки показаний элемента
    Serial.print(percentValue); // выводить Значение влажности в %
    Serial.print("%"); //Это для проверки показаний элемента
    lcd.setCursor(0, 0); // курсор установлен на первой строке
    lcd.print("Serge's grond"); // Вывод на ЖК-дисплей LCD
    lcd.setCursor(0, 1); // курсор установлен на второй строке
    lcd.print("bevat:"); // Вывод на ЖК-дисплей LCD
    lcd.print(percentValue); // Вывод на ЖК-дисплей LCD значение влажности в %
    lcd.print("%"); // Вывод на ЖК-дисплей LCD
    lcd.print(" water"); // Вывод на ЖК-дисплей LCD
    delay(500); //задержка перед началом цикла
    lcd.clear(); // в конце цикла очистить текст на LCD
   }
  
}

Компоненты и их описания

Arduino Uno

Arduino взаимодействует через датчики с окружающей средой и обрабатывает поступившую информацию в соответствии с заложенной в неё программой. Подробнее с платой Ардуино Уно можно ознакомиться здесь.

Ардуино Уно

Датчик влажности почвы

Измерение влажности почвы на базе Arduino производится с помощью датчика влажности. Датчик имеет два контакта. Через эти контакты при погружении их в грунт протекает ток. Величина тока зависит от сопротивления грунта. Поскольку вода является хорошим проводником тока, наличие влаги в почве сильно влияет на показатель сопротивления. Это значит, чем больше влажность почвы, тем меньше она оказывает сопротивление току.

Датчик влажности почвы

Этот датчик может выполнять свою работу в цифровом и аналоговом режимах. В нашем проекте используется датчик в цифровом режиме.
На модуле датчика есть потенциометр. С помощью этого потенциометра устанавливается пороговое значение. Также на модуле установлен компаратор. Компаратор сравнивает данные выхода датчика с пороговым значением и после этого даёт нам выходной сигнал через цифровой вывод. Когда значение датчика больше чем пороговое, цифровой выход передаёт 5 вольт (HIGH), земля сухая. В противном случае, когда данные датчика будут меньше чем пороговые, на цифровой вывод передаётся 0 вольт (LOW), земля влажная.

Этим потенциометром необходимо отрегулировать степень сухости почвы, когда как вы считаете нужно начать полив.

Фоторезистор

Фоторезистор (LDR) — это светочувствительное устройство, которое используются для определения интенсивности освещения. Значение сопротивления LDR зависит от освещённости. Чем больше света, тем меньше сопротивление. Совместно с резистором, фоторезистор образует делитель напряжения. Резистор в нашем случае взяли 10кОм.

Делитель напряжения

Подключив выход делителя Uin к аналоговому входу Ардуино, мы сможем считывать напряжения на выходе делителя. Напряжение на выходе будет меняться в зависимости от сопротивления фоторезистора. Минимальное напряжение соответствует темноте, максимальное – максимальной освещённости.

В этом проекте полив начинается в соответствии с пороговым значением напряжения. В утренние часы, когда считается целесообразным начать полив, напряжение на выходе делителя равно 400. Примем это значение как пороговое. Так если напряжения на делителе меньше или равно 400, это означает, что сейчас ночь и насос должен быть выключен.
Меняя пороговое значение можно настроить период работы автополива.

Релейный модуль

Реле представляет собой переключатель с электромеханическим или электрическим приводом.

Релейный модуль

Привод реле приводится в действие небольшим напряжением, например, 5 вольт от микроконтроллера, при этом замыкается или размыкается цепь высокого напряжения.

Схема реле

В этом проекте используется 12 вольтовый водяной насос. Arduino Uno не может управлять напрямую насосом, поскольку максимальное напряжение на выводах Ардуино 5 вольт. Здесь нам приходит на помощь релейный модуль.

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

Водяной насос

В проекте используем 12-и вольтовый погружной насос с 18-ваттным двигателем. Он может поднимать воду до 1,7 метра.

Водяной насос

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

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

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

ИНСТРУКЦИИ ПО ЭКСПЛУАТАЦИИ

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

Версия 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