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


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

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

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

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

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

  1. NodeMCU ESP8266 (купить на AliExpress) (Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158).
  2. Серводвигатель.

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

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

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

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

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

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

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

Добавление нового шаблона в платформе Blynk Cloud

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

Настройка параметров создаваемого шаблона в платформе Blynk Cloud

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

Панель управления шаблоном в платформе Blynk Cloud

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

Вкладка с метаданными на панели управления шаблоном в платформе Blynk Cloud

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

Вкладка управления потоками данных на панели управления шаблоном в платформе Blynk Cloud

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

Создание нового потока данных в платформе Blynk Cloud

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

Web Dashboard в платформе Blynk Cloud

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

Мобильная панель управления в платформе Blynk Cloud

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

Объяснение программы для 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’ в верхнем левом углу и затем включите режим разработки.

Вход в режим разработки в приложение Blynk

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

Добавление нового устройства в приложении Blynk

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

Ввод параметров для доступа к сети WiFi в приложении Blynk

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

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

Виджеты, доступные в приложении Blynk

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

Добавление виджета кнопки и виджета таймера в приложении Blynk

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

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

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

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

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

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

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

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

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

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

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

Комментарии

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

  1. Здравствуйте, приложение blynk стало недоступным, есть ли какие-то альтернативы?

    • Добрый день. Посмотрите вот эту достаточно свежую статью на эту тему, там это приложение все еще доступно для бесплатного использования если перейти по указанной в статье ссылке. Может быть, просто адрес для регистрации в этом приложении сменился на https://blynk.io.
      Еще есть похожая на Blynk платформа под названием Sinric Pro. Более подробно про работу с ней вы можете прочитать в этой статье.

      • Blynk перестал быть доступным в России, нет ли никаких вариантов его использования?

        • К сожалению, таких вариантов я не знаю, если только заменить на другое приложение с аналогичными функциями. Ну а вы Sinric Pro не попробовали?
          Жаль, а у меня на сайте, конечно, несколько популярных статей есть как раз с использованием Blynk.

          • Собрал проект с использованием старого приложения Blynk legacy, через подключение к кастомным серверам, информации об этом в интернете не так много, поэтому если у вас будет время, было бы здорово сделать проект с использованием старого блинка и написать об этом.
            Спасибо за ответы и помощь!

            • Я рад что у вас получилось. А где найти информацию об использовании старого блинка? Не получится ли просто добавить ее в эту статью? Или там так много отличий что нужно писать отдельную статью?

    • Я думаю можно, вопрос лишь в том каким образом вы собираетесь вносить этот донат

  2. Здравствуйте
    Можете мене помочь в написании программы для кормушки с двумя моторами и управлением через телефон но Без интернета
    Взамен помогу вашему проекту финансово

    • Добрый вечер. Сейчас, к сожалению, не могу помочь потому что нахожусь в отпуске

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

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