В этом примере показано, как реализовать передатчик Bluetooth ® Low Energy (BLE) с использованием библиотеки Communications Toolbox™ Library для протокола Bluetooth. Сигналы BLE можно передавать с помощью радиоблока ADALM-PLUTO или записывать в файл основной полосы частот (* .bb). Передаваемый сигнал BLE может быть принят сопутствующим примером, Bluetooth Low Energy Receiver, с любой из следующих настроек: (i) две платформы SDR, соединенные с одним и тем же главным компьютером, который выполняет две сессии MATLAB (ii) две платформы SDR, соединенные с двумя компьютерами, которые выполняют отдельные сессии MATLAB.
Дополнительные сведения о том, как настроить хост-компьютер для работы с пакетом поддержки ADALM-PLUTO, см. в документации по настройке аппаратного обеспечения управляемого хоста (пакет поддержки Communications Toolbox для аналоговых устройств ADALM-Pluto Radio).
Для выполнения этого примера необходимо следующее программное обеспечение:
Библиотека коммуникационных инструментов для протокола Bluetooth
Для передачи сигналов в режиме реального времени также требуется радио ADALM-PLUTO и соответствующий пакет поддержки Add-On:
Полный список платформ SDR, поддерживаемых Communications Toolbox, см. в разделе Поддерживаемые аппаратные средства на странице обнаружения программно-определяемого радио (SDR).
Группа Bluetooth Special Interest Group (SIG) представила BLE для маломощной связи малой дальности. Стандарт Bluetooth [1] определяет канальный уровень, который включает в себя уровни PHY и MAC. Приложения BLE включают передачу изображений и видеофайлов между мобильными телефонами, автоматизацию дома и Интернет вещей (IoT).
Технические характеристики BLE:
Диапазон частот передачи: 2,4-2,4835 ГГц
Радиочастотные каналы: 40
Скорость передачи символов: 1 Мсым/с, 2 Мсым/с
Модуляция: гауссова минимальная манипуляция сдвигом (GMSK)
Режимы передачи PHY: (i) LE1M - некодированный PHY со скоростью передачи данных 1 Мбит/с (ii) LE2M - некодированный PHY со скоростью передачи данных 2 Мбит/с (iii) LE500K - кодированный PHY со скоростью передачи данных 500 кбит/с (iv) LE125K - кодированный PHY со скоростью передачи данных 125 кбит/с
Стандарт Bluetooth [1] определяет форматы пакетов радиоинтерфейса для всех четырех режимов передачи PHY BLE, используя следующие поля:
Преамбула: преамбула зависит от режима передачи PHY. LE1M режиме используется 8-битовая последовательность альтернативных нулей и единиц, '01010101'. LE2M использует 16-битную последовательность альтернативных нулей и единиц, '0101...'. LE500K и способы LE125K используют 80 последовательностей битов нолей и, полученных, повторяясь '00111100' десять раз.
Адрес доступа: Указывает адрес соединения, совместно используемый двумя устройствами BLE с использованием 32-разрядной последовательности.
Индикатор кодирования: 2-разрядная последовательность, используемая для дифференциации кодированных режимов (LE125K и LE500K).
Полезная нагрузка: входные биты сообщения, включающие как блок протокольных данных (PDU), так и циклический контроль избыточности (CRC). Максимальный размер сообщения - 2080 бит.
Поля окончания: два 3-разрядных вектора нулей, используемых при кодировании с прямым исправлением ошибок. Поля окончания присутствуют только для кодированных режимов (LE500K и LE125K).
Формат пакетов для некодированных режимов PHY (LE1M и LE2M) показан на рисунке ниже:

Формат пакетов для кодированных режимов PHY (LE500K и LE125K) показан на рисунке ниже:

