Serial bluetooth terminal как работает

Содержание
  1. Работа с Bluetooth модулем HC05
  2. 1. Режим Master
  3. 1.1 Настройка автоматического подключения к BT девайсу по фиксированному адресу
  4. Serial Bluetooth Terminal
  5. Плюсы
  6. Минусы
  7. Описание
  8. Основные возможности программы
  9. Как пользоваться
  10. Как сделать веб-приложение для вашего собственного Bluetooth Low Energy девайса?
  11. Оглавление
  12. Проблема
  13. Настройка Bluetooth Low Energy модуля
  14. Создание веб-приложения
  15. Концепция
  16. Задача
  17. Подготовка
  18. Обработчики событий
  19. Подключение к устройству
  20. Запрос Bluetooth устройства
  21. Подключение к устройству, получение объектов сервиса и характеристики
  22. Включение уведомлений об изменении характеристики
  23. Вывод в терминал
  24. Тестирование
  25. Автоматическое переподключение
  26. Отключение от устройства
  27. Получение данных
  28. Введение промежуточного буфера
  29. Отправка данных
  30. Progressive Web App
  31. Иконка
  32. Манифест
  33. Service Worker
  34. Эпилог
  35. Урок 15. Bluetooth модуль HC-06 подключение к Arduino. Управление устройствами с телефона.

Работа с Bluetooth модулем HC05

Напряжение питания модуля: 3.3 В
Потребляяемый ток: 50 мА

Этот модуль может работать в 3-х режимах:
1) Master (или сервер) — в этом режиме модуль может сам подключиться к какому-нибудь Bluetooth девайсу.
2) Slave — в этом режиме другой мастер может подключиться к модулю.
3) Slave-loop — здесь модуль отправляет обратно все байты, которые ему прислали.

1. Режим Master

Для того, чтобы переключить BT модуль в этот режим, нужно:
1) Перевести модуль в режим приема AT команд, замкнув PIO11 на +3.3 V
2) Подключиться к UART’у модуля, настроить COM порт вот так:
Baudrate = 38400
StopBits = 1
DataBits = 8
Parity = none
Handshaking = none
И отправить ему команду:

После каждой успешно выполненной команды модуль отвечает:

3) Подключить PIO11 к GND (автоматический режим). Модуль в режиме мастера.

1.1 Настройка автоматического подключения к BT девайсу по фиксированному адресу

Для этого нужно:
1) Перевести модуль в режим приема AT команд (см. пункт 1)
2) Переключить модуль в режим подключения к устройству с фиксированным адресом при помощи команды:

Задать фиксированный адрес устройства, к которому хотим подключиться, при помощи команды:

«27,13,bd95e4» — для примера, это BT адрес моего ноута.

А теперь маленькая хитрость, как наиболее простым способом узнать этот адрес?
Отправляем модулю:

Переключаемся в автоматический режим (см. пункт 1), модуль должен быть в режиме Slave, подключаемся к модулю тем устройством, BT адрес которого нужно узнать, отключаемся, переходим в режим АТ команд, отправляем команду:

Получаем на выходе искомый адрес в виде: 27:13:bd95e4.

3) Снова возвращаемся в автоматический режим. Теперь модуль сам попытается подключиться к устройству по адресу 27:13:bd95e4.

Источник

Serial Bluetooth Terminal

Плюсы

Минусы

Описание

Serial Bluetooth Terminal — это приложение для доступа к терминалу, позволяет получить доступ к микроконтроллерам arduinos и прочих устройств с интерфейсом UART.

Основные возможности программы

Serial Bluetooth Terminal является весьма специфичным приложением для развлечения и познавательного досуга: программа подойдёт начинающим программистам, которым интересно на платах с Arduino осуществить дистанционное управление самодельными элементами через модуль беспроводной связи Bluetooth HC05 и HC06.

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

Как пользоваться

На самом деле ничего сверхъестественного и сложного тут нет: нужна плата Arduino, модуль Bluetooth HC05, или HC06, терминал в качестве связующего звена и устройство для установки терминала. В случае с Android это смартфон (планшет).

Далее инструкция следующая:

В целом Serial Bluetooth Terminal является удобным инструментом для управления схемами Arduino с возможностью гибкой настройки. Например, в зависимости от написанного кода можно научить его преобразовывать текстовую информацию в цифровую и расширить возможности по управлению светодиодом: как вариант реализовать функцию управления светодиодной лентой на определённую яркость согласно настройкам широтно-импульсной модуляции.

