В этом примере показано, как реализовать передатчик Bluetooth ® Low Energy (BLE) с помощью библиотеки Communications Toolbox™ для протокола Bluetooth. Можно либо передать сигналы BLE с помощью радио ADALM-PLUTO, либо записать в файл основной полосы частот (* .bb). Переданный сигнал BLE может быть принят сопутствующим примером, Bluetooth Low Energy Receiver, с любой из следующих настроек: (i) Две платформы SDR, подключенные к одному хосту-компьютеру, который запускает два сеансов работы с MATLAB (ii) Две платформы SDR, подключенные к двум компьютерам, которые запускают отдельные сеансы работы с MATLAB
Для получения дополнительной информации о том, как настроить хост-компьютер для работы с пакетом поддержки ADALM-PLUTO, см. документацию по настройке аппаратных средств управляемого хоста-радио (Communications Toolbox Support Package for Analog Devices ADALM-Pluto Radio).
Чтобы запустить этот пример, вам нужно следующее программное обеспечение:
Библиотека Communications Toolbox для протокола Bluetooth
Для передачи сигналов в режиме реального времени также необходимо радио ADALM-PLUTO и соответствующий пакет поддержки дополнение:
Полный список платформ SDR, поддерживаемых Communications Toolbox, см. в разделе «Поддерживаемые аппаратные средства» страницы обнаружения Программно определяемого радио (SDR).
Bluetooth Special Interest Group (SIG) представила BLE для малой степени связи малой области значений. Стандарт Bluetooth [1] задает уровень Link, который включает слои PHY и MAC. Приложения BLE включают передачу изображений и файла видео между мобильными телефонами, домашнюю автоматизацию и Интернет вещей (IoT).
Спецификации BLE:
Область значений передачи: 2.4-2.4835 ГГц
Каналов РФ: 40
Темп символа: 1 Msym/s, 2 Msym/s
Модуляция: Гауссова минимальная манипуляция сдвигом (GMSK)
Режимы передачи PHY: (i) LE1M - незакодированный PHY со скоростью передачи данных 1 Мбит/с (ii) LE2M - Незкодированный PHY со скоростью передачи данных 2 Мбит/с (iii) LE500K - Кодированный PHY со скоростью передачи данных 125 Кбит/с (iv) LE125K
Стандарт Bluetooth [1] задает форматы пакетов радиоинтерфейса для всех четырех режимов передачи PHY BLE, используя следующие поля:
Преамбула: Преамбула зависит от режима передачи PHY. LE1M mode используется 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);
Сгенерируйте сигналы Baseband 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);
Обработка передатчика
Укажите приемник сигнала как 'File' или '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 можно найти в разделе Общие проблемы и исправления (Пакет поддержки Communications Toolbox для аналоговых устройств ADALM-Pluto Radio).
Том 6 спецификации ядра Bluetooth версии 5.0 Core System Package [Low Energy Controller Volume].