Умная ирригационная система на ESP32 и приложении Blynk


В этом проекте мы рассмотрим систему орошения на базе Интернета вещей с использованием платы ESP32 и приложения Blynk. Это проект, основанный на концепции Интернете вещей (IoT), представляет собой интеллектуальную систему орошения и предлагает множество возможностей для автоматизации всего процесса орошения. Данная оросительная система построена с использованием таких компонентов как микроконтроллер ESP32, датчик влажности почвы, датчик уровня воды, модуль реле и датчик DHT22. Она будет отправлять данные в приложение Blynk. Также в составе системы есть водяной насос, который разбрызгивает воду в зависимости от состояния земли и таких факторов как влажность и температура. Эта система будет удобна для ферм и теплиц.

Умная ирригационная система на ESP32 и приложении Blynk

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

Как работает наша умная ирригационная система?

Мы будем использовать емкостный датчик влажности почвы для измерения содержания влаги в почве. Вы также можете использовать резистивный датчик влажности почвы. Также мы используем датчик уровня воды для измерения уровня воды внутри резервуара для воды. Аналогичным образом, для измерения температуры и влажности воздуха мы предпочитаем датчик температуры и влажности DHT22. Используя силовое реле 5 В, мы будем управлять водяным насосом.

При включении нашей системы плата ESP32 подключается к приложению и облаку Blynk через Интернет. Затем значения влажности почвы отображаются в интерфейсе приложения Blynk. Всякий раз, когда датчик обнаруживает низкое количество (менее 50%) влаги в почве, двигатель автоматически включается. Следовательно, будет автоматически орошаться поле. Если датчик воды обнаруживает низкий уровень воды (менее 20%) внутри резервуара для воды, в этом случае двигатель не включится автоматически. Как только почва становится влажной, двигатель отключается. Кроме того, с помощью кнопки, созданной в этом приложении Blynk, мы можем включать и выключать модуль реле в ручном режиме. Вы можете следить за всем этим удаленно через приложение blynk из любой точки мира.

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

Емкостный датчик влажности почвы

Емкостный датчик влажности почвы

Этот датчик представляет собой аналоговый емкостной датчик влажности почвы, который измеряет уровень влажности почвы посредством емкостного измерения. Датчик регулирует свою емкость в зависимости от количества воды в почве. Вы можете перевести это изменение емкости в уровень напряжения в диапазоне от минимум 1,2 В до максимум 3,0 В. Одним из преимуществ емкостного датчика влажности почвы является его конструкция из устойчивых к коррозии материалов, обеспечивающая длительный срок службы.

Датчик температуры и влажности DHT22

Датчик температуры и влажности DHT22

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

Схема проекта

Схема ирригационной системы на основе модуля ESP32 и приложения Blynk представлена на следующем рисунке.

Схема ирригационной системы на основе модуля ESP32 и приложения Blynk

Подключите датчик влажности почвы к контакту D35 модуля ESP32, датчик уровня воды к контакту D34 и датчик DHT22 к контакту D4. Двигатель подключается к реле. Для управления реле мы используем контакт D5 модуля ESP32. Подключите светодиодную ленту RGB к контакту D21 модуля ESP32. Вы можете запитать двигатель и реле, используя напряжение 3,7 В от литий-ионного аккумулятора. Для датчика DHT22, емкостного датчика влажности почвы и датчика уровня воды требуется только питание 3,3 В.

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

Внешний вид собранной конструкции проекта

Настройка приложения Blynk

Встречайте новое приложение Blynk. После создания учетной записи посетите https://blynk.io. Затем введите идентификатор электронной почты и пароль и нажмите login («Войти»).

Страница входа в приложение Blynk

Сначала вам нужно создать новый шаблон в приложении Blynk. Чтобы создать новый шаблон в учетной записи приложения Blynk, выполните следующие действия. Перейдите в зону разработчика (Developer Zone) в меню слева. Нажмите меню My Template («Мой шаблон»). Создайте новый шаблон.

Страница создания шаблона в приложении Blynk

Из меню Widgets («Виджеты») вы можете добавить в интерфейс виджеты кнопок (Button Widgets) и Gauge Widgets (виджеты датчиков). Затем назовите его по своему усмотрению и выберите виртуальный вывод как V0. Затем измените значения с 1 на 0 и измените режим, поскольку переключатель виджетов «Датчик» (Gauge) меняет входные значения с 0 на 100. Наконец, настройте эти виджеты по своему усмотрению.

Страница настройки виджетов в приложении Blynk

В информации об устройстве вы найдете свой Template ID (идентификатор шаблона), Template Name (имя шаблона) и AuthToken, скопируйте их и вставьте в код программы.

Информация об устройстве в приложении Blynk

