11.1. Навіщо Bluetooth

Мережа підключає камеру до Wi-Fi або Ethernet, щоб вона могла взаємодіяти з будь-яким доступним вузлом: ноутбуком в сусідньому кабінеті, сервером на іншому континенті, телефоном у мережі оператора. Але це вимагає певних передумов. Мережа повинна існувати. У зоні досяжності має бути точка доступу, мають бути відомі облікові дані, маршрутизатор має бути готовий видати камері адресу. Камері також доведеться тримати радіомодуль (або порт Ethernet) постійно активним, щоб підтримувати з’єднання.

Bluetooth покриває протилежний випадок – малий радіус дії, без інфраструктури, низьке споживання. Камера і телефон в одному приміщенні обмінюються даними через прямий радіозв’язок, без жодних проміжних ланок. Жодної точки доступу, жодного маршрутизатора, жодної потреби в тому, щоб будь-який з пристроїв був підключений до мережі. Між короткими спалахами активності радіо залишається здебільшого вимкненим, тому акумулятор, якого ледь вистачило б на день у режимі Wi-Fi, може працювати місяцями.

11.1.1. Коли Bluetooth – правильний вибір

Типові сценарії для камери:

  • Телефон або планшет з’єднується з камерою. Користувач поруч відкриває застосунок на телефоні та налаштовує камеру, зчитує її стан або завантажує результати – без необхідності попередньо підключати обидва пристрої до однієї мережі Wi-Fi. Більшість телефонів підтримують Bluetooth Low Energy нативно, тому досвід користувача – «відкрий застосунок, натисни «Підключитися»», а не «спочатку підключись до цієї мережі».

  • Носимий пристрій або датчик передає дані камері. Пульсометр, термометр, маяк, контактний вимикач – усі це пристрої на акумуляторі, побудовані навколо Bluetooth Low Energy. Камера підключається як клієнт, зчитує їхні значення та інтегрує дані в загальну обробку.

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

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

11.1.2. Коли мережа є правильним вибором

Компроміси Bluetooth є невдалими для кількох поширених випадків:

  • Пристрої поза зоною досяжності. Bluetooth Low Energy охоплює кілька метрів на практиці і максимум кілька десятків метрів у відкритому просторі. Для зв’язку через будівлю, через місто або через інтернет потрібні Wi-Fi або Ethernet.

  • Канали з великою пропускною здатністю. Bluetooth Low Energy на практиці забезпечує від десятків до кількох сотень кілобіт на секунду. Для потокової передачі кадрів або будь-якого відеопотоку потрібен Wi-Fi.

  • Групова комунікація типу «багато до багатьох» на спільній інфраструктурі. Приміщення з пристроями, що всі спілкуються з одним сервером, або мережа камер, що обмінюються результатами – такий патерн якраз і призначений для IP-мереж.

11.1.3. Low Energy, а не класичний

«Bluetooth» у повсякденному вжитку охоплює два різних радіостеки. Класичний Bluetooth – той, що використовується в бездротових гарнітурах, автомобільних аудіосистемах і клавіатурах/мишах: радіо рівня голосу та аудіо, порівняно складний стек і помітне споживання. Bluetooth Low Energy (BLE) – це окремий, новіший протокол, що ділить назву бренду і смугу 2,4 ГГц, але майже нічого іншого. Він побудований навколо коротких, рідкісних радіоспалахів для мінімізації середнього споживання і навколо моделі даних «ключ/значення», а не потокового аудіо.

MicroPython на камері підтримує лише BLE. Класичний Bluetooth взагалі не входить до API. «Bluetooth» нижче означає BLE.

11.1.4. Що змінюється порівняно з мережевою моделлю

У BLE є той самий п’ятирівневий стек, що й у мережі, але верхні рівні поводяться інакше:

  • Немає абстракції «відкрий сокет і надсилай байти». BLE побудований навколо невеликої бази даних «ключ/значення», яку одна сторона розміщує, а інша – зчитує, записує або підписується на неї. Камера публікує іменовані значення (рівень заряду, температура, регістр команд); пристрій-партнер зчитує або відстежує їх.

  • Немає адресації за іменем. Пристрої ідентифікують себе шляхом рекламування – короткого широкомовного пакету, що описує, хто вони є; партнери сканують ці пакети та обирають один для підключення.

  • Радіо здебільшого бездіяльне. Обидві сторони домовляються при встановленні з’єднання, як часто прокидатись та спілкуватись. Між сеансами обидві повертаються до сну.

Ці три відмінності і визначають всі інші відхилення BLE API від сокетної моделі.