OpenMV MicroPython OpenMV MicroPython OpenMV MicroPython
  • Home
  • Tutorial
  • Libraries
  • Boards
  • Shields
  • Sensors
  • Language
  • CPython
  • Internals
  • Changelog
  • License
/
  • English
  • 简体中文
  • 繁體中文
  • Deutsch
  • 日本語
  • Español
  • Русский
  • Français
  • 한국어
  • Italiano
  • Português
  • Nederlands
  • Română
  • Hrvatski
  • Čeština
  • Polski
  • Suomi
  • Svenska
  • Magyar
  • Türkçe
  • Discussion
  • Руководство
    • 1. Быстрый старт
    • 2. Обзор Python
    • 3. Управление оборудованием
    • 4. Датчики изображения
    • 5. Обработка изображений
    • 6. NumPy
    • 7. Машинное обучение
    • 8. Asyncio
    • 9. Сети
    • 10. Веб-серверы
    • 11. Bluetooth
      • 11.1. Зачем нужен Bluetooth
      • 11.2. Стек BLE
      • 11.3. Радиосвязь и канальный уровень
      • 11.4. Реклама и сканирование
      • 11.5. Соединения
      • 11.6. Сервисы и характеристики
      • 11.7. Операции GATT
      • 11.8. Модуль aioble
      • 11.9. Работа в роли периферийного устройства
      • 11.10. Работа в роли центрального устройства
      • 11.11. Каналы L2CAP
      • 11.12. Одновременные роли и несколько подключений
      • 11.13. Сопряжение и привязка
      • 11.14. Заключение
    • 12. Протокол хоста
    • 13. Инструменты
    • 14. Производство
  • Библиотеки
  • Платы
  • Шилды
  • Датчики
  • Язык
  • CPython
  • Внутреннее устройство
  • История изменений
  • Лицензия

On this page

  • 11.3.1. Радиосвязь
  • 11.3.2. Канальный уровень
  • 11.3.3. Что разделяют камера и одноранговое устройство
  • 11.3.4. Что из всего этого видит Python
micropython-doc 0 0
Edit this page
  1. OpenMV MicroPython /
  2. Руководство по OpenMV Cam /
  3. 11. Bluetooth /
  4. 11.3. Радиосвязь и канальный уровень
View Source Open in ChatGPT Open in Claude Open in Perplexity

11.3. Радиосвязь и канальный уровень¶

Два нижних уровня стека BLE почти полностью автоматичны с точки зрения Python – радиокремний и уровни, которые MicroPython запускает поверх него, обрабатывают всё, от выбора канала до повторной передачи потерянного пакета. Три из принимаемых ими решений всё же проявляются в обращённом к пользователю API: мощность, дальность и пропускная способность.

11.3.1. Радиосвязь¶

BLE использует тот же диапазон 2,4 ГГц промышленно-научно-медицинского назначения (ISM), что и Wi-Fi, микроволновые печи и большинство других маломощных беспроводных технологий малого радиуса действия. Диапазон разделён на 40 каналов шириной 2 МГц.

  • Три из 40 каналов зарезервированы для рекламы – коротких широковещательных сообщений, объявляющих о присутствии устройства всем, кто слушает. Они разнесены по диапазону, так что слушатель может быстро просканировать все три и так что помеха на любом одном из них вряд ли полностью выведет устройство из эфира.

  • Тридцать семь – это каналы данных. После того как два устройства соединяются, они обмениваются пакетами по этим каналам, перескакивая между ними по псевдослучайной последовательности, которую обе стороны согласуют во время установления соединения. Адаптивная перестройка частоты позволяет любой из сторон пометить канал как плохой (сильная помеха Wi-Fi, микроволновка, соседняя BLE-сеть), чтобы последовательность его пропускала.

Горизонтальная ось частот от 2400 МГц до 2480 МГц с нарисованными на ней 40 узкими слотами каналов. Три слота, у нижнего края, в середине и у верхнего края диапазона, выделены как "рекламные каналы". Остальные 37 помечены как "каналы данных".