Объяснение кода программы

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

В коде нашей программы анимация светодиодных лент RGB и датчиков, таких как DHT22, датчик влажности почвы и датчик уровня воды управляются и контролируются через приложение Blynk. Насос и светодиодный индикатор управляются в зависимости от влажности почвы и уровня воды. Дополнительно имеются функции изменения цветовой палитры и других визуальных эффектов RGB LED ленты.

Зададим идентификатор шаблона Blynk, имя шаблона, токен аутентификации и настроим последовательный вывод для Blynk.

В следующем фрагменте коды мы подключаем необходимые библиотеки (WiFi, Blynk, DHT, FastLED) и задаем детали аутентификации и учетные данные Wi-Fi.

Далее настраиваем параметры светодиодной матрицы, такие как  яркость, тип, порядок и расположение.

Затем настраиваем датчик DHT и определяем контакты для влажности почвы, уровня воды и светодиодов.

После этого устанавливаем пороговые значения влажности почвы, штифтов насоса и переменных, связанных с управлением насосом и уровнем воды.

Инициализируем последовательную связь, выходные контакты, соединение Blynk и светодиодную матрицу.

Также запрограммируем функции, запускаемые при взаимодействии с приложением Blynk, управления помпой, управления режимом (автоматический и ручной) и светодиодной лентой RGB.

Если система находится в автоматическом режиме (pumpMode == 0), она считывает уровень влажности почвы с помощью датчика влажности почвы. Значение датчика отображается в диапазоне от 0 до 100, а функция autoControlPump вызывается для управления насосом в зависимости от влажности почвы.  

Считываем уровень воды с датчика уровня воды. Если уровень воды ниже порогового значения (450), то устанавливаем уровень воды равным 0. В противном случае он отображает значение уровня воды в диапазоне от 0 до 100.

Вызываем функцию controlLED для управления светодиодом на основе сопоставленного уровня влажности почвы. Затем он вызывает функцию readAndSendSensorData, чтобы считывать температуру и влажность с датчика DHT и отправлять данные в приложение Blynk. Кроме того, он отправляет уровень воды в Blynk.

Тестирование работы проекта умной ирригации на основе ESP32

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

Датчик влажности почвы вставляется в почву, а датчик уровня воды погружается в резервуар для воды. После включения устройства и открытия приложения Blynk ESP32 автоматически подключается к вашему Wi-Fi, предоставляя данные о влажности почвы, уровне воды, влажности и температуре воздуха в режиме реального времени непосредственно в приложении Blynk.

Отображение данных нашего проекта в приложении Blynk

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

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

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

Видео, демонстрирующее работу проекта

Источник статьи

(Проголосуй первым!)
Загрузка...
311 просмотров

Комментарии

Умная ирригационная система на ESP32 и приложении Blynk — 6 комментариев

  1. Добрый день. Купил все необходимое, плату esp32. Пробую её подключить к вай фай. Пробую повторить ваш проект. Но все равно не получается. Стою на месте. Может у вас есть возможность индивидуально объяснить что делаю не так?

    • Доброе утро. К сожалению, индивидуально вряд ли получится. Если у вас не получается подключить модуль ESP32 к сети WiFi я советую вам начать с более простого проекта (этот проект все таки сложноват для начинающих) - таких проектов на нашем сайте достаточно много. И этот проект я бы советовал вам пробовать в упрощенном варианте, например, без светодиодной ленты - в этом случае код данного проекта значительно упростится

  2. Можно использовать насос на 12 вольт и что для этого нужно ещё сделать?

    • Добрый день, да, можно. Необходимо использовать модуль реле на 12 В, а питание на остальную часть схемы подавать через понижающий стабилизатор напряжения, например, микросхему AMS1117, и в этом случае питание на модуль ESP32 необходимо подавать на его контакт Vin, чтобы не сжечь модуль

  3. Добрый день. А как быть если нужно сделать например на три горшка?
    Как понимаю что реле нужно уже трех контактное, три насоса, три датчика влажности.. И как изменится сам код?

    • Добрый вечер. Да, реле нужно будет трехконтактное, каждым контактом будем управлять отдельно с контакта модуля ESP32. В автоматическом режиме нужно будет три раза повторить код:
      int soilSensorValue = analogRead(soilMoisturePin);
      Serial.println(soilSensorValue);
      mappedSoilMoisture = map(soilSensorValue, 1023, 2750, 100, 0);
      autoControlPump(mappedSoilMoisture);
      В функцию analogRead при этом передавать номера контактов, к которым подключены датчики, а в функцию autoControlPump добавить в качестве аргумента номер контакта, с которого будем управлять реле, и все эти три раза передавать туда этих три разных контакта.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *