OpenMV MicroPython OpenMV MicroPython OpenMV MicroPython
  • Головна
  • Підручник
  • Бібліотеки
  • Плати
  • Шилди
  • Датчики
  • Мова
  • CPython
  • Внутрішня структура
  • Журнал змін
  • Ліцензія
/
  • English
  • العربية
  • 简体中文
  • 繁體中文
  • Hrvatski
  • Čeština
  • Nederlands
  • Suomi
  • Français
  • Deutsch
  • עברית
  • Magyar
  • Bahasa Indonesia
  • Italiano
  • 日本語
  • 한국어
  • Polski
  • Português (Brasil)
  • Português (Portugal)
  • Română
  • Русский
  • Español
  • Svenska
  • ไทย
  • Türkçe
  • Українська
  • Tiếng Việt
  • Обговорення
  • Посібник
    • 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. Робота в ролі central
      • 11.11. Канали L2CAP
      • 11.12. Паралельні ролі та множинні з’єднання
      • 11.13. Сполучення і зв’язування
      • 11.14. Підсумок
    • 12. Хост-протокол
    • 13. Інструменти
    • 14. Виробництво
  • Бібліотеки
  • Плати
  • Розширення
  • Датчики
  • Мова
  • CPython
  • Внутрішня будова
  • Журнал змін
  • Ліцензія

На цій сторінці

  • 11.3.1. Радіо
  • 11.3.2. Канальний рівень
  • 11.3.3. Що камера та peer обмінюються
  • 11.3.4. Що Python бачить з усього цього
micropython-doc 0 0
Редагувати цю сторінку
  1. OpenMV MicroPython /
  2. Підручник з OpenMV Cam /
  3. 11. Bluetooth /
  4. 11.3. Радіо та канальний рівень
Переглянути джерело Відкрити в ChatGPT Відкрити в Claude Відкрити в Perplexity

11.3. Радіо та канальний рівень¶

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

11.3.1. Радіо¶

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

  • Три з 40 каналів зарезервовані для реклами – коротких трансляцій, що анонсують присутність пристрою для всіх слухачів. Вони розосереджені по всьому діапазону, щоб слухач міг швидко охопити всі три і щоб перешкоди на будь-якому одному з них навряд чи повністю вимкнули пристрій з ефіру.

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

A horizontal frequency axis from 2400 MHz to 2480 MHz with 40 narrow channel slots drawn on it. Three of the slots, at the bottom edge, middle, and upper edge of the band, are highlighted as "advertising channels". The remaining 37 are labelled "data channels".

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

Радіо передає короткі пакети – щонайбільше кілька мілісекунд – і між ними спить. Саме цей сон робить технологію низькоенергетичною. Типовий BLE peripheral витрачає добре менше одного відсотка свого часу на фактичну передачу; решту часу радіо вимкнено між запланованими подіями.

11.3.2. Канальний рівень¶

Канальний рівень – це найменша одиниця BLE, що спілкується зі своїм аналогом на іншому пристрої. Він виконує чотири завдання.

  • Кадрування пакетів. Кожен пакет містить короткий заголовок (адреса доступу до каналу, довжина пакету, керуючі біти), корисне навантаження і CRC. Отримувач перевіряє CRC і відкидає все пошкоджене.

  • Адресація. Кожен BLE-пристрій має 48-бітну адресу пристрою, що ідентифікує його в радіомережі. Деякі є публічними – апаратний ідентифікатор, призначений виробником, відстежуваний назавжди. Деякі є випадковими – генеруються на пристрої, змінюються періодично і необов’язково зашифровані так, щоб підслуховувач не міг пов’язати дві передачі з одним фізичним пристроєм. Адреси знову з’являються у Рекламування та сканування.

  • Планування з’єднання. Після підключення двох пристроїв канальний рівень планує періодичні радіоподії за послідовністю перескакування – з фіксованим інтервалом з’єднання між ними – і упаковує всі дані, що чекають на рівні GATT вище, в кожну. Обидві сторони повертаються до сну між подіями. Інтервал з’єднання – це параметр, який застосунок може запросити (див. З’єднання).

  • Надійність. Кожен пакет у з’єднанні підтверджується іншою стороною. Канальний рівень повторно надсилає все, що не отримало відповіді, тому рівні вище бачать упорядкований, без втрат потік байтів. На відміну від UDP – відправ пакет і сподівайся на краще на стороні мережі, BLE не має окремого ненадійного режиму при нормальному використанні – кожен пакет у відкритому з’єднанні повторно надсилається, поки не дійде або поки зв’язок не буде визнано втраченим.

Канальний рівень також є місцем, де працює шифрування після того, як пара пристроїв домовилась про ключ під час сполучення (див. Сполучення і зв’язування). Кожен пакет на зашифрованому каналі розшифровується у отримувача до того, як рівні вище його побачать.

11.3.3. Що камера та peer обмінюються¶

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

  • Інтервал з’єднання – як часто дві сторони прокидаються для обміну пакетами, від 7,5 мс до 4 с.

  • Latency peripheral – скільки послідовних інтервалів peripheral може пропустити, якщо нічого не передає, щоб економити енергію.

  • Таймаут нагляду – як довго кожна сторона чекає перед тим, як оголосити зв’язок втраченим, коли інша замовкає.

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

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

11.3.4. Що Python бачить з усього цього¶

Майже нічого. API bluetooth та aioble не надають доступу до каналів, послідовностей перескакування, CRC пакетів або таймерів повторної передачі; все це обробляється всередині BLE-порту та радіо. Частини, що все ж проявляються, – це ті, які надає узгодження під час підключення – інтервал з’єднання, MTU, тип адреси.

Назад
11.2. Стек BLE
Далі
11.4. Рекламування та сканування

Для мікропрограми OpenMV v5.0.0 · на основі MicroPython v1.28 · документація зібрана 18 червня 2026 р. · Copyright © 2014-2026 by OpenMV, Damien P. George, and others.

Створено за допомогою Sphinx з використанням теми Shibuya.