40 каналов BLE в диапазоне 2,4 ГГц. Три предназначены для рекламы, остальные несут трафик по открытому соединению.¶

Радио передаёт короткие пакеты – длиной максимум пару миллисекунд – и спит в промежутках между ними. Именно этот сон делает технологию низкоэнергетической. Типичное периферийное устройство BLE проводит существенно менее одного процента времени за фактической передачей; остальное время радио выключено между запланированными событиями.

11.3.2. Канальный уровень¶

Канальный уровень – это наименьшая единица BLE, которая общается со своим аналогом на другом устройстве. Он выполняет четыре задачи.

  • Формирование кадров пакетов. Каждый пакет несёт короткий заголовок (адрес доступа к каналу, длину пакета, управляющие биты), полезную нагрузку и CRC. Приёмник проверяет CRC и отбрасывает всё повреждённое.

  • Адресация. У каждого BLE-устройства есть 48-битный адрес устройства, который идентифицирует его в эфире. Некоторые из них публичные – аппаратный идентификатор, назначенный производителем, прослеживаемый навсегда. Некоторые случайные – генерируются на устройстве, периодически меняются и опционально шифруются, так что перехватчик не может связать две передачи с одним и тем же физическим устройством. Адреса снова появляются в Реклама и сканирование.

  • Планирование соединения. После того как два устройства соединяются, канальный уровень планирует периодические радиособытия в последовательности перескоков – с фиксированным интервалом соединения между ними – и упаковывает в каждое из них любые данные, поставленные в очередь вышестоящим уровнем GATT. Обе стороны снова засыпают между событиями. Интервал соединения – это параметр, который приложение может запросить (см. Соединения).

  • Надёжность. Каждый пакет в соединении подтверждается другой стороной. Канальный уровень повторно передаёт всё, что не получило ответа, так что вышестоящие уровни видят упорядоченный поток байтов без потерь. В отличие от UDP – отправь пакет и надейся на лучшее на стороне сети, у BLE при обычном использовании нет отдельного ненадёжного режима – каждый пакет в открытом соединении повторяется до тех пор, пока не дойдёт или пока связь не будет объявлена потерянной.

Канальный уровень – это также место, где работает шифрование, после того как пара устройств согласовала ключ во время сопряжения (см. Сопряжение и привязка). Каждый пакет на зашифрованной связи расшифровывается на приёмнике прежде, чем вышестоящие уровни его увидят.

11.3.3. Что разделяют камера и одноранговое устройство¶

Радиомодули на обоих концах согласуют во время установления соединения горстку параметров, управляющих обменом:

  • Интервал соединения – как часто обе стороны просыпаются для обмена пакетами, в диапазоне от 7,5 мс до 4 с.

  • Латентность периферийного устройства – сколько подряд идущих интервалов периферийное устройство может пропустить, если ему нечего сказать, чтобы сэкономить энергию.

  • Тайм-аут наблюдения – как долго любая из сторон ждёт, прежде чем объявить связь потерянной, когда другая замолкает.

  • MTU – наибольший одиночный пакет, который любая из сторон доставит в GATT (по умолчанию 23 байта, может быть согласован в большую сторону).

Радиосвязь и канальный уровень вместе отвечают за доставку надёжных, упорядоченных пакетов от одного устройства к другому, удерживая при этом оба радиомодуля выключенными как можно дольше. Каждый вышестоящий уровень волен вести себя так, как будто между двумя конечными точками существует чистый, приватный канал байтов.

11.3.4. Что из всего этого видит Python¶

Почти ничего. API bluetooth и aioble не предоставляют каналы, последовательности перескоков, CRC пакетов или таймеры повторной передачи; всё это обрабатывается внутри BLE-порта и радиомодуля. Те части, которые действительно проявляются, – это те, что раскрывает согласование во время установления соединения: интервал соединения, MTU, тип адреса.

Previous
11.2. Стек BLE
Next
11.4. Реклама и сканирование

For OpenMV firmware v5.0.0 · based on MicroPython v1.28 · docs built 16 Jun 2026 · Copyright © 2014-2026 by OpenMV, Damien P. George, and others.

Made with Sphinx using the Shibuya theme.