Serial Bluetooth Terminal на APKshki.com скачали 175 раз. Serial Bluetooth Terminal распространяется бесплатно в расширении apk.

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

Если обнаружился вирус: [email protected]

Добавить описание: [email protected] с пометкой добавить описание.

Источник

Как сделать веб-приложение для вашего собственного Bluetooth Low Energy девайса?

Несколько недель назад я, развлечения ради, собрал простенькую роботизированную руку (а-ля манипулятор) и решил прикрутить к ней управление со смартфона через Bluetooth. Опыта в разработке нативных мобильных приложений у меня пока нет, с Apache Cordova я уже знаком, а вот задействовать Web Bluetooth API было бы интересно, приправив фишками Progressive Web Apps.

На первый взгляд может показаться, что статей по ключевым словам достаточно: есть спецификация Web Bluetooth, подробная статья в блоге Google Developers с примерами, есть подробный разбор Bluetooth Low Energy, примеры реверс-инжиниринга протоколов различных BLE устройств и даже моргания «умными» лампочками и получения данных от фитнес-браслетов прямо из браузера — что может пойти не так?

Так полагал и я, пока не попробовал сделать собственный девайс и пообщаться с ним из браузера. Не буду копать глубоко, лишь поделюсь своим практическим опытом и кодом, лично мне трёхнедельной давности это бы весьма пригодилось 🙂

Оглавление

Проблема

Итак, вы собрали устройство, решили дооснастить его Bluetooth модулем и получить к нему доступ из браузера. Далее по тексту в качестве примера будет картинка подключения Bluetooth модуля к Arduino Uno, поэтому пусть будет устройство на базе Arduino, хотя, конечно же, нет никакой принципиальной разницы, используете ли вы STM, Raspberry, ESP8266 или что-либо ещё. Важно то, что ваш контроллер будет работать с Bluetooth модулем по протоколу UART (подробнее на Geektimes или в Википедии).

Если вы, также как и я, уже прикрутили к вашему девайсу старый добрый Bluetooth модуль HC-05, закинули прошивку, запустили какой-нибудь из примеров Google и не можете понять почему браузер не обнаруживает ваше устройство, то спешу мне придётся вас разочаровать: Web Bluetooth поддерживает только «стандарт Bluetooth 4».

Именно это является причиной написания статьи, поскольку когда вы, также как и я, вернётесь довольным из ближайшего магазина с BLE модулем (HM-10, к примеру) наперевес, то обнаружите, что работает он совсем по-другому и, самое главное, не поддерживает профиль последовательного порта (Serial Port Profile, SPP, подробнее в библиотеке Баумана), по которому вы привыкли беззаботно гонять байты туда-сюда.

Возможно, вы уже знакомы с концепцией Bluetooth Low Energy, в частности с профилем общих атрибутов (Generic Attribute Profile, GATT), но я попробую кратко пояснить то, что сейчас имеет значение для нас: вместо самодельного последовательного протокола, ваш девайс должен предоставлять набор прикладных «характеристик», которые сможет читать и/или изменять подключенное устройство.

Для примера возьмём роботизированную руку: она двигается в пространстве по трём координатам (числа X, Y, Z) и может открывать (0) или закрывать (1) клешню. Значит, нам нужно настроить BLE модуль на чтение и запись 4 характеристик, которые сможет узнать, прочитать и записать в них нужные значения подключенное устройство.

И это здорово, но вот незадача: обычные BLE модули «хобби» уровня, которые вы встретите в «соседнем магазине» или на Алиэкспресс: HM-10, JDY-08, AT-09, некий CC41-A, какой достался мне, или другие — не имеют возможности конфигурации каких-либо сервисов и характеристик.

Вместо этого они предоставляют лишь одну характеристику, которая как бы эмулирует последовательный порт, и всё, что вы в неё запишите, модуль отправит вашему контроллеру по TX, а всё, что вы отправите с контроллера на RX модуля, он перешлёт подключенному устройству. С ограничением в 20 байт, присущим любой BLE характеристике, кстати говоря.

Таким образом, несмотря на то, что Web Bluetooth ограничен использованием профиля общих атрибутов, нам для «бытового» использования фактически придётся сделать поверх него профиль последовательного порта.

