AC-DC и DC-DC преобразователи напряжения Top Power на складе ЭЛТЕХ
РадиоЛоцман - Все об электронике

«Цифровая лаборатория» - общение со смартфоном по Bluetooth

Мастер Кит NR05

В первых двух обзорах (1, 2) мы познакомили вас с составом и основными возможностями набора NR05 «Цифровая лаборатория» из серии «Азбука электронщика».

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

Рассмотрим, как можно реализовать с помощью «Цифровой лаборатории» управление исполнительными устройствами с вашего смартфона или планшета.

Связь между смартфоном и модулем Ардуино, установленном на плате расширения, будем осуществлять по технологии Bluetooth. Конечно, это ограничит возможность беспроводного управления дистанцией около 10 м, но в домашних условиях часто большего и не требуется. На основе такой технологии можно успешно управлять несложными роботами или устройствами домашней автоматики, а телефон или смартфон послужат бесплатным универсальным пультом управления, который с легкостью можно перепрограммировать для наилучшего решения поставленной задачи.

В Интернете можно найти несколько проектов, которые позволяют связать Ардуино с телефоном по Bluetooth, и такие проекты, безусловно, помогут освоить принцип такой связи, но основным их недостатком является невозможность приспособить функционал программы управления и ее внешний вид под конкретные нужды пользователя.
Мы пойдем по пути ненамного более сложному, но более универсальному – будем писать программы для телефона и для Ардуино самостоятельно. Это поможет вам понять принцип написания таких приложений и использовать его в своих разработках.

Для начала поясним, на каком принципе основана связь, которую мы будем использовать. Как известно, когда модуль Ардуино подключается к компьютеру, на компьютере конфигурируется виртуальный последовательный COM-порт. Он используется для заливки скетчей в Ардуино, а также для обмена информацией между компьютером и микроконтроллером Ардуино. Также на плате Ардуино имеются два контакта, совмещенные с пинами D1 и D0 и обозначаемые RX и TX – соответственно передача (Receive) и прием (Transmit) стандартного интерфейса UART.

Подключив к этим контактам переходник Bluetooth-UART (в нашем распоряжении оказался модуль HC-05, он не входит в состав набора) мы получим аппаратный канал связи между устройством, подключенным по Bluetooth к переходнику, и Ардуино.

Таким образом, записывая в последовательный порт информацию из одного устройства и считывая ее другим (это можно делать в двух направлениях), мы можем организовать обмен информацией между устройствами. Скорость такого обмена между Ардуино и смартфоном в случае применения модуля HC-05 составит 57600 бод.
В качестве исполнительных элементов для наглядности задействуем RGB-светодиод и сервопривод – и тот и другой управляются сигналами ШИМ.

Приведем схему соединений компонентов проекта:

Для управления исполнительными элементами будем передавать из смартфона некую букву, которая определяет, какому элементу предназначена команда, и цифру, которая соответствует параметру команды. Параметром может быть цифра, определяющая, надо ли включить или выключить какой-либо исполнительный элемент, или цифра, определяющая параметр ШИМ.

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

Текст снабжен достаточным числом комментариев для понимания логики работы программы:

Спойлер

Теперь займемся программой для смартфона, которая должна передавать команду с параметром. Воспользуемся для этого возможностями проекта MIT App Inventor.
MIT App Inventor – это среда программирования, разработанная в Массачусетском Технологическом Институте (MIT). Она служит для разработки приложений для мобильных устройств (смартфонов и планшетных компьютеров), работающих на операционной системе Android.

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

Для того, чтобы воспользоваться средой программирования App Inventor, доступной по адресу ai2.appinventor.mit.edu, необходимо иметь аккаунт Google, с помощью которого происходит авторизация на сайте проекта. Создание программы производится в любом браузере. Компьютер, на котором работает этот браузер, должен быть постоянно подключен к Интернету. Смартфон или планшет, на который будет устанавливаться созданная с помощью App Inventor программа, должен иметь версию OC Android не ниже 4.0.

В браузере вы создаете дизайн (внешний вид) и логику работы программы в виде блоков, там же готовый проект компилируется в исполняемый файл с расширением .apk. Этот файл несколькими способами может быть загружен на мобильное устройство и запущен на нем. Пожалуй, самый удобный из этих способов заключается в установке на мобильное устройство приложения «MIT AI2 Companion» (оно есть в Play Market). App Inventor формирует QR-код, содержащий ссылку на созданное вами приложение, а AI2 Companion считывает и устанавливает (или обновляет) его. Вы даже можете нарисовать и загрузить свою иконку для запуска своего приложения. Таким образом, App Inventor позволяет создавать вполне работоспособные и наглядные приложения для Андроид. Пусть их код не оптимален, но удобство, простота и скорость создания таких приложений во многих случаях вполне окупают этот недостаток.

