Автоматический полив комнатных растений на M5Stack (ESP32).
Наверное, каждый сталкивался с проблемой полива комнатных растений во время отпуска, когда вы запланировали поездку на 1-2 неделю. На данное время приходиться искать того, кто мог бы поливать ваши растения. Я сталкивался с такой проблемой и поэтому решил сделать автоматический полив комнатных растений на M5Stack (ESP32). Данное устройство оснащено дисплеем, на котором отображается влажность почвы и состояние работы помпы полива. Но не всегда удобно смотреть на двухдюймовый дисплей. Поэтому я сделал приложение для телефона, которое позволит информировать о процессе полива и отследить, когда нужно добавлять воду в резервуар.
Что понадобиться для системы автоматического полива растений?
Для того, чтобы проект можно было легко повторить, я буду использовать M5Stack Core 2на базе микроконтроллераESP32. Обзор на данное устройство можно посмотреть тут.
Полив и контроль влажности почвы будет осуществлять юнит «Watering», в комплекте с которым поставляются все необходимые провода для подключения и капиллярные шланги. Датчик измерения влажности почвы емкостной, поэтому он не окисляется, что обеспечит точность измерения на долгое время.
Купить все для данного проекта со скидкой можно на сайте https://m5stack.pro. Для моих читателей предусмотрена скидка 10% в данном магазине, которая действует до 31.12 2021. Купон на сидку: PORTAL.
На сайте m5stack.pro также идет предновогодняя акция на новогодние наборы. Подробнее смотрите тут.
Схема подключения системы автополива комнатных растений.
Несмотря на то, что M5Stack Core 2 и юнит «Watering» соединяются между собой одним проводом, тут ожидал меня один сюрприз. «Watering» нужно подключать к Порту В, но у Core 2 есть только порт А. А при подключении к порту А показания с датчика не считываются. Можно купить модуль основания для расширения портов, но в магазине меня уверили, что все будет работать и от порта А.
Как показала практика, они ошибались, поэтому пришлось подключать к пиннам основной колодки контактов, соответствующим порту В. Как показано ниже на схеме подключения.
Также можно оставить питание в разъёме порта А, а информационные контакты подключить в основную колодку, как показано на схеме ниже.
Калибровка датчика влажности почвы.
Так как датчик влажности аналоговый его нужно откалибровать. Взять диапазон чувствительности и перевести в процент (%) влажности. Для этого я написал небольшую программу, которая считывает показания и выводит данные значения на дисплей. Внизу статьи вы можете скачать данную программу для UIFlow и среды разработки Arduino IDE.
Первое калибровочное значение нужно замерять, когда датчик сухой. Полученные данные указываем в программе как максимальное значение.
Затем производим замеры при погруженном в воду датчике. Полученные значения также указываем в программе.
На этом калибровка завершена, осталось перевести показания в процент (%) влажности, что мы и сделаем в программе.
Программа полива комнатных растений в среде UIFlow.
Сделать систему полива в среде разработки UIFlow достаточно просто. Самый сложный момент — это перевод полученных значений при калибровки в процент (%)влажности почвы. И тот факт, что при погружении в воду значение минимальное, потребуется применение некоторых математических знаний. Но вам не нужно писать формулы и разбираться, что к чему. Я уже все прописал, а вам достаточно в программе указать минимальное и максимальное значения при калибровке, загрузить программу в M5Stack. Программу постарался сделатьмаксимально универсальную: её можно использовать не только для M5Stack Core 2, но и дляM5Stack GRAY, M5Stack FIRE и других базовых моделей с двухдюймовыми дисплеями и тремя кнопками.
Написал алгоритм контроля влажности почвы, если значение падает ниже, чем прописано тут.
Помпа автоматически включается и работает до тех пор, пока влажность почвы не поднимется до указанного значения. Регулируемое значение влажности почвы можно указать то, которое необходимо поддерживать для вашего растения.
Для комфортной работы вывел следующую информацию на дисплей:
Уровень влажности почвы;
Состояние помпы: включена или выключена;
Уровень заряда батареи – полив может работать от встроенного аккумулятора и даже, если выключат электричество, устройство будет работать автономно ещё некоторое время.
В программе добавил принудительное включение и выключение помпы при нажатии кнопки «А». Помпа работает пока кнопка находится в нажатом состоянии, при отпускании кнопки помпа отключается. Это функция необходима для продувки капиллярах шлангов и при смене резервуара с водой.
Также добавил регулировку яркости подсветки дисплея, при нажатии на сенсорную кнопку «С» яркость изменяется от 20 до 100 %.
Интерфейс получился достаточно красивый, но вот вывести текст на русском языке нельзя. Для Arduino IDE есть пример «Display_Unicode», который позволяет вывести текст на русском. Сейчас проверим так ли это.
Программа автоматического полива комнатных растений в среде Arduino IDE.
Для начала проверил вывод русского текста на дисплей M5Stack. Да, действительно, текст выводится на русском языке, но есть небольшая проблема: использовать можно только подгруженный шрифт в определенной кодировке. При работе с динамическим обновлением значений происходит наложение символов. Похоже, фон текста не поддерживается. Решил использовать костыль, а именно: закрашивать область прямоугольником и затем выводить текст. Но предыдущий текст также не закрывается. В чём проблема и как её решить пока не знаю. Если у вас есть предложения по решению данной проблемы, пишите их в комментариях.
Как и писал раннее, для Arduino IDE написал скетч калибровки датчика влажности. Скачать его можно внизу статьи в разделе «файлы для скачивания».
В среде Arduino IDE сделать красивый интерфейс сложнее. У меня получился вот такой результат.
Программа по функциональности получилась точно такая же, как и в UIFlow. И на дисплей выводится аналогичная информация. С помощью сенсорных кнопок можно управлять яркостью подсветки дисплея, узнать IP адрес устройства, принудительно включить помпу.
Так как растение может стоять в труднодоступном месте, я решил сделать управление устройством по Wi-Fi сети с помощью приложения для телефона на операционной системе Android.
Настройка среды Arduino IDE для работы с платой M5Stack Core 2.
Для того, чтобы начать программировать M5Stack Core 2 в среде Arduino IDE необходимо установить драйвера и добавить плату в среду разработки. Об этом подробно рассказано на официальном сайте. Все по аналогии с настройкой платы ESP32.
После этого можно загрузить скетч в устройства.
Внимание! Скетч нужно обязательно разархивировать. Запускаем нужный файл «WATERING_1.1.ino». После этого должно открыться несколько вкладок, как показано на картинке ниже.
Что нужно настроить в прошивке автоматического полива?
Перед тем, как загрузить код в плату необходимо настроить несколько параметров. Это процент поддерживаемой влажности почвы и калибровочные данные. Про то, как их узнать, рассказывал ранее.
Затем настроить подключение к вашей Wi-Fi сети. Если данные не указывать, устройство поднимет свою точку доступа с именем «ATPomp» и паролем по умолчанию «012345678». В таком случае в приложении нужно указать IP «192.168.4.1».
Приложение для телефона для управления поливом комнатных растений.
После того, как всё настроено и прошивка загружена в M5Stack, нажимаем на кнопку «В», которая располагается по середине. После чего на экране выше кнопки увидим IP – адрес устройства. Если вам выдаст одни нули, это означает, что устройство не подключилось к вашей Wi-Fi сети и подняло свою точку доступа. Как подключиться к ней я рассказывал ранее.
Сейчас можно перейти к приложению, скачать которое можно внизу статьи в разделе «файлы для скачивания».
В приложении на странице настроек указываем полученный IP- адрес.
На основной странице приложения отображается точно такая же информация, что и на дисплее. Однако тут добавлено поле «яркость». Это позволит проконтролировать, чтобы дисплей не светился ярко, когда этого не нужно.
Тут есть особенность в управление помпой с приложения. Одна кнопка включает помпу, а вторая выключает, поэтому нужно быть внимательнее, чтобы не оставить включённым насос полива.
Проверка работоспособности системы полива растений.
Все подключено и запрограммировано. Далее подключаем капиллярные шланги к помпе, наливаем воды в резервуар. Я буду использовать стеклянную банку объёмом 1 литр.
Подопытное растение у меня будет каланхоэ, которое раньше у меня цвело, но последние 2 года не цветет. Возможно, как раз ему нахватает влаги. Вот заодно и проверю.
Установил измерительный зонд в почву рядом с растением. После этого проверил, как работает программа, написанная в UIFlow. Полив работает отлично.
Затем проверил скетч, написанный в среде Arduino IDE. Результат аналогичный. Теперь пришло время проверить работу приложения. Как я и ожидал, информация отображается, помпа включается и выключается.
Пришло время поставить растение на место и забыть про полив. Главное не забыть про то, что нужно добавлять воду в резервуар.
Пока делал данную самоделку, придумал несколько доработок которые можно сделать, если данная тема будет интересна:
Звуковое уведомление, если помпа работает, а влажность не меняется, что в свою очередь сигнализирует от том, что вода закончилась.
Настройка с дисплея и приложения поддерживаемого процента влажности.
Комментарии