Настройка Bluetooth Low Energy модуля

Для начала настроим BLE модуль, это не займёт много времени, если знать что да как. Так получилось, что у меня в руках оказался модуль CC41-A на чипе Texas Instruments CC2541, который в «соседнем магазине» обошелся мне в 340 р. Поэтому в качестве примера я опишу именно его конфигурацию, однако суть общая и для других модулей, использующих аналогичный чип.

image loader

Если у вас есть USB-TTL конвертер, то достаточно подсоединить к нему BLE модуль и вы получите прямой доступ к модулю с компьютера через COM порт. Обратите внимание на описание вашего модуля, возможно он работает с 3,3В логикой, поэтому на линиях TX-RX и RX-TX вам придётся использовать преобразователь уровня логических сигналов (voltage level shifter, на вкус и цвет на EasyElectronics). Модуль CC41-A, несмотря на то, что на нем написано «LEVEL:3.3V», замечательно справляется и с 5В логикой.

image loader

Вместо конвертера вы можете задействовать ваш контроллер, реализовав с его помощью простейший последовательный мост: всё что вы отправите в один последовательный порт, он передаст в другой, и наоборот. В случае с Arduino Uno вам придется использовать библиотеку SoftwareSerial:

image loader

Запустите терминальную программу (можно использовать Serial Monitor из Arduino IDE, я предпочитаю Bray’s Terminal) и подключитесь к COM порту, на котором висит BLE модуль со стандартными настройками:

image loader

Теперь можно попробовать подключиться к BLE модулю, например со страницы Characteristic Properties Sample, указав «0xFFE0» в качестве сервиса и «0xFFE1» в качестве характеристики. Или даже отправить что-нибудь из терминала в браузер на странице Notifications Sample.

image loader

Создание веб-приложения

Разминка окончена, переходим к самому интересному!

Концепция

Предлагаю рассмотреть концепцию управления вашим девайсом. На обычной HTML странице в браузере вы создаете некий UI с разнообразными контролами, которые будут реализовать взаимодействие с вашим устройством.

image loader

Если это, к примеру, роботизированная рука, двигающаяся по трём координатам и открывающая и закрывающая клешню, то это может быть три числовых слайдера или даже 2D поверхность, при нажатии на которую вычисляются значения X и Y, один слайдер для движения по оси Z и кнопка, открывающая или закрывающая клешню. Если это чайник, вы можете сделать кнопку «Вскипятить!». Если же это радиоуправляемая машинка, то вы можете сделать кнопки «вперед», «назад», «влево», «вправо», «включить/выключить фары», «подать сигнал» и тому подобные.

image loader

Повесив обработчики на нажатия или изменения состояний тех или иных элементов UI в JavaScript, вы формируете некоторое сообщение, которое отправляете посредством Web Bluetooth API на ваш девайс. BLE модуль получает сообщение, передает его контроллеру по UART, контроллер разбирает сообщение, предпринимает требуемые действия и может отправить ответ или ошибку в виде сообщения обратно BLE модулю по тому же UART, тогда модуль передаст его подключенному устройству, а вы получаете ответ с помощью JS в браузере.

Задача

Создание HTML страницы (UI) и простая работа с JavaScript обработчиками событий это не такое уж сложное дело и здесь достаточно базовых знаний веб-технологий. Поэтому я предлагаю абстрагироваться от конкретного устройства и создать приложение-терминал, которое будет подключаться к вашему девайсу и обмениваться с ним сообщениями.

Также мы реализуем логирование процесса подключения к Bluetooth Low Energy устройству, переподключение в случае потери связи и обойдём ограничение длины BLE характеристики в 20 байт.

Ну и под конец превратим обычную HTML страницу в прогрессивное веб-приложение (про Progressive Web Apps на Google Developers, в Википедии — in English), которое можно будет установить на рабочий стол смартфона и использовать в условиях отсутствия интернета.

Подготовка

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

Web Bluetooth API доступен по умолчанию в Chrome 56+ и Opera 43+. В статье Google Developers также упомянуто, что в Linux нужно включить флаг chrome://flags/#enable-experimental-web-platform-features и перезагрузить браузер.

И последний немаловажный момент: веб-приложение должно открываться либо под HTTPS (можно использовать GitHub Pages), либо под http://localhost — таковы требования безопасности.

