Муфты электромонтажные от производителя Fucon
РадиоЛоцман - Все об электронике

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

Мастер Кит NR05

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

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

Электромеханические реле Hongfa – надежность и качество 19 января 2023

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

Связь между смартфоном и модулем Ардуино, установленном на плате расширения, будем осуществлять по технологии 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 вспоминать. Спасибо за интересный материал.