Приложение, которое работает в нашем проекте, выложено в галерею MIT AI2 Appiventor под именем BToothHC05.

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

Дизайн экрана выглядит в соответствии со следующей картинкой:

Здесь есть элементы (зеленые квадраты, символизирующие вставленные изображения), не несущие функционала, а служащие разделителями для улучшения внешнего вида.

Если вы зашли на сайт AppInventor и находитесь в среде программирования в режиме Designer, то при щелчке правой кнопкой мыши на соответствующем элементе дизайна вы увидите справа его свойства. Перейдя в режим Blocks, можно видеть все блоки разрабатываемого приложения.

Почти все блоки, по сути, представляют собой обработчики событий: нажатие кнопки на сенсорном экране, сдвиг ползунка слайдера, срабатывание таймера, изменение наклона телефона (да, в App Inventor можно задействовать практически все датчики мобильного устройства!).

Рассмотрим функциональное назначение каждого блока.

В этом блоке при нажатии на экранную кнопку Connect/Disconnect (событие Button4Connect.Click) происходит отсоединение (call BluetoothClient1.Disconnect) Bluetooth устройства, если оно уже подсоединено (BluetoothClient1.IsConnected), изменение текста на кнопке на «Disconnected» и ее цвета на серый, или вызов списка возможных устройств для подсоединения (ListPicker1.Open), если соединения нет. Как видно, блок вполне читаем с точки зрения даже начинающего программиста.

В этих трех блоках (сверху вниз):

  • Назначаем глобальную переменную (ее будут «видеть» все блоки) switch1 для переключения режимов работы: слайдер или наклон;
     
  • При вызове списка устройств ListPicker1 для подсоединения требуем отображать их адреса и имена;
     
  • При выборе из списка ListPicker1 устройства подсоединиться к нему, поменять цвет кнопки и отобразить надпись Connected to ИмяУстройства. ИмяУстройства формируется из длинной символьной последовательности; берется 8 символов начиная с 18-го.

Изображенные выше три блока посылают через установленное соединение символы «P5», «P9» и «P6», которые должны включить или выключить, соответственно, красный, зеленый или синий цвет светодиода.

Когда слайдер Slider1, управляющий яркостью красного цвета светодиода, сдвигается, этот блок посылает символ «S» и цифры, соответствующие положению слайдера.

Когда Slider2, который управляет сервоприводом, сдвигается, если соответствующий режим включен (switch1 = 0), посылаем символ M и позицию слайдера.

Если включен режим работы от датчика наклона, блок посылает M и угол наклона + 90 градусов для управления сервоприводом.

Этот блок переключает режимы работы сервопривода от слайдера или датчика наклона и, соответственно, меняет надпись на кнопке (Text) и ее цвет (BackgroundColor).

Этот два блока срабатывают по событию таймера. Первый блок (Clock1) каждые 0.1 с (этот интервал установлен в свойствах таймера Clock1) проверяет наличие данных о том, была ли нажата кнопка на плате расширения. Если кнопка была нажата, то в течение 1 с (второй блок – Clock2) информация о номере нажатой кнопки отображается на экране смартфона.

Посмотрим теперь на видео, как реально происходит управление светодиодом и сервоприводом от смартфона в соответствии с нашими программами.

Таким же образом можно управлять достаточно большим числом подсоединенных к Ардуино исполнительных устройств. Это не требует какой-то огромной работы программиста при использовании AppInventor, да и программирование Ардуино достаточно просто и наглядно. Вы можете легко добавить или убрать ненужные программные блоки и получить необходимый вам функционал.

Как видно из этого материала, плата расширения из набора «Цифровая лаборатория» позволяет достаточно удобно и наглядно пользоваться дополнительными модулями Ардуино.

Приложение

Начало работы в среде программирования MIT AppInventor

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

Далее заходим на сайт AppInventor и по ссылке Create Apps!, которая находится в правом верхнем углу главной страницы сайта, переходим на сайт среды программирования.

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

Мастер Кит

ТМ Электроникс. Электронные компоненты и приборы. Скидки, кэшбэк и бесплатная доставка
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения:Полный вариант обсуждения »
  • О, давно хотел андроидостроение освоить, даже осилил десяток уроков "андроида с нуля", хотя там для меня большинство функций избыточны, и "управление по bt rgb диммером" на радиолоцмане , но это маловато будет, а этот материал имхо - самое то. СЕйчас гироскопы расгребу- буду вновть api inventor вспоминать. Спасибо за интересный материал.