Bluetooth spp c распиновка

Обновлено: 05.07.2024



В классической беспроводной технологии Bluetooth профиль последовательного порта (SPP) обеспечивает возможность замены проводного интерфейса RS-232 беспроводным соединением между двумя устройствами. В устройствах, работающих на новом Bluetooth-стандарте BLE, структура стека для соединения через последовательный порт – иная. Как же организовать на них замену проводного интерфейса беспроводным соединением?

Изначально созданная для высокоскоростной передачи данных в сетях малого радиуса действия беспроводная технология Bluetooth с течением времени развивалась и совершенствовалась. Последнее существенное изменение произошло с появлением версии 4.0, известной также как Bluetooth Low Energy (BLE). Новейшая принятая спецификация имеет версию 4.2. Для BLE используется также и другое название – Bluetooth Smart.

В Bluetooth при создании соединения между двумя устройствами одно из них, инициирующее соединение, выступает в роли ведущего (Master), а другое будет находиться в роли ведомого (Slave). При этом оба устройства могут действовать как индивидуально (топология Point to Point), так и находясь в составе сети со структурой типа «звезда» (топология Star) (рисунок 1). В этом случае один узел функционирует как центральный и действует в роли ведущего, в то время как все остальные узлы функционируют в роли ведомых.

Рис. 1. Две топологии соединений в Bluetooth

Рис. 1. Две топологии соединений в Bluetooth

В классическом варианте Bluetooth соединение между двумя точками поддерживается, даже если нет подлежащих передаче данных, что приводит к повышенному расходу энергии от автономного источника питания. Лишь при переходе в спящий режим удается несколько сократить потребляемый от батареи ток. В результате на основе классического Bluetooth практически невозможно реализовать компактные устройства длительного пользования с батарейным питанием. Значительно более экономичный в отношении потребляемого тока стандарт Bluetooth Low Energy позволяет создавать конечные устройства с питанием от батареек пуговичного типа, которые способны работать в течение нескольких месяцев и даже лет.

BLE можно рассматривать как расширение базовой технологии Bluetooth Classic, ориентированное в основном на передачу небольших объемов данных, которое оптимально подходит для Интернета вещей. Сравнение основных характеристик BLE и обычного Bluetooth приведено в таблице 1.

Таблица 1. Сравнение Bluetooth с Bluetooth Low Energy

BLE, как и обычный Bluetooth, работает в нелицензируемом частотном диапазоне 2,4 ГГц, используя 40 каналов вместо 79 в классическом варианте и довольствуясь сокращенным по длительности до 3 мс сеансом связи. При этом максимальный размер передаваемого пакета составляет 27 байт.

BLE использует меньше каналов, но с расширенной полосой пропускания. Как показано на рисунке 2, ширина каждого из 40 каналов Bluetooth Smart составляет 2 МГц. Для передачи служебных сигналов (Advertising) выделены три канала, разнесенные в пределах частотного спектра, чтобы минимизировать влияние помех. В течение сеанса связи используется скачкообразный алгоритм выбора частоты канала.

Рис. 2. Частотные каналы Bluetooth Smart (BLE)

Рис. 2. Частотные каналы Bluetooth Smart (BLE)

Стек ПО Bluetooth Smart (BLE) для последовательного порта

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

В новых версиях Bluetooth, начиная с 4.0, вводятся два типа устройств: однорежимные и двурежимные. Однорежимные устройства работают лишь с поддержкой спецификации BLE, тогда как двурежимные способны также работать и в режиме классического Bluetooth BR/EDR (с базовой/повышенной скоростью).

На рисунке 3 изображены варианты реализации коммуникационного стека Bluetooth. Имеющийся в обычном Bluetooth профиль последовательного порта (SPP) обеспечивает возможность замены проводного интерфейса RS-232 беспроводным соединением между двумя устройствами.

Рис. 3. Структура коммуникационного стека Bluetooth

Рис. 3. Структура коммуникационного стека Bluetooth

Профиль SPP включает протоколы RFCOMM, L2CAP, Link Manager и базовый протокол радиосвязи. RFCOMM (Radio Frequency Communications), создает виртуальный последовательный поток данных и эмулирует управляющие сигналы RS-232.

Далее в дело вступает пакетный протокол L2CAP (Logical Link Control and Adaptation Protocol). Он передает пакеты данных между хостом и подсистемой контроллера Bluetooth через интерфейс HCI (Host to Controller Interface) или напрямую в Link Layer, например, как в BlueNRG (рисунок 4).

Рис. 4. Структура стека BlueNRG

Рис. 4. Структура стека BlueNRG

В устройствах BLE используется несколько измененная структура стека для соединения через последовательный порт. Вместо SPP имеется профиль атрибутов, а вместо протоколов RFCOMM – протокол атрибутов, оптимизированный для используемых в BLE пакетов данных небольшого размера. Протокол L2CAP остается неизмененным, Link Manager заменен на Link Layer, который определяет для пакетов структуру/каналы, процедуры подключения и отправляемые/получаемые данные.

Последовательный канал связи для устройств BLE

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

В комплекте c оценочными платами производства компании STMicro­electronics имеется пакет ПО для разработки новых устройств, включающий в себя встроенное программное обеспечение, примеры реализации различных сценариев и документацию.

Рассмотрим пример создания канала связи между двумя компьютерами с использованием микросхем BlueNRG-MS или BlueNRG-1, которые являются однорежимными чипами с поддержкой требований BLE из спецификации Bluetooth v4.0. BlueNRG взаимодействуют с микроконтроллером внешнего хоста, используя линии SPI и набор API, состоящий из команд стандартного Application Command Interface (ACI) и определенных производителем команд Host Controller Interface (HCI) (рисунок 4).

Для решения поставленной задачи можно использовать, например, модуль SPBTLE-RF с сетевым процессором BlueNRG-MS (рисунок 5) или другие устройства на основе приемопередатчиков BlueNRG-1. В случае использования BlueNRG-1 расширенные возможности аппаратной платформы позволяют ему в отдельных случаях выполнять также функции приложения и полностью реализовать стек протоколов в одном чипе.

Рис. 5. Модуль ST SPBTLE-RF

Рис. 5. Модуль ST SPBTLE-RF

Образец программной реализации, которая демонстрирует простое двухполосное соединение между двумя устройствами BlueNRG-MS, доступен в комплекте для разработки ПО (SDK) BlueNRG-MS. Проект называется “BLE Chat”, он размещен в папке “Projects\Projects_STD_Library\BLE_Chat\EWARM_BlueNRG-MS” внутри ПО для оценочного комплекта STEVAL- IDB005V1 или STEVAL-IDB006V1 (рисунок 6).

Рис. 6. Модуль STEVAL-IDB006V1

Рис. 6. Модуль STEVAL-IDB006V1

Те, кто работает с оценочными платами NucleoL152RE и X-NUCLEO-IDB05A1, могут найти этот проект в папке “Projects\Projects_Cube\BLE_Chat\EWARM_BlueNRG-MS”.

Примечание: если работать с BlueNRG-1 в составе оценочной платы STEVAL-IDB007V1, проект можно найти в SDK BlueNRG-1, в папке “\BLE_Examples\BLE_Chat”. Имеется поддержка IAR Embedded Workbench, Keil Microcontroller Development Kit и Atollic TrueSTUDIO.

При работе с этим проектом доступны четыре конфигурации:

  • “Client” – роль клиента;
  • “Server” – роль сервера;
  • “Client throughput” – тестирование пропускной способности для режима клиент;
  • “Server throughput” – тестирование пропускной способности для режима сервер.

В процессе реализации чата BLE выполняются следующие действия:

Сервис Chat содержит две определенные производителем характеристики:

Максимальная длина значения характеристики – 20 байт.

Чтобы установить соединение между двумя устройствами BlueNRG-MS (двумя оценочными платами BlueNRG), необходимо на одном из них реализовать режим «ведущий», а на втором должен быть установлен режим «ведомый». Как только соединение установлено – две точки могут начать передачу данных по каналу связи, используя эти две характеристики.

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

  • скорость передачи: 115200;
  • стоповые биты: 1;
  • проверка на четность: нет;
  • количество бит данных на символ: 8;
  • контроль потока: нет.

Проектные конфигурации “Client throughput” и “Server throughput” позволяют пользователю тестировать пропускную способность (определенный идентификатор препроцессора “THROUGHPUT_TEST” будет представлен в обеих проектных конфигурациях).

Тест на пропускную способность включает следующие этапы:

  • Задать режим Client на одной из платформ BlueNRG-MS и сбросить ее. Платформа появится как виртуальный COM-порт на ПК. Открыть порт COM в терминальном эмуляторе. Клиент запустится через 4 секунды после сброса.
  • Задать режим Server на второй платформе BlueNRG-MS и сбросить ее. После этого две платформы попытаются установить соединение. Как только им удастся это сделать, ведомый будет постоянно отправлять клиенту уведомления, состоящие из 20 байт.
  • После каждых 500 пакетов, полученных от клиента, текущая пропускная способность приложения будет отображаться на эмуляторе клиентского терминала.

Примечание: при работе с BlueNRG-1 в составе оценочной платы STEVAL-IDB007V1 контроллер STM32L1 выполняет роль моста между USB и последовательным портом BlueNRG-1, что позволяет непосредственно проверить пропускную способность от ПК к BlueNRG-1. Прошивка представлена в двоичной форме в SDK BlueNRG-1. Приложение BLE Chat запускается на устройстве BlueNRG-1 и сохраняется во Flash-памяти.

Заключение

Производимые STMicroelectronics приемопередатчики BlueNRG стандарта Bluetooth Low Energy подходят для использования в самом широком спектре устройств персонального назначения, в системах сбора и учета данных, находят широкое применение в промышленной и домашней автоматике.

Встроенное ПО BlueNRG обеспечивает эффективное решение стоящих перед разработчиком задач и не требует от него углубленных познаний в радиочастотной технике и спецификации Bluetooth. Имеющийся в комплекте с SDK набор демонстрационных приложений позволяет использовать некоторые типичные рабочие сценарии BLE.

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


Довольно давно я выкладывал схему и печатку для своей первой версии адаптера
Там использовался двусторонний монтаж, я сделал несколько плат про запас.С тех пор у меня заказали их несколько штук и наконец-то запасы модулей НС-06 были исчерпаны.

Спору нет, адаптеры для ГБО на базе модулей HC-05-06 работают вполне беспроблемно.
Но лично меня смущает их прожорливость — до 50мА ток потребления.
А с учетом того, что подключены они фактически напрямую к аккумулятору и потребляют ток всегда — как-то не очень хочется однажды оказаться с севшим аккумом, в том числе по вине такого адаптера.

Решил попробовать что-то менее прожорливое.
Заказал модули HC-04 (SPP-С).
Посвежее технологически, потребляют 20мА, умеют засыпать самостоятельно (ток покоя становится вообще мизерным) и полностью совместимы с модулями HC-06

Ну и под это дело нарисовал новую печатку
Односторонняя, размер 26 на 28мм.
Рассчитана на нанесение защитной маски.
На эту плату можно установить и HC-06 и SPP-C.
Уменьшения размеров добился применением транзисторной сборки UMX1N.
Питание модуля — на HT7533
Светодиод состояния в центре одного из краёв платы





Сам файл печатки здесь

Схема та же, её нет смысла менять.


Выброшен светодиод индикации питания и цепи кнопки программирования, они уже не требуются

АТ-команды для SPP-C под адаптер Stag

Получим адаптер с позывным Stag и паролем 0000

Уменьшения общих размеров адаптера добился срезанием части коннектора и приклеиванием платы сверху (на фото плата ещё не приклеена)





Ну и потом всё это дело прячем в термотрубку или куда у кого хватит фантазии

Данный адаптер (SPP-C) работает так же беспроблемно как и на HC-06, уже несколько месяцев.
Каких-либо различий я не увидел.
За исключением того факта, что адаптер теперь на ощупь холодный.
Ещё бы, ведь энергопотребление снизилось больше чем вдвое.

Уже есть обзор на Bluetooth модуль JDY-23 (BLE 5.0), который имеет низкое энергопотребление, но и особенности, связанные с этим, этот же JDY-32 имеет как низкопотребляющий блютуз (BLE), так и классический (SPP), что хорошо подойдет для некоторых, тем более что цена такая же.


Основные параметры

Ток при подключении (SPP 3.0): 12 мА
Скорость (BLE): до 5 КБ/с (android) Сервис UUID: FFE0
Характеристика UUID: FFE1 Поддержка ведущее/ведомое: только ведомый (Slave)

Приобрести на Aliexpress

🛒 Мой мультиметр T21D RM113D (

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

Питание здесь от преобразователя, но лучше использовать отдельный стабилизатор 3.3В.

Подключение и проверка команд


Открываем терминал на ПК. В настройках ставим скорость 9600 бод/с и включаем CR+LF (перенос каретки и новая строка). Проверяем AT-команды:


Модуль послушно отвечает, менять ничего не будем.

Связь между ПК <-> телефон через Bluetooth

С JDY-23 была особенность, ПК его видел, но работать с ним не вышло, ведь создать пару нельзя, а необходимого ПО, как на Андрюшу не нашел (но уверен что такое может существовать). Ну а на JDY-32 есть обычный Bluetooth SPP (Serial Port Profile), который без проблем работает со всеми. Привязать к ПК легко:


Как и к телефону:


Посмотрим видит ли телефон этот модуль. Заходим в приложение на моб.. Меню слева -> Devices -> BLUETOOTH LE -> SCAN

Напоминаю, для Bluetooth Low Energy на телефоне:

  • обязательно дать все разрешения и включить геолокацию (GPS)!
  • не пытайтесь добавить модуль в настройках Bluetooth (создать пару) - это сделать не получится (для BLE !)


Видит хорошо и подключается также, то есть для BLE подключение как обычно (с включенным GPS), а для SPP заранее связываете устройства и оно уже будет отображено в списке.


Передача и прием проходит успешно!

Светодиодная индикация

Как и на других модулях можно прицепить светодиод на вывод ALED, который будет показывать подключение (не подключено - мигает, подключено - светиться).


Также есть вывод STAT для определения статуса подключения (можно подключить к выводу МК и завести прерывание):

  • не подключено - низкий уровень
  • подключено - высокий уровень

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

Список команд

Команда Ответ Параметр
Версия AT+VERSION +VER:JDY-23-V1.2
-
Имя для BLE AT+NAME +NAME:JDY-32-LE
Имя для энергоэффективного Bluetooth
(до 18 байт)
Имя для SPP AT+NAMES +NAME:JDY-32-SPP Имя для классического Bluetooth
(до 18 байт)
MAC адрес для BLE AT+MAC +MAC=8cde52ab2312 -
MAC адрес для SPP AT+MACS +MAC=8cde52ab2312 -
Отключится AT+DISC +OK -
Настройки пароля (пин-кода) для SPP AT+TYPE +TYPE=1
Параметр: (0-2)
0: без пароля
1: пароль при каждом подключении
2: пароль только при первом подключении
Установка пароля для SPP AT+PIN +PIN=1234 Должен состоять из 4 цифр
(по умолчанию: 1234)
Скорость UART AT+BAUD +BAUD:4
Параметр: (1-5)
1——9600
2——19200
3——38400
4——57600
5——115200
(по умолчанию: 1)
Программный сброс AT+RST +OK -
Установка настроек по умолчанию AT+DEFAULT +OK -

Элементная база


  • YC1021 (Bluetooth 4.1 + 3.0 (EDR) + 2.4GHz-Proprietary)
  • 4GA7D1G8 (неизвестная EEPROM)


Потребляемая мощность


Bluetooth Low Energy (BLE)

Ток во время простоя (не подключено): 3-8 мА
Ток в подключенном состоянии: 3.63 мА
Ток при передачи данных через UART: 3.63 мА


Serial Port Profile (SPP)

Ток во время простоя (не подключено): 3-8 мА
Ток в подключенном состоянии: 5.5 мА
Ток при передачи данных через UART: 5-7 мА

Проверка дальности передачи


Рассчитывать от синезуба огромного расстояния передачи никто не будет, да и не нужно, заявлено до 40 м (ну эт. на открытой местности), на деле же пару стен пробивает, чего вполне достаточно.

На полуоткрытой местности (небольшие преграды) легко выжать 70 метров, ну а если нужно передавать немного данных на низкой скорости, то на открытой местности и сотню можно выжать.


Техническая документация


Видеообзор

Сравнение с HC-06


Главное существенное отличие в скорости, поэтому в некоторых ситуациях использовать JDY32 как аналог не выйдет .

Но в линейки джидивай есть и другие платки, JDY-30 может стать заменой, у него скорость до 1382400 бод/с.

Итого

Увы, он не заменит HC-06, если нужна высокая скорость передачи, но все же за доллар хороший блютуз модуль - это хорошо. Установка его рациональна там, где питание постоянно либо объем ХИТ большой (БП, счетчики, измерительные приборы, логгеры, игрушки, просто дистанционное управление).


Он не имеет такое же низкое энергопотребление и гибкие настройки (сон, период вещания), как JDY-23 BLE, так что наличие BLE+SPP не дает по сути ничего.

Также, если нужно передавать данные на чуть большее расстояние без блютуза, есть модули JDY-40, которые работают в этом же диапазоне частот, но имеют еще и удобное управление нагрузками для использования его как пульта управления.

  • Рабочая частота: 2.4 GHz
  • Интерфейс: UART
  • Напряжение питания: 3.6.. 6V
  • Ток потребления: 5 мА в режиме поиска,

Официальную документацию на JDY-31 можно открыть по ссылке .


Индикация состояния подключения:

  • Ожидание
    • Светодиод мигает
    • Пин STATE: LOW
    • Светодиод горит постоянно
    • Пин STATE: HIGH

    Подключение

    Модуль подключается к питанию и цифровым пинам МК:

    • JDY-31 > Arduino
    • GND > GND
    • VCC > 5V
    • RX > Serial TX
    • TX > Serial RX
    • Опционально можно подключить EN на любой цифровой пин для отслеживания состояния подключения.

    При таком подключении:

    • Модуль будет мешать загрузке прошивки (она загружается по RX TX), на момент загрузки нужно отключить провода от пинов RX и TX Arduino
    • С модулем можно общаться при помощи штатного Serial, фактически он будет дублировать монитор COM порта


    На следующих двух схемах я подключил модуль к любым двум цифровым пинам Arduino:

    Подключение к Bluetooth

    Windows

    Для работы на компьютере у вас должен быть Bluetooth адаптер. Заходим в панель управления, добавляем Bluetooth устройство, вводим пин 1234 для сопряжения:


    После этого в Arduino IDE появится ещё один COM порт. Загрузим следующий пример, который просто выводит в порт строчку со счётчиком. Модуль подключен к аппаратному UART.

    Откроем Bluetooth порт и увидим вывод:


    Точно таким же образом можно подключиться к Arduino из своей программы, написанной например на Processing или Python. У меня есть уроки по этой теме:

    Android

    Для теста на Android я использую приложение Serial Bluetooth Terminal. Сопрягаемся с паролем 1234, заходим в программу, открываем настройки слева, Devices, выбираем JDY-31 и подключаемся (кнопка со штекером в левом правом углу экрана. Модуль подключен к аппаратному Serial, на Arduino прошит код, отправляющий принятые данные обратно в Serial (эхо):

    SoftwareSerial

    В качестве примера подключим модуль по второй схеме (на пины D2 и D3) и загрузим простую программу, которая будет пересылать данные с программного Serial (на пинах D2 и D3, Bluetooth) на аппаратный (который мы можем смотреть через монитор порта в Arduino IDE):

    Откроем терминал и монитор порта и можем общаться с компьютером, Arduino выступает в роли посредника и перекидывает данные с Bluetooth на USB и наоборот:


    Точно так же можно использовать SoftwareSerial для программ и приложений, если аппаратный UART на Arduino нужен для других целей.

    Настройка JDY-31, AT команды

    Рассмотрим также настройку самого JDY-31, делается это при помощи AT-команд:

    • Чтобы модуль отвечал на команды, он должен находиться в режиме ожидания подключения (светодиод мигает)
    • Загружаем в Arduino пустую программу (Файл/Новый). Либо любую другую, в которой не задействован Serial. Либо подключаем пин RST к GND, чтобы микроконтроллер не запустился и нам не мешал
    • Подключаем JDY-31 на RX TX Arduino (аппаратный Serial) наоборот: TX > TX, RX > RX
    • Открываем монитор порта, ставим текущую скорость модуля (по умолчанию 9600 бод), конец строки NL & CR

    Какие ещё есть команды? Полный список есть в документации, давайте разберём:


    А вчера прислали этот Bluetooth-модуль,
    хочу написать о нём пару строк того, чего не нашёл в Интернет.

    Дошло за три недели, в конверте с пупырчатыми стенками,
    упаковано в пакетик с мягкой прокладкой, чтобы не погнулись штыревые контакты.



    Описание

    Это блютуз-модуль, установленный на плату с линейником 3.3В, синим светодиодом и выводами интерфейса:
    И прозрачная термоусадочная трубка — куда же без неё?!
    В комплекте была бумажка, с надписью «SKU:B16-7BC01T11» — не нагуглилось.

    Подключение и настройка модуля

    Подключить к компьютеру модуль можно через USB-to-TTL-адаптер, описанный мною ранее или любым удобным для Вас способом по интерфейсу UART: например, вытащить плату из UNO и пробросить TX и RX к модулю.


    Штыревые контакты модуля (слева) соединяем с адаптером интерфейса (справа):
    MCU-INT — (не пригодился)
    RX — TX
    TX — RX
    GND — GND
    +5V — VCC
    CLEAR — (не пригодился)
    на этом изображении — упомянутые контакты расположены снизу вверх:

    Подключаем адаптер к USB-разъему компьютера,
    открываем среду разработки Ардуино (или putty, или терминал), выбираем наш виртуальный COM-порт и запускаем «Монитор порта».
    Скорость по умолчанию 9600 бод, разделители строк — \r\n.
    Вводим первую команду:
    в ответ получаем список доступных команд, которые помогут нам изменить имя адаптера видимое другими Bluetooth-устройствами, код доступа (пароль), скорость работы интерфейса и некоторые другие полезняшки:

    Более полное описание команд изложено в этом документе. Надеюсь, не сильно отвлек от празднований и эта инфа поможет Вам в труде и обороне)… Хотя, на Пасху о труде думается не особо.

    Сопряжение с ПК

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

    С помощью такого PHP-скрипта произвёл пару тестов скорости (под Винду):

    230400 baud — 185 Kbps, 9600 baud — 8 Kbps, от погрешности, вносимой терминалом решил абстрагироваться.

    Измерял расстояние работы: на скорости 4800 бод сигнал доставал через две бетонные стены панельного дома на расстоянии 6м, в компе торчал вышеупомянутый свисток…

    Читайте также: