Рубрики
Проекты на ESP8266

Автоматическая кормушка для животных на NodeMCU ESP8266 под управлением приложения Blynk

В данной статье мы рассмотрим создание автоматической кормушки для животных на основе модуля ESP8266, которой можно будет управлять из приложения Blynk, популярного для создания различных проектов тематики интернета вещей. С помощью данного приложения (или в качестве альтернативы ему можно использовать Web Dashboard) вы можете задавать график кормления своего домашнего животного из любой точки земного шара, где есть доступ к сети Интернет.

Основным элементом нашей автоматической кормушки для животных будет плата NodeMCU ESP8266, серводвигатель будет исполнительным механизмом, открывающим заслонку кормушки, а для получения текущего времени мы будем использовать серверы NTP (Network Time Protocol – протокол сетевого времени).

Ранее на нашем сайте мы также рассматривали проект автоматической кормушки для животных на основе платы Arduino, но в рассматриваемом здесь проекте более удобное управление (в том числе онлайн) кормушкой.

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

  1. NodeMCU ESP8266 (купить на AliExpress).
  2. Серводвигатель.

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

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

Как видите, соединения в схеме очень простые. Контакты Vcc (красный провод) и GND (коричневый провод) сервомотора мы подключили к контактам 3.3V и GND платы NodeMCU ESP8266, а сигнальный контакт сервомотора (желтый провод) мы подключили к контакту D3 платы NodeMCU.

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

Приложение Blynk – это инструмент для гибкого управления различными проектами тематики интернета вещей (IoT). Оно может собирать данные от различных датчиков, управлять ими, принимать важные оповещения и многое другое. В данном проекте мы с помощью этого приложения будем управлять серводвигателем, использующимся в нашей кормушке для животных для открывания заслонки.

Для начала вам необходимо создать себе аккаунт на платформе Blynk Cloud если у вас его еще нет. После того как вы войдете в свой аккаунт в этой платформе вам необходимо создать шаблон (template), в котором вы сможете добавлять различные устройства. Для этого нажмите на кнопку ‘+ New Template’ (добавить новый шаблон) в правом верхнем углу своего аккаунта.

После этого откроется окно, в котором вам необходимо ввести имя шаблона, тип устройства и тип соединения. Имя можете ввести любое. В качестве типа устройства (Hardware) выберите ESP8266, а в качестве типа соединения – Wi-Fi.

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

Вторая вкладка – это метаданные (Metadata). Метаданные – это дополнительная информация, которую мы хотим сообщить о своем проекте, например, имя устройства, владелец устройства и т.д. Это не обязательная информация, но вы можете добавить ее если захотите.

Следующая вкладка ‘DataStream’ представляет собой способ структурирования данных, которые непрерывно поступают в устройство и передаются из него. В нашем проекте мы создадим два потока данных (data streams): один – для управления серводвигателем, а второй – для получения данных таймера от приложения blynk. Чтобы создать поток данных (DataStream) нажмите на кнопку ‘+New Datastream’ и затем выберите Virtual Pin (виртуальный контакт).

Откроется новое окно, где вы можете ввести имя потока данных, виртуальный контакт и тип данных. После этого нажмите на кнопку ‘Create’ (создать). Аналогичную процедуру проделайте для создания потока данных для получения данных таймера.

Затем пропустите вкладку ‘Event’ и перейдите на вкладку ‘Web Dashboard’ (панель инструментов). В blynk 2.0 у нас доступно два типа панели инструментов (Dashboards) – Web Dashboard (управляется онлайн) и Mobile Dashboard (в виде мобильного приложения). Обе эти панели инструментов можно настраивать и использовать по отдельности. Web Dashboard имеет ограниченное количество доступных виджетов. Вы можете для тестирования ее работы добавить виджет переключателя.

Следующая вкладка – это Mobile Dashboard. Ее можно настраивать только с мобильного устройства (например, смартфона). Поэтому прежде чем переходить к ней сначала сохраните все сделанные вами изменения в облаке. Для этого нажмите на кнопку save в правом верхнем углу экрана.

После этого нам осталось написать код программы и настроить мобильное приложение.

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

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

Первым делом в программе подключим используемые библиотеки. BlynkEdgent.h – это новая библиотека для платформы Blynk 2.0. Библиотека «NTPClient.h» будет использоваться для получения времени и даты с серверов NTP. Библиотека «WiFiUdp.h» используется для работы с протоколом UDP: открытие UDP порта, передача и прием UDP пакетов и т.д. Библиотека «Servo.h» используется для управления серводвигателем.

В следующих двух строках кода необходимо ввести ваши Blynk template ID (идентификатор шаблона) и Blynk Device ID (идентификатор устройства). Эти идентификаторы можно скопировать со страницы ‘device Info’ в облачной платформе Blynk.

Далее создадим объект для NTP клиента. При создании данного объекта нам необходимо указать адрес NTP сервера, который мы будем использовать. Более подробно про работу с протоколом NTP вы можете прочитать в статье про интернет часы на NodeMCU ESP8266 и OLED дисплее.

Функция BLYNK_WRITE() используется для проверки поступающих данных на виртуальных контактах V0 и V1. Виртуальный контакт V0 используется для приема состояния переключателя, а виртуальный контакт V1 используется для получения данных таймера от приложения Blynk.

Далее в функции setup мы инициализируем последовательную связь со скоростью 115200 бод, запустим в работу Blynk и начнем связь с клиентом времени (time client).

Внутри функции loop мы первым делом будем получать данные с клиента NTP и сохранять эти данные в переменных HH и MM. Данные времени, получаемые с клиента NTP, в 24-часовом формате, мы будем преобразовывать их в 12-часовой формат и затем конвертировать их в секунды чтобы сравнить их с данными таймера, получаемыми от приложения Blynk. Если наше текущее время совпадает с временем таймера, полученным от приложения Blynk, то кормушка будет открываться на определенный период времени.

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

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

Первым делом скачайте приложение Blynk из Play Store и создайте себе в нем новый аккаунт (если у вас его еще нет). Войдите в свой аккаунт и переключитесь в режим разработки (developer mode). Разработчик (developer) – это особый пользователь, который имеет доступ ко всему функционалу настройки приложения. Чтобы включить режим разработки (Developer mode), нажмите на иконке ‘Profile’ в верхнем левом углу и затем включите режим разработки.

После этого нажмите на кнопку добавления нового устройства (new device), поднесите плату NodeMCU поближе к вашему смартфону и затем нажмите на кнопку ready (готов).

После этого приложение должно автоматически найти точку доступа (hotspot), созданную платой NodeMCU. Подключитесь к этой точке доступа и введите параметры доступа (имя сети и пароль) к Wi-Fi сети вашего роутера. Затем нажмите на continue, после чего произойдет передача этих параметров доступа к Wi-Fi сети на плату NodeMCU и они будут автоматически добавлены в плату.

Создание панели инструментов в приложении Blynk

Теперь нам необходимо настроить панель инструментов в нашем приложении (Blynk Mobile Dashboard). Для этого перейдите в устройство, которое вы недавно добавили, нажмите на иконке меню, после чего вам будут показаны все доступные виджеты.

Для нашего проекта мы будем использовать два виджета – кнопку (Button) и виджет таймера (Timer widget). Виджет кнопки будет использоваться для ручного управления заслонкой кормушки (сервомотором), а виджет таймера будет использоваться для установки времени срабатывания кормушки.

Нажмите на виджет кнопки (Button widget) чтобы настроить его. В нем вам необходимо выбрать поток данных (datastream), который вы ранее создали в облаке Blynk (Blynk cloud). После этого нажмите на виджет таймера чтобы настроить его параметры. В нем также необходимо выбрать поток данных. Также вы можете изменить другие настройки виджетов: имя, цвет и т.д.

Сборка конструкции автоматической кормушки

Проще всего это сделать заказав готовую кормушку для животных в каком-нибудь онлайн магазине или купив ее в специализированном оффлайн магазине. После этого ее необходимо немного модифицировать под себя, вставив в нее серводвигатель и другую электронику. Вместо сервомотора можно использовать двигатель постоянного тока с напечатанной на 3D принтере передачей (как показано на рисунке ниже). Плата NodeMCU помещается в низ корпуса. Запитать конструкцию проекта можно от адаптера на 12V.

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

Для тестирования работы проекта наполните коробку каким-нибудь кормом для животных (например, для кошек). После этого в приложении Blynk нажмите на созданную ранее кнопку чтобы проверить подается ли еда при включении кормушки или нет.

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

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

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

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

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