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

В этом примере показано, как реализовать Bluetooth® Low Energy (BLE) передатчик, пользующийся Библиотекой Communications Toolbox™ для Протокола Bluetooth. Можно или передать сигналы BLE с помощью радио ADALM-PLUTO или записать в основополосный файл (*.bb). Переданный сигнал BLE может быть получен сопутствующим примером, Bluetooth Низкий энергетический Получатель, с любой из следующей настройки: (i) Две платформы SDR, соединенные с тем же хостом - компьютером, который запускает два сеанса работы с MATLAB (ii) Две платформы SDR, соединенные с двумя компьютерами, которые запускают отдельные сеансы работы с MATLAB.

Отошлите к Ведомой Радио-Хостом Настройке оборудования (Пакет Поддержки Communications Toolbox для Аналоговых устройств Радио ADALM-Pluto) документацию для получения дополнительной информации о том, как сконфигурировать ваш хост - компьютер, чтобы работать с Пакетом Поддержки для Радио ADALM-PLUTO.

Необходимое аппаратное и программное обеспечение

Чтобы запустить этот пример, вам нужно следующее программное обеспечение:

  • Библиотека Communications Toolbox для протокола Bluetooth

Чтобы передать сигналы в режиме реального времени, вам также нужны радио ADALM-PLUTO и соответствующее Дополнение пакета поддержки:

Для полного списка Communications Toolbox поддерживаемые платформы SDR обратитесь к разделу Supported Hardware страницы открытия Программно определяемого радио (SDR).

Фон

Специальная группа (SIG) Bluetooth ввела 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 со скоростью передачи данных 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). Максимальный размер сообщения составляет 2 080 битов.

  • Поля завершения: Два 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. Сгенерируйте слой PDUs ссылки

  2. Сгенерируйте основополосные формы волны IQ

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

Сгенерируйте слой ссылки PDUs

Соединитесь слой PDUs может или рекламировать канал PDUs или канал данных PDUs. Можно сконфигурировать и сгенерировать рекламный канал PDUs, использующий bleLLAdvertisingChannelPDUConfig и функции bleLLAdvertisingChannelPDU соответственно. Можно сконфигурировать и сгенерировать канал данных PDUs, использующий 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'.

  • File:Uses comm.BasebandFileWriter записать основополосный файл.

  • ADALM-PLUTO: использует sdrtx Системный объект, чтобы передать живой сигнал от оборудования 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 Низкий энергетический Получатель может использоваться, чтобы декодировать форму волны, переданную этим примером. Можно также использовать этот пример, чтобы передать канал данных PDUs путем изменения индекса канала, указателя и центральных значений частоты в обоих примеры.

Поиск и устранение проблем

Общие советы для поиска и устранения неисправностей оборудования SDR и Пакета Поддержки Communications Toolbox для Радио ADALM-PLUTO могут быть найдены в Типичных проблемах и Фиксируют (Пакет Поддержки Communications Toolbox для Аналоговых устройств Радио ADALM-Pluto).

Выбранная библиография

  1. Объем 6 из спецификации ядра Bluetooth, системный пакет ядра версии 5.0 [низкий энергетический контроллер объем].

Для просмотра документации необходимо авторизоваться на сайте