exponenta event banner

Передатчик низкой энергии Bluetooth

В этом примере показано, как реализовать передатчик 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 описывается следующим образом:

  1. Создание PDU канального уровня

  2. Генерация сигналов IQ основной полосы

  3. Обработка датчика

Создание 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).

Избранная библиография

  1. Том 6 спецификации ядра Bluetooth, версия 5.0 Пакет основной системы [Low Energy Controller Volume].