Сделаем кнопку для подключения к устройству, кнопку отключения, div-контейнер для сообщений и форму отправки, состоящую из текстового поля и кнопки «Send»:

В div-контейнер будем выводить лог подключения, входящие и исходящие сообщения в следующем виде:

Чтобы не гадать какое сообщение откуда, разделим их по цветам в стилях:

Как видите, ничего особенного. Интерфейс готов 🙂

Обработчики событий

Получим ссылки на элементы UI, повесим обработчики на клик по кнопкам подключения и отключения и на отправку формы:

Подключение к устройству

Полный алгоритм подключения состоит из нескольких этапов:

Мы реализовали в функции connect() Promise цепочку (цепочку функций, возвращающих Promise объекты), соответствующую этапам подключения.

Запрос Bluetooth устройства

Чтобы запросить выбор Bluetooth устройства, необходимо вызвать функцию navigator.bluetooth.requestDevice() c объектом-конфигурацией в качестве обязательного аргумента, который описывает какие Bluetooth устройства нам интересны. Можно использовать фильтр по сервисам, по имени, можно принять все устройства, но используемый сервис всё равно необходимо указать, иначе браузер не предоставит доступ к нему.

Подключение к устройству, получение объектов сервиса и характеристики

Выполняем простую Promise цепочку, которая говорит сама за себя. Переменная characteristicCache — по аналогии с deviceCache — сохраняет полученный объект характеристики, он потребуется для записи в него данных, то есть для отправки сообщения из браузера устройству.

В функциях getPrimaryService() и getCharacteristic() в качестве аргументов используются UUID, на работу с которыми настроен BLE модуль.

Включение уведомлений об изменении характеристики

Вывод в терминал

Реализуем функцию вывода в терминал, чтобы прямо сейчас протестировать подключение к девайсу:

С помощью метода insertAdjacentHTML() мы вставляем div с указанным в аргументе type классом в конец div-контейнера терминала — очень просто.

Тестирование

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

image loader

Тут я столкнулся с парой подводных камней, о которых нигде не написано. Вывод сервисных сообщений помог диагностировать и устранить проблемы.

Первый заключается в том, что когда я подключался к устройству с телефона, к которому привязан Mi Band, также работащий по BLE и находящийся в непосредственной близости, подключение устанавливалось крайне редко, а если и устанавливалось, то практически сразу отваливалось. Такое происходило даже в нативных приложениях. Пробовал отнести Mi Band на расстояние — не помогло. Отвязывать браслет не стал, просто использую другой смартфон. Если у вас возникнут аналогичные проблемы, обратите внимание на устройства, которые параллельно общаются с вашим смартфоном.

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

Автоматическое переподключение

Теперь, если вы подключитесь к устройству, а затем обесточите его, и Bluetooth соединение потеряется, браузер единоразово попробует подключиться заново:

image loader

Отключение от устройства

image loader

Получение данных

Получение данных от устройства осуществляется асинхронно с помощью механизма уведомлений, которые возникают, когда изменяется значение BLE характеристики. Нам лишь нужно подписаться на соответствующие событие characteristicvaluechanged характеристики. Сделать это следует после включения уведомлений. Также будет правильно снять обработчик с характеристики при отключении устройства:

event.target.value — это объект DataView, содержащий ArrayBuffer, в котором находится сообщение от вашего девайса. Используя TextDecoder (MDN, in English only), мы перегоняем массив байтов в текст.

image loader

Введение промежуточного буфера

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

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

image loader

Отправка данных

Отправка данных девайсу осуществляется путём записи значения в характеристику, а конкретнее вызовом метода writeValue() объекта характеристики с ArrayBuffer в качестве аргумента. Для преобразования строки в ArrayBuffer проще всего воспользоваться TextEncoder (MDN, in English only):

В такой реализации также будет действовать ограничение в 20 байт: всё, что выходит за рамки, просто будет обрезано. Поэтому в случае, если сообщение длиннее 20 байт, стоит разбить его на куски и последовательно отправить с некоторой задержкой:

Чтобы облегчить обработку сообщений на стороне контроллера, добавим в конец отправляемого сообщения символ подачи строки ( \n ).

image loader

Работает! Мы получили полнофункциональный двусторонний обмен данными с устройством и на этом с JS всё.

Progressive Web App

