Радиолоцман Электроника en
расширенный поиск +
  

22-09-2014

Разработка Android-контроллера для управления RGB светодиодной лентой. Часть 3

Журнал РАДИОЛОЦМАН, февраль 2014

Вадим Колесник, Тирасполь

Часть 1.

Часть 2.  

В процессе разработки и отладки приложения в реальном времени для ОС Android автор использовал смартфон LG MS690 с версией ОС 2.2.1.

Как упоминалось ранее, программное приложение для Android-устройства разрабатывалось в графическом редакторе MIT App Inventor Beta. Это гибкая онлайн среда разработки с достаточно богатыми возможностями, предназначенная, в основном, для составления простых приложений. Продукт предоставляется компанией Google и работает совместно с Java-библиотекой Open Blocks, разработанной в Массачусетском Технологическом Институте (MIT). Для доступа к среде разработки потребуется наличие учетной записи Google.

Внимание. На момент публикации статьи компания Google сообщила о выходе новой версии программы MIT App Inventor 2, которая несовместима с MIT App Inventor Beta. Разработчики обещают в скором времени предоставить инструментарий для импортирования проектов предыдущей версии в MIT App Inventor 2.

Разработка Android-контроллера для управления RGB светодиодной лентой
Рисунок 12. MIT App Inventor Beta – окно графического редактора Design Editor в браузере.

Среда разработки представляет собой HTML-конструктор, работающий по принципу WYSIWYG («что видишь, то и получишь»). Удобный и понятный интерфейс предоставляет возможность, щелкая мышью, добавлять и соединять воедино все элементы и функции. Установив программу, пользователь получает графический редактор Design Editor (Рисунок 12), позволяющий на первом этапе определиться с внешним оформлением программы, а также с опциями и данными, которые будут содержаться в вашем приложении. Все действия выполняются в браузере. Вторая часть программы представлена графическим редактором блок-схем Blocks Editor, предназначенным для логического объединения всех созданных ранее элементов (Рисунок 13). Это может быть, например, кнопка, при нажатии на которую приложение выполняет определенные математические операции или запускает фотокамеру. И здесь вам не потребуются навыки программиста, так как все функции будут доступны в виде блоков. А если где-то произойдет ошибка, программа сообщит вам об этом. Блоки поддерживают комментарии и могут «сворачиваться» в компактный размер, оставляя лишь имя функции/процедуры/метода.

Разработка Android-контроллера для управления RGB светодиодной лентой
Рисунок 13. MIT App Inventor Beta – внешний вид исходного кода приложения в
редакторе блоков. Все блоки.

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

Основные преимущества среды разработки MIT App Inventor:

  • графический редактор Design Editor:
    • простой и понятный интерфейс;
    • множество готовых компонентов: кнопки, слайдеры, поля текстового ввода, картинки, базы данных;
    • доступ к сенсорам и встроенной периферии Android-устройства, например, телефонный модуль, Bluetooth, акселерометр, камера, датчик ориентации экрана, GPS;
    • доступ к сохраненным контактам и встроенным мультимедиа ресурсам;
    • гибкие настройки визуальных компонентов;
    • возможность использования нескольких экранов;
    • доступны компоненты LEGO MINDSTORM;
    • встроенный компилятор приложений в байт-код для Android и несколько вариантов загрузки готового приложения;
  • редактор блок-схем Blocks Editor:
    • исходный код собирается из готовых блоков, внешне напоминающих пазлы;
    • простое создание пользовательских алгоритмов и функций;
    • для разработчика доступно множество встроенных функций, включая циклы, операции сравнения, операции выбора, операции над текстами и списками, математические операции и функции;
    • полный доступ к свойствам, событиям и методам визуальных компонентов;
    • встроенная система помощи и подсказок;
    • многие свойства компонентов доступны для изменения в приложении;
    • поддержка отладки в реальном времени на Android-устройстве, а также в симуляторе Android-устройства, с возможностью отслеживания переменных и некоторых свойств элементов;
    • реальное Android-устройство может подключаться к среде разработки по Wi-Fi или по кабелю USB (в последнем случае необходима установка драйвера Android-устройства).

Управление цветовой гаммой светодиодной ленты осуществляется с помощью кнопок предустановленных цветов, слайдера яркости (Brightness) и трех слайдеров ручной установки интенсивности для каждого из основных цветов (Manual Color Settings). Кнопка On предназначена для соединения/разъединения с Bluetooth-контроллером. Кнопка Off позволяет одновременно отключить все три канала и, по выбору пользователя, выполнить разъединение с Bluetooth-контроллером. Кнопка Set MAC используется для пользовательской установки MAC-адреса Bluetooth-контроллера.

Над кнопками On и Set MAC расположена строка состояния, в которой отображаются различные информационные сообщения и MAC-адрес подключенного Bluetooth-контроллера.

Процесс установки различных графических элементов пользовательского интерфейса, а также управление их внешним видом и параметрами (Рисунок 12) интуитивно понятен и не займет много времени. Необходимые элементы перетаскиваются мышкой на экран, а затем редактируются их свойства и параметры инициализации. После того, как все элементы приложения расставлены на экране, мы можем переходить к составлению алгоритмов приложения, для чего необходимо открыть редактор блок-схем, нажав в панели управления кнопку «Open the Block Editor».

