Bluetooth передатчик с низким энергопотреблением

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

  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);

Сгенерируйте сигналы 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).

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

  1. Том 6 спецификации ядра Bluetooth версии 5.0 Core System Package [Low Energy Controller Volume].