Перейти к основному содержанию
ИТарктика
УДК: 62-519
А.Е. Чуфырев
Студент-магистрант, Сыктывкарский государственный университет им. Питирима Сорокина
Беспроводное управление механическими устройствами
Аннотация:

Статья описывает один из способов беспроводного удаленного управления механическими устройствами с помощью современных микроконтроллерных и сетевых технологий. Использована связка из чипа ESP8266 и мобильного приложения Blynk. В качестве примера продемонстрирован проект дистанционно управляемой по Wi-Fi машинки.

Ключевые слова: ESP8266, Blynk, удаленное управление, Wi-Fi, сервопривод, мотор постоянного тока..

Введение

В быту и на производстве часто встает задача не только автоматизировать некоторые механические операции, используя все преимущества современных микроконтроллеров (МК), но и иметь к ним удаленный доступ с целью управления и мониторинга. Удобно, когда такое соединение устанавливается по беспроводным каналам связи. В связи с высокой массовостью и доступностью технологии Wi-Fi, она во многих случаях является оптимальным решением для таких применений. Данная статья описывает принципы и примеры удаленного управления простыми механическими системами на примере популярного МК ESP8266 и сервиса Blynk.

Управляющий микроконтроллер

ESP8266 – 32-разрядный ARM-микроконтроллер фирмы Espressif. Ключевой особенностью является наличие встроенного интерфейса Wi-Fi. Вместе с тем, ESP8266 обладает полным набором «классической» периферии: АЦП, ШИМ, SPI, UART, I2C и т.д. В сочетании с необычно низкой стоимостью ESP8266 заслужил высокую популярность у широкого круга разработчиков. Следствием этого стало появление множества высокоуровневых надстроек-фреймворков над стандартным SDK – существуют привязки на языках JavaScript, Lua, Arduino С++ [1].

Blynk

Проект Blynk задумывался как быстрый и простой способ организовать удаленный доступ к микроконтроллерным и микрокомпьютерным устройствам со смартфона (по различным протоколам связи). В мобильном приложении Blynk (доступно для Android и iOS) с помощью готовых шаблонов и различных элементов управления и считывания (переключатели, слайдеры, табло, графики и т.д.) создается интерфейс управления удаленным устройством. В свою очередь в код программы МК должны быть внедрены специальные функции библиотеки Blynk [2].

Структура

Рассмотрим связку ESP8266 и Blynk для управления механическими устройствами на примере конструкции дистанционно управляемой по Wi-Fi машинки. Блок-схема тестового стенда приведена на рисунке 1.

р

Ведущим мотором, отвечающим за движение вперед и назад, выступает простой двигатель постоянного тока (DC motor). Драйвером послужит Н-мост (микросхема L298N или аналогичная), что позволит менять направление вращения без вмешательства в схему. Подавая ШИМ-сигнал на соответствующий вход, мы сможем регулировать обороты двигателя, а, значит, и скорость движения машинки. Важно не забыть установить защитные диоды на выходах драйвера, через которые будет «стекать» ток самоиндукции, возникающий каждый раз при размыкании цепи мотора ШИМ-сигналом. Многие готовые модули драйверов уже обладают подобным решением.

Поворот колес машинки можно осуществить при помощи сервопривода (servo). Современные сервомашинки с внутренней логикой управляются по одному сигнальному проводу так же с помощью ШИМ сигнала – длина импульса задает текущий угол поворота ротора. Важно учесть, что ESP8266 является представителем 3.3-вольтовой логики, поэтому в некоторых случаях может потребоваться какой-либо конвертер уровней (3.3 В в 5 В).

ESP8266 удобно использовать в составе какой-либо платы, например, Witty Cloud [1] или NodeMCU. В их состав, кроме непосредственно контроллера, входит программатор, разъем и преобразователь питания от USB, простейшая периферия.

Все устройство запитывается от 9 В. 5 В через преобразователь подаются на МК и сервопривод, 9 В без понижения служат для вращения DC-мотора.

Настройка Blynk

Управлять получившейся машинкой удобно виртуальным джойстиком на сенсорном экране смартфона, в котором угол отклонения определяет поворот колес (от 0° до 180°, 90° – среднее положение, верхняя и нижняя половины джойстика симметричны относительно данного параметра), а расстояние от центра джойстика пропорционально скорости езды.

Выберем элемент управления «joystick» в приложении Blynk (Рисунок 2) и выделим под него виртуальный пин V1. Границы значений определим следующим образом: по оси X – от 0 до 180, что соответствует предельным углам поворота; по оси Y – от -1023 до 1023, так как разрешение ШИМ – 10 бит, знак задает направление вращения. Интервал пересылки данных от смартфона к МК – каждые 100 мс.

вм

Программа МК

Обратимся теперь к коду МК. Как было сказано в начале статьи, популярность ESP8266 привела к портированию множества высокоуровневых (по отношению к официальному SDK) фреймворков. Для данного проекта был выбран набор привязок Arduino. В ущерб максимальной производительности разработка ПО значительно упрощается как благодаря более простому синтаксису, так и наличию множества примеров от других платформ [3].

чаи

 ит

В первую очередь следует получить в мобильном приложении Blynk уникальный идентификатор (токен) для вашей программы с целью разграничения доступа к устройству. Вместе с именем и паролем локальной Wi-Fi сети его следует передать функциям библиотеки Blynk для успешного установления соединения. При инициализации МК в последовательный порт посылается служебная информация о статусе загрузки, например, назначенный IP-адрес.

В основной части программы мы пользуемся привычными функциями библиотеки Arduino, такими как analogWrite() для плавного регулирования тока нагрузки с помощью ШИМ и Servo.write() для управления сервоприводом. Главный бесконечный цикл loop() отдан на исполнение процессам Blynk.

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

Достоинства и недостатки

Подведем итоги и оценим конструкцию с различных позиций:

  • Простота разработки: фреймворк Arduino для ESP8266 в связке с Blynk предоставляют действительно простой подход к разработке устройств «интернета вещей», экономя время за счет простого и знакомого синтаксиса и множества примеров;
  • Производительность: традиционно надстройки над «родными» средствами разработки обладают более низкой производительностью, однако для многих применений не требуется максимальная вычислительная мощность;
  • Blynk: несмотря на большую часть исходного кода в открытом доступе [2], Blynk является все же проприетарным решением, а также платным. По умолчанию пользователю предоставляется некоторый объем внутренней «валюты», за которую можно построить свой интерфейс. Различные элементы имеют разную стоимость. Впрочем, «стартового капитала» хватит на достаточно сложные проекты. Интересная функциональность платной подписки – свой интерфейс управления можно полностью кастомизировать и вынести в отдельное приложение со своей иконкой, логотипом, дизайном и т.д. Не является Blynk и эталоном скорости: максимальная частота обновления данных – раз в 100 мс – далеко не предел мечтаний.

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

Список литературы

  1. ESP8266 [Электронный ресурс] // Википедия : своб. энцикл. – Режим доступа: https://ru.wikipedia.org/wiki/ESP8266.
  2. Blynk [Электронный ресурс]. – Режим доступа: http://www.blynk.cc/.
  1. GitHub [Электронный ресурс]. – Режим доступа: https://github.com/.

References

  1. ESP8266 [Electronic resource] // Wikipedia : the free encyclopedia. – Mode of access: https://ru.wikipedia.org/wiki/ESP8266.
  2.  Blynk [Electronic resource]. – Mode of access: http://www.blynk.cc/.
  3. GitHub [Electronic resource]. –  Mode of access: https://github.com/.