В открывшемся окне (уже в среде Java Open Blocks) справа располагается панель выбора готовых блоков, вверху – панель управления. Вставка нужных блоков в свое приложение производится простым перетаскиванием объектов из панели в рабочую зону. Далее, на примере построения основных функций приложения автора, мы узнаем, как составляется приложение для Android [1].

Основная задача приложения (Bluetooth RGB Strip Controller) – это формирование команды на основе пользовательских данных и отправка ее по беспроводному интерфейсу Bluetooth-контроллеру. Однако, в целях корректного и надежного функционирования приложения, а также повышения его универсальности, к основной задаче добавляются различные алгоритмы проверок и информирования пользователя. Этого можно не делать, ввиду того, что приложение будет автоматически вызывать системные сообщения об ошибках в работе. Любое приложение начинается, как правило, с инициализации основного экрана, поэтому здесь будет оптимальным расположить проверку доступности Bluetooth на Android-устройстве.

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

В блоке кода инициализации экрана приложения, изображенного на Рисунке 14, проверяется доступность Bluetooth-модуля с помощью операторов выбора if…else. Значением логического параметра Bluetooth Client1.Available может быть «истина» (модуль Bluetooth поддерживается) или «ложь» (модуль Bluetooth отсутствует). Если Bluetooth не поддерживается устройством, то выводится соответствующее информационное сообщение и приложение закрывается. Иначе, далее проверяется его состояние (включен/выключен) и выводится соответствующая подсказка в строке состояния (текстовое поле Label4). Если Bluetooth выключен (BT disabled), то потребуется только включить его в системном меню. Проверка в приложении состояния встроенного Bluetooth выполняется еще в нескольких случаях: перед соединением и перед каждой отправкой команды.

Разработка Android-контроллера для управления RGB светодиодной лентой
Рисунок 14. В блоке инициализации экрана приложения выполняется проверка
наличия Bluetooth в Android-устройстве.

Для соединения с Bluetooth-контроллером необходимо в текстовое поле ввести в стандартной форме MAC адрес Bluetooth-модуля HC-05, нажать кнопку Set MAC, и затем зеленую кнопку On. В программной реализации для этого автор использует только обработчики нажатия соответствующих кнопок (Рисунок 15), а функция ввода MAC адреса (текстовой информации) реализуется компилятором автоматически. После ввода МАС адреса в текстовое поле, при нажатии на кнопку Set MAC переменная BT_address получит указанное текстовое значение, которое будет использоваться в качестве параметра функции соединения с Bluetooth-контроллером.

Разработка Android-контроллера для управления RGB светодиодной лентой
Рисунок 15. Блок обработчиков нажатия кнопок установки MAC адреса и соединения с Bluetooth-контроллером.

Чтобы не вводить известный MAC адрес каждый раз при запуске приложения, необходимо внести значение переменной BT_address в исходном коде приложения (MAC адрес вашего Bluetooth-модуля), скомпилировать его уже с новым параметром и переустановить приложение на своем телефоне/планшете. В этом случае, после запуска приложения можно сразу нажать кнопку On для соединения с Bluetooth-контроллером.

Нажатие кнопки On инициализирует алгоритм соединения с Bluetooth-контроллером и сопровождается информационными сообщениями в строке состояния. Если соединение установлено успешно, то в строке состояния будет отображаться MAC-адрес подключенного Bluetooth-контроллера. После этого пользователь может управлять светодиодной лентой.

Разработка Android-контроллера для управления RGB светодиодной лентой
Рисунок 16. Блок-схема процедуры формирования пользовательской команды.

Пользовательская команда формируется в блоке процедуры UserCommand (Рисунок 16), параметры которой определяются переменными RBr, GBr, BBr. В теле процедуры формируется список (make a list) из последовательности однобайтных значений команды (BT_Command). Последовательность байтов расшифровывается в Таблице 2.

Таблица 2.  Формируемый список однобайтных значений команды в
процедуре UserCommand.
Байты Значение Описание Примечание
1 #40 шестнадцатеричное значение символа @ таблица ASCII
2 #52 шестнадцатеричное значение символа R таблица ASCII
3 RBr значение переменной  
4 #47 шестнадцатеричное значение символа G таблица ASCII
5 GBr значение переменной  
6 #42 шестнадцатеричное значение символа B таблица ASCII
7 BBr значение переменной  
8 #53 шестнадцатеричное значение символа S в демо-версии
не используются
9 Speed значение переменной
10 #40 шестнадцатеричное значение символа M
11 Mode значение переменной

Значения переменным RBr, GBr, BBr присваиваются в обработчиках нажатий кнопок выбора предустановленной цветовой гаммы и в обработчиках изменения положения слайдера установки яркости и слайдеров ручной установки цвета. Диапазон значений слайдеров выбран от 0 до 255 (однобайтные значения).

В таком виде последовательность байтов команды готова к отправке по Bluetooth. Передача данных осуществляется в процедуре Bluetooth_Send, вызываемой однократно при каждом нажатии кнопок управления цветами или при изменении положения слайдеров, после процедуры формирования команды.

В процедуре передачи команды вызывается метод BluetoothClient1.SendBytes, который последовательно передает байты сформированной команды по беспроводному интерфейсу Bluetooth.

В режиме ручной установки цветовой гаммы (Manual Color Settings) значения положений движков соответствующих слайдеров присваиваются переменным RBr, GBr, BBr только при изменении положения любого из них.

При разработке приложения автора очень порадовала возможность его отладки в реальном времени. Для этого на смартфон необходимо установить специальное приложение MIT AICompanion, работающее совместно с редактором блоков. Телефон подключается к среде разработки по интерфейсам Wi-Fi или USB, в последнем случае необходимо установить соответствующие драйверы Android-устройства. В редакторе блоков на панели инструментов необходимо нажать кнопку «Connect to Device», выбрать из списка свое устройство, и через минуту на экране Android-устройства вы увидите экран своего приложения. Неважно, на каком этапе разработки программы вы находитесь, компилятор сам определяет, какие элементы отображать и активировать. Также хорошо реализован и симулятор (Рисунок 17), но работает он значительно медленнее и многие функции, связанные с аппаратной периферией телефона/планшета, при отладке приложения будут недоступны.

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

Разработка Android-контроллера для управления RGB светодиодной лентой
Рисунок 17. Симулятор Android-смартфона подключается к редактору
блоков для отладки приложения.

Вы, вероятно, уже успели оценить множество преимуществ этой среды разработки, и ее методологии в целом, ведь на создание и отладку простого, но достаточно функционального приложения требуется всего несколько часов. Но, как и в любой подобной графической среде, здесь присутствуют некоторые серьезные недостатки и недоработки, не позволяющие реализовать серьезные и универсальные проекты. В части оформления графического интерфейса здесь нет возможности «привязать» объекты к сетке или расположить их произвольно на экране, что исключает возможность расстановки кнопок и слайдеров на удалении друг от друга, чтобы исключить появление ложных нажатий/срабатываний.

Что касается редактора блоков, то при «разрастании» программного кода приложения работать с ним становится тяжело, даже если свернуть большинство готовых блоков. Кроме того, не продуман механизм масштабирования и размещения блоков, что приводит к странному поведению элементов в готовых алгоритмах и функциях. Также существенным недостатком автор считает отсутствие инструментов и средств работы с файлами. Возможно, что многие недостатки устранены во второй версии программы.

Заключение

Автор представил самый простой вариант системы управления RGB светодиодной лентой с базовыми функциями. Как вы заметили, ни в приложении, ни в программе микроконтроллера не выполняются какие-либо проверки передачи/приема и целостности данных. В данном случае мы полагаемся только на штатные функции Bluetooth-интерфейса, выполняемые телефоном/ОС и Bluetooth-модулем HC-05. Самый простой контроль целостности принятых данных в микроконтроллере можно реализовать с помощью встроенных в библиотеку uart.h функций, что приведет к необходимости использования обратной связи с приложением или дополнительных способов информирования пользователя об ошибках.

Однако, возможностей среды разработки MIT App Inventor и ресурсов микроконтроллера ATmega8 вполне достаточно для реализации более гибкого управления и повышения функциональности системы, здесь все зависит от вашей фантазии. Например, можно добавить управление различными световыми эффектами и регулировку их исполнения, реализовать обратную связь для синхронизации Bluetooth-контроллера и Android-приложения, реализовать управление с синхронизацией по времени, и многое другое.

Кроме того, встроенные функции Bluetooth-модуля HC-05 позволяют повысить безопасность обмена данными и реализовать автоматическое соединение только с определенным ведущим Bluetooth-устройством, в качестве которого может выступать не только самртфон/планшет, но и другой МК с подключенным Bluetooth-модулем.

Для пользователей доступен исходный код приложения [1] и установочный файл (.apk) приложения [2]. Исходный код представляет собой zip-архив, именно в таком виде он загружается в программу MIT App Inventor для последующего редактирования, модернизации и компилирования в исполняемое приложение.

Демонстрационное видео

Загрузки:

  1. Исходный код Android-приложения (.zip) – скачать
  2. Установочный файл приложения Bluetooth RGB Demo (.apk) - скачать

Срезы ↓
Источник питания Актаком APS-1303
Источник питания Актаком APS-1303
2 LED дисплея, 0…30 В, 0…3 А
Цена: от 9 700 руб.
Доставка: Россия и страны СНГ
Тепловизор Testo 875-1i
Тепловизор Testo 875-1i
матрица 160x120 пкс, NETD < 50 мК
Цена: от 190 000 руб.
Доставка: Россия и страны СНГ
Датчики влажности и температуры ДВТ-03
Датчики влажности и температуры ДВТ-03
Цена: от 3 168 руб.
Доставка: Россия и страны СНГ
Рейтинг@Mail.ru