Интеллектуальный индикатор сточных вод на ESP8266 NodeMCU


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

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

Ранее на нашем сайте мы уже рассматривали проект индикатора уровня воды на основе платы Arduino, но рассматриваемый в данной статье проект является более "интеллектуальным" поскольку позволяет управлять его работой онлайн, со смартфона.

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

  1. ESP8266 NodeMCU (купить на AliExpress).
  2. Ультразвуковой датчик HCSR04 (купить на AliExpress).
  3. Поплавковый датчик (Float sensor)/проводящие электроды.
  4. Соединительные провода.
  5. Светодиод (купить на AliExpress).
  6. Адаптер питания на 12V, 1 AMP DC.

Принцип работы проекта

В нашем проекте мы будем использовать два датчика: ультразвуковой датчик для определения блокировок и датчик уровня воды, который будет сигнализировать о переполнении уровня воды. Информация от этих датчиков будет обрабатываться в плате ESP8266 NodeMCU, которая будет работать и как микроконтроллер, и как WiFi модуль. Структурная схема работы проекта показана на следующем рисунке.

Структурная схема работы проекта

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

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

Схема индикатора сточных вод на ESP8266 NodeMCU представлена на следующем рисунке.

Схема индикатора сточных вод на ESP8266 NodeMCU

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

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

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

Внешний вид конструкции проекта, помещенной в пластиковый корпус

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

Blynk – это приложение, которое можно запускать на Android и iOS устройствах чтобы управлять различными проектами интернета вещей (IoT) с помощью смартфона. Отличительной особенностью данного приложения является то, что в нем можно создать свой собственный GUI (Graphical User Interface – графический интерфейс пользователя).

Скачайте приложение Blynk с Google Play Store (пользователи iOS могут скачать его из App Store). После установки приложения зарегистрируйтесь в нем, используя свой email и пароль.

Создание нового проекта в Blynk

Откройте приложение, на его главном экране вы увидите ссылку “New Project” (новый проект). Нажмите на нее, в результате чего у вас откроется новое окно, в котором вам необходимо будет ввести параметры проекта: имя, плату и тип соединения.

Создание нового проекта в Blynk

В данном проекте в качестве устройства выберите NodeMCU, а в качестве типа соединения Wi-Fi, после чего нажмите на “Create” (создать).

После успешного создания проекта вы на свой email получите Authenticate ID (идентификатор аутентификации). Сохраните его – он нам понадобится в дальнейшем.

Создание графического интерфейса пользователя (GUI)

Откройте свой проект в Blynk, после чего нажмите на значок “+”, в результате чего мы получим доступ к виджетам, которые можно использовать в нашем проекте. Мы будем использовать виджет “Gauge” для отображения расстояния (до воды) и виджет “Notification” для приема уведомлений от NodeMCU. В виджет Gauge необходимо ввести некоторые изменения: имена параметров, номер контакта (V1).

Создание графического интерфейса пользователя в Blynk

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

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

Для загрузки кода программы в ESP8266 NodeMCU выполните следующую последовательность шагов.

1. Откройте Arduino IDE и в ней выберите пункт File-->Preferences-->Settings.

Выбор пункта меню File-->Preferences-->Settings в Arduino IDE

2. Введите строку https://arduino.esp8266.com/stable/package_esp8266com_index.json в поле ‘Additional Board Manager URL’ и нажмите ‘Ok’.

Добавление поддержки модуля ESP8266 в Arduino IDE

3. Откройте пункт Tools--> Board--> Boards Manager. В менеджере плат (Boards Manager) введите ESP8266 в строке поиска, после осуществления поиска выберите последнюю версию платы и нажмите на install (установить).

Установка библиотеки для работы с модулем ESP8266

4. После того как установка будет закончена выберите пункт меню Tools-->Board--> и в нем выберите NodeMCU 1.0 (ESP-12E Module). После этого вы сможете программировать вашу NodeMCU с помощью Arduino IDE.

Первым делом в программе подключим используемые библиотеки. Библиотека “BlynkSimpleEsp8266.h” будет использоваться для интеграции ESP8266 с приложением Blynk. Для установки данной библиотеки в Arduino IDE перейдите на вкладку Sketch и в ней выберите опцию Include Library--> Manage Libraries. Выполните поиск Blynk в окне поиска, после чего скачайте и установите пакет Blynk для ESP8266.

Далее объявим используемые контакты.

После этого укажем параметры, необходимые для доступа к сети WiFi (ее имя и пароль) – они будут необходимы для соединения NodeMCU с сетью интернет. Также введем идентификатор аутентификации (Authentication ID) для аккаунта Blynk, который мы сохранили ранее. Убедитесь в том, что в представленных ниже строках программы вы заменили все значения этих параметров на свои.

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

Для того чтобы запустить ультразвуковой датчик в работу (чтобы он излучил импульс) необходимо подать короткий импульс (2 микросекунды) на его контакт trigPin. Далее с выходного контакта датчика echo pin считывается длительность импульса (оно равно времени распространения ультразвуковой волны до препятствия и обратно), после чего рассчитывается расстояние в сантиметрах.

Затем для передачи значения расстояния в приложение Blynk используется функция Blynk.virtualWrite, в которой в качестве виртуального контакта используется контакт V1 – помните мы указали его при настройке приложения Blynk.

Далее с помощью условных операторов if-else задается логика работы нашего индикатора сточных вод. В нашем случае если расстояние до воды будет мене 5 см будет передавать сообщение о тревоге. Вы можете изменить это расстояние по своему усмотрению. Для передачи уведомлений используется функция Blynk.notify.

Тестирование работы проекта

Когда аппаратная часть проекта будет готова загрузите код программы в NodeMCU, после этого проект будет готов к тестированию.

Тестирование работы проекта

Проверить работу проекта можно с помощью контейнера с водой. Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Исходный код программы (скетча)

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

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

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

Ваш адрес email не будет опубликован.