Переключить тему.

Устройство для автоматического полива растения и сбора данных о влажности почвы.

20 Sep 2023

In English

Это самодельное устройство собранное из электронных компонентов. Это мой хобби проект. Устройство проверяет влажность почвы раз в час и если влажност ниже 20% наливает 300 мл воды в поддон растения. Так же устройство по WiFi отправляет данные о влажности почвы на MQTT сервер. Устройство работает автономно и запитывается от небольшой солнечной панели и аккумулятора.

Кому интересно, все файлы проекта я разместил в репозитории на github: https://github.com/BigIskander/PlantWatering/tree/main

Сбор данных и наблюдения за влажностю почвы.

После того, как собрал данное устройство, сбор данных я вел в течении 3 месяцев. Все это время устройство работало автономно (т.е. без внешнего источника питания). Аккумулятор подзаряжался от солнечной панели в дневное время и подразряжался в ночное время.

В первое время наблюдений, цель была: выявить значение уровня влажности почвы, при котором лучше всего будет осуществлять полив растения. Поэтому, функция полива устройства была отключена и велось наблюдение только за передаваемыми значениями. При этом, полив, когда необходимо, осуществлялся вручную. Далее, исходя из полученных значений (графиков изменения влажности почвы), я определил, что наилучшим решением будет поливать растение, когда влажность падает ниже 20%. Таким образом, после первоначальных наблюдений устройство было запрограммировано поливать растение (т.е. наливать 300 мл воды), в случае, если влажность почвы ниже 20%. После чего, наблюдения продолжились.

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

Непосредственно сбор данных осуществлялся следующим образом: 1) устройство 1 раз в час по WiFi передавало данные на MQTT сервер; 2) программа на компьютере отслеживала сообщения, поступающие на MQTT сервер и записывала их в файл.

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

Результаты наблюдений.

Ниже представлены графики влажности почвы и напряжения (на аккумуляре), построенные на основе наблюдений за период в 3 месяца (2327 наблюдений). Красными квадратиками обозначено время которое устройство автоматически производило полив.

График валжности почвы за 3 месяца.

График напряжения за 3 месяца.

Для большей наглядности, ниже представлены графики, построенные на осневе наблюдений за перид в 1 неделю.

График валжности почвы за неделю.

График напряжения за неделю.

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

Про MQTT сервер.

Для того, чтобы получать данные с устройства применялся MQTT сервер. MQTT- это протокол, используемый для передачи данных между умными устройствами. Для данного проекта я пользовался MQTT сервером, предоставляемым сервисом https://www.wqtt.ru. При желании, вы можете использовать любой другой аналогичный сервер или установить свой, локальный MQTT сервер (при наличии соответсвующих навыков).

На MQTT сервере было создано 3 топика:

  • voltage - напряжение аккумулятора
  • moisture - влажность почвы
  • water - полив (0 - полива не было, 1 - был осуществлен полив)

Особенностью технологии MQTT является то, что MQTT сервер получает сообщения с устройств и передает их дальше на подписанные (на эти сообщения) устройства, при этом, на самом сервере эти сообщения обычно не сохраняются. На сервере может храниться только последнее переданное сообщение в топике, если это сообщение передавалось с параметром retain равным true. Поэтому, для сбора данных я применял небольшой скрипт, написанный на языке программирования python (https://www.python.org), который в фоновом режиме отслеживал сообщения с MQTT сервера и сохранял их в отдельный файл на компьютере.

Для обработки файла с сохраненными MQTT сообщениями и приведения их в более удобный для восприятия вид была написана небольшая программа работающая внутри jupyter notebook https://jupyter.org.

Скрип применявшийся для сбора данных, а также небольшая программа, применявшаяся для обработки данных из файла:
https://github.com/BigIskander/PlantWatering/tree/main/MQTT_Data

Для использования этого скрипта (и сбора данных) вам нужно будет в файле credentials.py указать данные для подключения к серверу MQTT.

Для просмотра сообщений с MQTT сервера в реальном времени я использовал программу MQTT Explorer http://mqtt-explorer.com. К сожалению, в этой программе не предусмотрена выгрузка данных и она не умеет сохранять данные, т.е. данные доступны только внутри программы до тех пор, пока её не закроешь.

Электрическая схема.

Электронные компоненты для сборки устройства:

  • U1 - Wemos D1 mini (микроконтроллер)
  • U2 - Емкостный датчик влажности почвы V1.2 [Capacitive soil moisture sensor V1.2] (изготовленный на чибе NE555)
  • U3 - 5 вольтовый мотор (погружной водяной насос)
  • U4 - небольшая солнечная панель мощьностью 1 ватт
  • U5 - тактовая кнопка
  • U6 - индикатор заряда батареи
  • J1 - модуль зарядки батареи 03962A
  • J2 - 18650 литий-ионный аккумулятор
  • R1, R2, R3, R4, R5 - резисторы на 10 килоОмм
  • C1 - конденсатор с электрическими параметрыми: 16 вольт и 100 микрофарад
  • T1, T2, T3, T4, T5 - FQP30N06 MOSFET полевые транзисторы
  • + плата для прототипирования и провода толщиной 24 AWG (или 0.205 мм2)

Электрическая схема устройства.

Рекомендации по сборке устройства и прошивке микроконтроллера.

Для удобства сборки лучше оборудовать хорошо освещенное место, чтобы лучше видеть мелкие детали, так как часть компонентов небольшие по размеру. Желательно использовать паяльник с регулировкой температуры и хороший припой, так как, если во время пайки перегреть электронные компоненты, они могут выйти из строя.

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

Для прошивки микроконтроллера использовалась программа Arduino IDE (https://www.arduino.cc/en/software). Программа для микроконтроллера написана на языке программирования C++. Перед прошивкой необходимо будет указать данные для подключения к сети WiFi и к MQTT серверу в файле credentials.hpp. При желании, вы можете модифицировать устройство и программу по собственному усмотрению.

Программа для микроконтроллера:
https://github.com/BigIskander/PlantWatering/tree/main/PlantWatering

Некоторые технические подробности.

Большая часть электронных компонентов необходимых для сборки покупалась в интернет магазинах: https://amperka.ru , https://mcustore.ru и https://aliexpress.ru. Гибкую трубку для полива покупал на https://www.ozon.ru. Часть из необходимых для сборки деталей уже имелось на руках.

Устройство собрано на базе микроконтроллера Wemos D1 mini. Этот микроконтроллер потребляющий мало электричества. Однако, даже с учетом вышесказанного, аккумулятора не хватит на долго, если микроконтроллер все время будет находиться в активном режиме работы. Поэтому, для того, чтобы снизить потребление электричества, микроконтроллер был запрограммирован так, что в временной промежуток между измерениями влажности почвы (и поливами) микроконтроллер находится в режиме глубокого сна (т.е. в режиме работы, в котором энергопотребление устройства минимально).

Для измерения влажности почвы применяется ёмкостный датчик влажности почвы V1.2 (Capacitive soil moisture sensor V1.2). Это аналоговый датчик, у которого меняется напряжение на выходном пине в зависимости от влажности почвы. К сожалению, напряжение на выходном пине так же зависит от напряжения, подаваемого для питания датчика. Для того, чтобы учитывать эту особенность, нужен был способ измерять напряжение, подаваемое для питания датчика.

Сложность заключалась в том, что у выбранного микроконтроллера всего 1 аналогвый пин, который может измерять подаваемое на него напряжение в пределах от 0 до 3.3 вольт, а напряжение требуется измерять с двух источников. К тому же напряжение литий-ионного аккумулятора 18650 (которое тоже требуется измерять), обычно находится в пределах от 3.7 до 4.2 вольт, что превышает порог измерения в 3.3 вольта. Поэтому, для последовательного измерения напряжения из двух источников была собрана схема с применением транзисторов, а для измерения напряжения акуумулятора собрана небольшая схема с делителем напряжения.

После того, как устройство было собрано, производилась калибровка. Я измерял значения, получаемые когда датчик сухой (0% влажности) и когда датчик погружен в воду (100% влажности). Измерения проводил при разных значениях подаваемого напряжения. Затем, на основе полученных данных, прописал формулу, по которой программа (в микроконтроллере) будет вычислять влажность почвы.

Фактически устройство сначала замеряет напряжение источника питания (аккумулятор), затем измеряет напряжение на выходном пине датчика влажности. Далее расчитывает влажность почвы и если влажность почвы меньше 20%, устройство наливает 300 мл воды (в поддон растения). После этого устройство по WiFi передает данные на MQTT сервер. После передачи данных устройство уходит в режим глубокого сна на 1 час и через 1 час цикл повторяется.

Решение о том, сколько воды устройство будет наливать за один полив, принималось с учетом размера поддона растения. Я решил, что в моем случае, 300 мл воды будет достаточное количество для полива. При желании, вы можете поменять эту величину в программе по своему усмотрению.

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

Фотографии устройства:

Снимок устройства.
Снимок устройства.
Снимок устройства.
Снимок устройства.
Снимок устройства.

Видео демонстрация работы устройства (полив растения):

На верх!
Закрыть. Открыть изображение в новой вкладке.