Интернет вещей с каждым годом становится всё более распространен, тем не менее промышленные устройства не всегда удовлетворяют потребностям пользователей. И естественно радиолюбители создают устройства 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 Кб)
Комментарии (9) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
С помощью этого сервиса можно получить доступ к микрофону и звуку Андроид девайса ? Скажем запулить звук с микрофона по Wifi, или наоборот принять звук по Wifi и проиграть его динамиком андроид устройства ?
[Автор]
В сообществе пользователей программы обсуждали функции подачи сигнала звуком (аналогично функции tone) и виброзвонком, но автор программы пока отказался от реализации этих функций, так как сама программа не дает возможности реализовать это.
[Автор]
[Автор]
[Автор]