Этот пример показывает, как реализовать 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) режимы показывают в фигуре ниже:
Общая структура примера передатчика BLE описана можно следующим образом:
Сгенерируйте слой PDUs ссылки
Сгенерируйте основополосные формы волны IQ
Обработка передатчика
Сгенерируйте слой ссылки 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 = comm.internal.utilities.de2biBase2RightMSB(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') 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).
Объем 6 из спецификации ядра Bluetooth, системный пакет ядра версии 5.0 [низкий энергетический контроллер объем].