% Check if the 'Communications Toolbox Library for the Bluetooth Protocol' % support package is installed or not. commSupportPackageCheck('BLUETOOTH');
Общая структура примера передатчика BLE описывается следующим образом:
Создание PDU канального уровня
Генерация сигналов IQ основной полосы
Обработка датчика
Создание PDU канального уровня
Блоки PDU канального уровня могут быть либо блоками PDU рекламного канала, либо блоками PDU канала данных. Можно настроить и создать PDU рекламных каналов с помощью bleLLAdvertisingChannelPDUConfig и bleLLAdvertisingChannelPDU соответственно. PDU каналов данных можно конфигурировать и генерировать с помощью bleLLDataChannelPDUConfig и bleLLDataChannelPDU соответственно.
% Configure an advertising channel PDU cfgLLAdv = bleLLAdvertisingChannelPDUConfig; cfgLLAdv.PDUType = 'Advertising indication'; cfgLLAdv.AdvertisingData = '0123456789ABCDEF'; cfgLLAdv.AdvertiserAddress = '1234567890AB'; % Generate an advertising channel PDU messageBits = bleLLAdvertisingChannelPDU(cfgLLAdv);
Генерация IQ-сигналов основной полосы
Вы можете использовать bleWaveformGenerator функция для генерации совместимых со стандартами форм сигнала.
phyMode = 'LE1M'; % Select one mode from the set {'LE1M','LE2M','LE500K','LE125K'} sps = 8; % Samples per symbol channelIdx = 37; % Channel index value in the range [0,39] accessAddLen = 32;% Length of access address accessAddHex = '8E89BED6'; % Access address value in hexadecimal accessAddBin = de2bi(hex2dec(accessAddHex),accessAddLen)'; % Access address in binary % Symbol rate based on |'Mode'| symbolRate = 1e6; if strcmp(phyMode,'LE2M') symbolRate = 2e6; end % Generate BLE waveform txWaveform = bleWaveformGenerator(messageBits,... 'Mode', phyMode,... 'SamplesPerSymbol',sps,... 'ChannelIndex', channelIdx,... 'AccessAddress', accessAddBin); % Setup spectrum viewer spectrumScope = dsp.SpectrumAnalyzer( ... 'SampleRate', symbolRate*sps,... 'SpectrumType', 'Power density', ... 'SpectralAverages', 10, ... 'YLimits', [-130 0], ... 'Title', 'Baseband BLE Signal Spectrum', ... 'YLabel', 'Power spectral density'); % Show power spectral density of the BLE signal spectrumScope(txWaveform);

Обработка датчика
Укажите приемник сигнала как файл или ADALM-PLUTO.
Файл: Использует comm.BasebandFileWriter для записи файла основной полосы частот.
ADALM-PLUTO: использует sdrtx (Communications Toolbox Support Package for Analog Devices ADALM-Pluto Radio) Системный объект для передачи живого сигнала от аппаратных средств SDR.
% Initialize the parameters required for signal source txCenterFrequency = 2.402e9; % Varies based on channel index value txFrameLength = length(txWaveform); txNumberOfFrames = 1e4; txFrontEndSampleRate = symbolRate*sps; % The default signal source is 'File' signalSink = 'File'; if strcmp(signalSink,'File') sigSink = comm.BasebandFileWriter('CenterFrequency',txCenterFrequency,... 'Filename','bleCaptures.bb',... 'SampleRate',txFrontEndSampleRate); sigSink(txWaveform); % Writing to a baseband file 'bleCaptures.bb' elseif strcmp(signalSink,'ADALM-PLUTO') % First check if the HSP exists if isempty(which('plutoradio.internal.getRootDir')) error(message('comm_demos:common:NoSupportPackage', ... 'Communications Toolbox Support Package for ADALM-PLUTO Radio',... ['<a href="https://www.mathworks.com/hardware-support/' ... 'adalm-pluto-radio.html">ADALM-PLUTO Radio Support From Communications Toolbox</a>'])); end connectedRadios = findPlutoRadio; % Discover ADALM-PLUTO radio(s) connected to your computer radioID = connectedRadios(1).RadioID; sigSink = sdrtx( 'Pluto',... 'RadioID', radioID,... 'CenterFrequency', txCenterFrequency,... 'Gain', 0,... 'SamplesPerFrame', txFrameLength,... 'BasebandSampleRate',txFrontEndSampleRate); % The transfer of baseband data to the SDR hardware is enclosed in a % try/catch block. This means that if an error occurs during the % transmission, the hardware resources used by the SDR System % object(TM) are released. currentFrame = 1; try while currentFrame <= txNumberOfFrames % Data transmission sigSink(txWaveform); % Update the counter currentFrame = currentFrame + 1; end catch ME release(sigSink); rethrow(ME) end else error('Invalid signal sink. Valid entries are File and ADALM-PLUTO.'); end % Release the signal sink release(sigSink)
Дополнительный пример Bluetooth Low Energy Receiver может использоваться для декодирования формы сигнала, передаваемого этим примером. Этот пример можно также использовать для передачи PDU канала данных путем изменения индекса канала, адреса доступа и значений центральной частоты в обоих примерах.
Общие советы по устранению неполадок оборудования SDR и пакет поддержки Communications Toolbox для ADALM-PLUTO Radio можно найти в документе Общие проблемы и исправления (пакет поддержки Communications Toolbox для аналоговых устройств ADALM-Pluto Radio).
Том 6 спецификации ядра Bluetooth, версия 5.0 Пакет основной системы [Low Energy Controller Volume].