Интернет вещей с каждым годом становится всё более распространен, тем не менее промышленные устройства не всегда удовлетворяют потребностям пользователей. И естественно радиолюбители создают устройства IoT исходя из своих потребностей. Управление устройствами IoT возможно либо через сервер, либо напрямую посредством беспроводного или интернет соединения. Сервисов и программ, предназначенных для создания и управления устройствами IoT, предостаточно, есть из чего выбрать. В этой статье я расскажу о сервисе RemoteXY, предназначенном для удаленного управления устройствами ардуино и ESP8266.
Сервис RemoteXY состоит из онлайн редактора интерфейса (который генерирует «скелет» программы), программы для мобильных устройств (как для андройд, так и для айОс) и библиотеки для ArduinoIDE. Программа для мобильных устройств может управлять всеми устройствами, созданными с применением сервиса RemoteXY, и потому что внешний вид интерфейса хранится в микроконтроллере, это упрощает настройку приложения для работы с устройством. Программа для андройд устройств условно-бесплатная, вы можете использовать free версию программы без ограничений в том случае, когда в интерфейсе устройства используется до 5 элементов. Если элементов более 5, то время подключения ограничено 30 секундами (за это время можно успеть произвести настройку устройства и просто оценить и протестировать созданное устройство). Полная версия программы никаких ограничений не имеет.;
Мобильное устройство (смартфон или планшет) может связываться с ардуино (так же поддерживаются платы WeMos, NodeMCU, The AirBoard и ChipKIT, но упоминать я буду всё время ардуино) посредством блютуз (через модули HC-05, -06, -10), вай-фай (через модуль esp-01) или проводного интернета (через ethernet shield или через вай-фай модем). Если ардуино подключено к модему (через вай-фай или эзернет), то оно может быть доступно как в локальной сети, так и через сеть интернет (для этого потребуется настройка модема).
Рассмотрим «blink» для сервиса RemoteXY — поморгаем светодиодом. Для этого необходимо подключить модуль связи к ардуино (в этом примере я буду использовать ардуино мега2560 и блютус модуль HC-05, соединение через Serial1). Далее переходим в он-лайн редактор интерфейса, расположенный по адресу http://remotexy.com/ru/editor/ , внешний вид редактора представлен на скриншоте.
Редактор интерфейса состоит из 3 частей: панели элементов интерфейса слева, рабочего поля в центре и панели конфигурации и свойств элементов справа.
Далее необходимо настроить конфигурацию подключения, для этого необходимо в панели конфигурации щелкнуть мышью на любой пункт меню конфигурации, откроется всплывающее окно в котором необходимо выбрать: тип соединения, используемый контроллер, используемый модуль и среду программирования, а далее нажать «применить». Окно закроется и выбранные настройки отобразятся в меню конфигурации.
Далее необходимо настроить подключения модуля, в случае для блютуз модуля необходимо выбрать интерфейс (Hardware или Software Serial), порт или пины (для Software Serial) и скорость обмена. Так же можно настроить ориентацию и цвет фона экрана. Примененные мной свойства отображены на скриншоте.
Теперь можно приступать к постройке интерфейса. Добавим на рабочее поле элемент «кнопка» (просто перетащите его на рабочее поле в любое удобное место), при нажатии на который будет загораться светодиод расположенный на ардуино. Вы наверняка уже заметили, что в панели конфигурации появилось выпадающее меню свойств элемента.
Набор свойств индивидуален для каждого типа элементов. Для любого элемента можно задать его цвет и привязку к странице (в этом проекте страницы не рассматриваются), для всех элементов управления и индикации можно задать имя переменной. Для элементов «кнопка» и «выключатель» можно сделать привязку в выводам, в этом случае редактор интерфейса сам сгенерирует дополнительный код для управления выводами с кнопки или выключателя. Первая добавленная кнопка (или выключатель) привязывается к выводу 13 автоматически, остальные добавляемые кнопки и выключатели автоматически не привязываются. Жмем на «Получить исходный код», открывается страница с автоматически сгенерированным кодом. Копируем код в ArduinoIDE. Внимание: для дальнейшей работы необходимо установить библиотеку RemoteXY, которая расположена по адресу http://remotexy.com/download/RemoteXY.zip
Рассмотрим сгенерированный код, все пояснения в комментариях
/*
— New project —
This source code of graphical user interface
has been generated automatically by RemoteXY editor.
To compile this code using RemoteXY library 2.2.5 or later version
download by link http://remotexy.com/en/library/
To connect using RemoteXY mobile app by link http://remotexy.com/en/download/
— for ANDROID 3.7.1 or later version;
— for iOS 1.0.7 or later version;
This source code is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
*/
//////////////////////////////////////////////
// RemoteXY include library //
//////////////////////////////////////////////
// определение режима соединения и подключение библиотеки RemoteXY. В данном случае используется Hardware Serial
#define REMOTEXY_MODE__HARDSERIAL
#include <RemoteXY.h> //подключаем библиотеку сервиса RemoteXY
// настройки соединения, порт и скорость соединения. Я использую порт Serial1, что бы исключить проблемы при загрузке программы в ардуино и не отключать блютуз модуль каждый раз при загрузке.
#define REMOTEXY_SERIAL Serial1
#define REMOTEXY_SERIAL_SPEED 9600
// конфигурация интерфейса. Начиная с этой строки ничего не менять.
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] = //в этом массиве хранятся все настройки интерфейса, положение, размер, цвет и названия переменных всех элементов.
{ 1,0,12,0,6,5,0,1,0,79
,8,12,12,2,88,0 };
// структура определяет все переменные вашего интерфейса управления
struct {
// input variable
uint8_t button_1; // =1 если кнопка нажата, иначе =0. Это та самая кнопка которую мы добавили на рабочее поле.
// other variable
uint8_t connect_flag; // =1 if wire connected, else =0. Этот «флаг» очень полезная переменная, её тоже можно использовать.
} RemoteXY;
#pragma pack(pop) //эта строка завершает настройку интерфейса. Ещё раз напомню, между #pragma pack(push, 1) и #pragma pack(pop) ничего не менять.
/////////////////////////////////////////////
// END RemoteXY include //
/////////////////////////////////////////////
#define PIN_BUTTON_1 13 //поскольку мы привязали кнопку к выводу 13, то он-лайн редактор сам добавляет константу PIN_BUTTON_1 и в функции setup() настраивает её как выход.
void setup()
{
RemoteXY_Init (); //запускаем обмен данными между смартфоном и ардуино.
pinMode (PIN_BUTTON_1, OUTPUT);
// TODO you setup code
}
void loop()
{
RemoteXY_Handler (); //этот обработчик запускает обмен данными между ардуино и смартфоном в каждом цикле loop(), именно после его вызова данные от элементов управления передаются в ардуино, а данные элементов индикации — в смартфон.
digitalWrite(PIN_BUTTON_1, (RemoteXY.button_1==0)?LOW:HIGH); //этот код так же сгенерирован потому, что стоит привязка к 13 выводу. Светодиод на плате загорится когда будет нажата кнопка.
// ну а дальше размещаем остальной код программы, по необходимости.
// используйте структуру RemoteXY для передачи данных
}
Теперь можно загрузить этот код в ардуино и перейти к программе RemoteXY на смартфоне.
Поскольку в данном проекте используется блютуз, то сперва надо провести сопряжение блютуз модуля со смартфоном. Пояснять этот пункт я не буду. Далее переходим в программу RemoteXY и нажимаем на «+» в правом верхнем углу,
далее выбираем Bluetooth для модулей HC-05, -06 и Bluetooth BLE для модуля HC-10,
выбираем необходимый модуль из списка.
При удачном соединении в программе сразу же открывается интерфейс устройства. Теперь можно потыкать на кнопку и понаблюдать как загорается светодиод на 13 выводе.
Подведем итоги
Данная статья ни в коем случае не претендует на исчерпывающее руководство по сервису RemoteXY и не несет рекламный характер (я обычный пользователь и никакого профита с этого не имею). Цель статьи — познакомить любителей ардуино с этим сервисом, и на простом примере показать как это работает.
Конечно для полного счастья необходимо рассмотреть преимущества и (что главнее) недостатки представленного сервиса.
Преимущества:
- Самый главный плюс — реализация удаленного доступа к ардуино
- Используется одна программа для всех управляемых устройств, что экономит память мобильного устройства
- Настройки интерфейса хранятся непосредственно в контроллере, поэтому нет необходимости в настройке каждого мобильного устройства под конкретный контроллер
- Позволяет, как продублировать элементы управления и индикации, так и перенести их частично или полностью на мобильное устройство
- При переносе элементов управления и индикации на мобильное устройство освобождаются выводы контроллера
- Позволяет строить довольно сложные интерфейсы управления, обладает широким набором элементов управления, индикации и оформления
- Является условно-бесплатной системой, даже при построении сложных интерфейсов
Основной недостаток — бесплатная условность программы. Как я уже писал, в бесплатной версии программы можно использовать до 5 элементов интерфейса. Полная версия программы не имеет никаких ограничений, стоит 379 рублей для ОС Android и 7.99$ для iOS. Второй недостаток — при построении интерфейса необходимо подключение к интернету.
P.S. Если тема вызовет интерес, то цикл статей будет продолжен.
Прикрепленные файлы:
- remotexy.zip (2 Кб)