RemoteXY. Часть 1.

Введение.

RemoteXY - сервис для организации удаленного беспроводного и проводного управления самодельными устройствами на базе arduino, esp8266, esp32 и chipKIT. Сервис состоит из онлайн-редактора мобильного интерфейса, приложения для устройств Android и iOS, сервера для удаленного управления устройствами,  а также библиотеки для ArduinoIDE.

Приложений для android устройств два - бесплатное и платное. Бесплатное приложение имеет ограничение в 5 элементов интерфейса. Если же элементов интерфейса больше, то приложение позволяет протестировать работу устройства в течении ограниченного времени (всего 30 секунд за сеанс).

Работа с сервисом RemoteXY организована следующим образом:

  • в онлайн-редакторе необходимо выбрать программируемое устройство и способ его подключения, затем настроить способ подключения;
  • при помощи онлайн-редактора необходимо создать интерфейс программируемого устройства, для этого предусмотрены элементы управления и индикации, такие как кнопки, переключатели, поля ввода и вывода текста, графики;
  • получить сгенерированный онлайн-редактором исходный код, перенести его в ArduinoIDE (также поддерживаются FLProg и MPIDE), дополнить необходимым кодом и загрузить в программируемое устройство;
  • при помощи приложения подключиться к устройству…. готово!

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

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

 

Онлайн-редактор интерфейса.

Редактор интерфейса разделен на 3 части. В центре основное окно, в котором отображается внешний вид созданного интерфейса. Слева раскрывающиеся списки с элементами интерфейса, сгруппированные по категориям. Справа расположены вкладки конфигурации подключения устройства, настройки экрана и контекстно-зависимая вкладка настройки выбранного элемента интерфейса.

Работа с онлайн-редактором строится по принципу drag-and-drop, также как и в проводнике компьютера. Просто перетаскивайте необходимый элемент с левой области в центральную, на макет смартфона. При клике на элемент на макете смартфона он выделяется синей рамкой и теперь его можно перемещать по макету, а также масштабировать, хватая и перемещая маркеры по углам рамки. Обратите внимание, над рамкой выбранного элемента отображается имя переменной, по которому в дальнейшем будет осуществляться доступ к выбранному элементу.

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

  • перетащите на макет смартфона элемент “выключатель”;
  • убедитесь что в настройках выключателя в выпадающем списке “привязать к выводу” выбран вывод с надписью “LED”;
  • готово.

Выглядеть это должно так:

Для получения сгенерированного кода необходимо нажать большую зеленую кнопку “Получить исходный код”.

Не забудьте установить актуальную версию библиотеки в ArduinoIDE, скопируйте в ArduinoIDE полученный код, по необходимости (а она возникает в 99.9% случаев) дополните полученный код своим.

Теперь можно приступать к изучению способов соединения приложения и контролируемых устройств.

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

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

Соединение при помощи кабеля требует наличие функции OTG  в смартфоне. К сожалению не все смартфоны могут похвастаться наличием такой функции. Соединение такого типа доступно для всех плат прототипирования, которые имеют на плате распаянный переходник USB-UART. При отсутствии распаянного переходника USB-UART (как в случае с arduino pro mini) можно подключить внешний.

Я продемонстрирую соединение через кабель на примере Arduino Mega2560. Я использую следующую конфигурацию подключения:

  • соединение: USB OTG
  • устройство: Arduino Mega2560
  • модуль: USB-UART
  • среда разработки: ArduinoIDE.

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

Выбираю Serial port к которому подключен переходник USB-UART, который размещен на плате Mega2560.

Ну и напоследок  устанавливаю скорость соединения 9600 бод.

Напомню, что в интерфейсе сейчас находится один элемент управления - переключатель, который зажигает расположенный на плате светодиод.

После загрузки скомпилированного кода в “мегу” я подключаю её к своему смартфону. Процесс подключения показан на следующих скриншотах.

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

Примечание: замечено, что этот способ соединения не работает с Leonardo.