Мы не можем заранее знать в каких условиях окажется ваш девайс, поэтому было бы неплохо иметь возможность работать с созданным веб-приложением без интернета. И здесь нам поможет концепция Progressive Web Apps (подробнее на Google Developers или в Википедии — in English): в двух словах это веб-сайты, которые выглядят для пользователя как обычные или мобильные приложения. С использованием технологий PWA при первом посещении веб-сайта мы сможем установить его как приложение на рабочий стол смартфона и работать с ним оффлайн.

Иконка

Иконка необходима для установки приложения на рабочий стол. Лично я использую realfavicongenerator.net — загрузите подходящее изображение и генератор предложит скорректировать иконки для разных устройств.

В разделе «Favicon for Android Chrome» рекомендую переключиться на вкладку «Assets» и выбрать «Create all documented icons», в противном случае Chrome сам будет генерировать иконку для рабочего стола из наиболее близких к нужному ему размеру, который может различаться на разных устройствах.

Манифест

Вместе с иконками генератор любезно предоставил нам заготовку манифеста — manifest.json :

В массиве icons уже перечислены все сгенерированные иконки, в свойстве display — режим отображения приложения. standalone означает, что веб-приложение будет запускаться без элементов UI браузера, максимально похожим на нативное приложение — то, что нам нужно.

Service Worker

Service Worker позволит нам закэшировать необходимые приложению файлы и использовать их в условиях отсутствия интернета. Быстро создать свой Service Worker нам поможет Service Worker Toolbox, достаточно скачать sw-toolbox.js и companion.js, расположить их рядом с index.html и добавить в конец :

Теперь у нас не просто страничка, а самое настоящее прогрессивное веб-приложение:

image loader

image loader

Эпилог

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

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

Доработанное приложение веб-терминала вы можете запустить здесь: loginov-rocks.github.io/Web-Bluetooth-Terminal — или посмотреть как оно работает на YouTube.

На GitHub вы также сможете найти отдельно ES6 класс для последовательного общения с BLE модулями и, собственно, репозиторий веб-терминала.

Источник

Урок 15. Bluetooth модуль HC-06 подключение к Arduino. Управление устройствами с телефона.

Очень часто в ваших проектах возникает необходимость в дистанционном управлении или передачи данных с ваших телефонных гаджетов.

97ad8d56336515188d96cbe19fb38c22

Один из самых популярных и распространенных методов обмена данными посредством Bluetooth.

Сегодня мы разберем простые примеры как можно подключить Bluetooth модуль к Arduino и настроить дистанционное управление с телефона.

Нам понадобится:

Схема подключения Bluetooth к Arduino:

Подключать Bluetooth модуль к микроконтроллеру Arduino удобнее всего с помощью проводков ПАПА-МАМА.

Разработчик: Kai Morich
Категории: Инструменты
Версия Android: 4.3+
Размер: 1.3 MB
Скачали: 175
Рейтинг:
Arduino Bluetooth
Pin 1 (TX) RXD
Pin 0 (RX) TXD
GND GND
5V VCC

Теперь необходимо записать пробный код программы:

Во время загрузки скетча необходимо что бы Bluetooth модуль был отключен от микроконтроллера arduino. В противном случае скетч не запишется, потому что связь с Bluetooth модулем происходит по одному и томуже порту RX и TX, что и USB.

Скачать скетч можно по ссылке.

После того как скетч записан и Bluetooth модуль подключен к Arduino, можно перейти к следующему шагу.

Подключение Bluetooth к телефону

Желательно в качестве источника питания для arduino использовать не USB, а внешний Блок питания на 9 В.

Теперь нужно скачать bluetooth terminal на ваш телефон. Мы рассмотрим на примере платформы Android.

4203e4cebcaa909d7ebb70788d39b9d46ae63e4d323a8f44bd6ef4e1634c132a 514a161b75b7e43f57f9bc01ecf095a6

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

После того как мы установили терминал, запускаем его выбираем наш bluetooth модуль HC-06 и подключаемся к нему.

Пришло время попробовать проект в деле. Пишем в терминале цифру «0» и отправляем. Светодиод L который находится на плате arduino рядом с pin 13, должен погаснуть. Теперь отправим через терминал цифру «1» и светодиод L должен зажечься.

Демонстрация работы:


Домашняя работа:

Источник

Читайте также  Как деливери клаб возвращает деньги
Своими силами