Следующий тип связи - BlueTooth. Возможна работа с модулями HC-05, HM-10 и встроенным в ESP32 bluetooth on chip.

Для примера я буду использовать связку из Mega2560 и HC-05, подключусь к Hardware serial 3 на скорости 9600 бод (стандартная скорость для HC-05).

Перед подключением устройства рекомендую связать смартфон и bluetooth модуль стандартными средствами смартфона. Дальнейшее подключение приложения к устройству не составляет труда.

Отмечу, что для модуля HM-10 и ESP32 bluetooth on chip необходимо выбирать Bluetooth BLE.

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

 

Подключение “Wi-Fi access point” доступно для устройств, построенных на esp8266, ESP32 и любых arduino и chipKIT совместно с esp-01. Для примера я буду использовать NodeMCU v3, точку доступа оставлю открытой, но конечно же можно использовать пароль для исключения несанкционированного доступа к вашему устройству.

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

Особенности данного способа подключения:

  • отлично подходит для устройств на базе esp8266 и esp32 (хотя для esp32 доступен и bluetooth);
  • работает на ограниченном расстоянии, которое зависит от wi-fi антенны на контролируемом устройстве;
  • не требует дополнительных устройств для организации связи между смартфоном и контролируемым устройством;
  • можно подключить только одно контролируемое устройство одновременно;
  • при подключении смартфона к контролируемому устройству становится недоступным использование интернета на смартфоне.

Следующий способ подключения Ethernet TCP/IP исключает некоторые недостатки предыдущего способа, но при этом добавляет свои. Так для подключения способом Ethernet TCP/IP необходимо главное устройство, через которое будет осуществляться связь. Это может мыть ADSL или Ethernet модем с функцией точки доступа  Wi-Fi, смартфон или ноутбук, на котором активирована точка доступа. При этом связь смартфона и контролируемого устройства будет доступна внутри всей локальной сети.

Конфигурация подключения продемонстрирована на следующем скриншоте. Я использую всё ту же  NodeMCU, но на этот раз подключаю её к точке доступа, созданной моим ноутбуком. Обратите внимание, точка доступа защищена паролем, его необходимо указать в конфигурации соединения.

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

Теперь необходимо подключить смартфон к той же точке доступа, перейти в приложение и ввести в нем полученный IP контролируемого устройства.

Преимущества и недостатки данного способа связи:

  • необходимо узловое устройство связи, например модем с точкой доступа Wi-Fi;
  • смартфон и контролируемое устройство должны быть подключены к одной локальной сети;
  • необходимо знать IP-адрес контролируемого устройства, с этим помогут сканеры IP-адресов локальных сетей;
  • IP-адрес контролируемого устройства может меняться при каждом подключении (в случае с точкой доступа на ноутбуке), поэтому необходимо сканировать сеть каждый раз при подключении, либо задавать IP-адрес принудительно (как в моем TP-LINK);
  • если локальная сеть подключена к глобальной сети, то у смартфона остается возможность пользоваться сетью интернет.

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

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

Для этого необходимо в вверху страницы справа перейти по ссылке “мои токены” и создать новый токен. Здесь же можно проконтролировать, подключено ли контролируемое устройство к серверу в данный момент.

Далее можно переходить к дальнейшей конфигурации соединения.

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

А вот в приложении придется копипастить или вводить токен вручную.

Преимущества и недостатки:

  • доступ к контролируемому устройству из любой точки мира где доступен интернет - это несомненный плюс;
  • обоим устройствам, и смартфону и контролируемому устройству, необходим доступ к глобальной сети интернет. Не могу назвать это минусом, но это накладывает свои ограничения.

В заключении.

Предусмотрены способы связи на все случаи. Конечно, идеального способа связи не существует, каждый имеет свои преимущества и недостатки. Тем не менее, из предложенных способов связи всегда можно подобрать удовлетворяющий потребностям способ, с учетом компромиссов.

 

Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !
© Все права защищены 2019г https://compacttool.ru