MicroPython:Библиотеки/ubluetooth: различия между версиями
Myagkij (обсуждение | вклад) |
Myagkij (обсуждение | вклад) Нет описания правки |
||
(не показано 12 промежуточных версий этого же участника) | |||
Строка 52: | Строка 52: | ||
У GATT-сервера есть набор зарегистрированных сервисов. Каждый сервис может содержать характеристики, каждое из которых имеет некоторое значение. Кроме того, характеристики могут содержать дескрипторы, которые тоже могут содержать значения. | У GATT-сервера есть набор зарегистрированных сервисов. Каждый сервис может содержать характеристики, каждое из которых имеет некоторое значение. Кроме того, характеристики могут содержать дескрипторы, которые тоже могут содержать значения. | ||
Эти значения хранятся локально, и доступ к ним осуществляется по их «указателю» (аргумент value_handle в описаниях ниже), который генерируется во время регистрации сервиса. Кроме того, удаленное клиентское устройство может считывать или записывать эти значения. Также сервер может «уведомлять» характеристику клиента, к которому он подключен, при помощи так называемого «указателя соединения» (аргумент conn_handle в описаниях ниже). | |||
Эти значения хранятся локально, и доступ к ним осуществляется по их ''«указателю»'' (аргумент ''value_handle'' в описаниях ниже), который генерируется во время регистрации сервиса. Кроме того, удаленное клиентское устройство может считывать или записывать эти значения. Также сервер может «уведомлять» характеристику клиента, к которому он подключен, при помощи так называемого ''«указателя соединения»'' (аргумент ''conn_handle'' в описаниях ниже). | |||
GATT-сервером может быть устройство, работающее и в периферийном, и в центральном режиме, но в большинстве случаев это скорее периферийное серверное устройство. | GATT-сервером может быть устройство, работающее и в периферийном, и в центральном режиме, но в большинстве случаев это скорее периферийное серверное устройство. | ||
По умолчанию максимальный размер характеристик и дескрипторов составляет 20 байт. Любые данные, которые клиент попытается в них записать, будет обрезано до этого размера. Впрочем, любая локальная запись увеличит этот порог, поэтому если вам нужно, чтобы клиент записал в заданную характеристику более крупные данные, после регистрации используйте gatts_write() – например, gatts_write(char_handle, bytes(100)). | |||
* BLE.gatts_register_services( | По умолчанию максимальный размер характеристик и дескрипторов составляет ''20 байт''. Любые данные, которые клиент попытается в них записать, будет обрезано до этого размера. Впрочем, любая локальная запись увеличит этот порог, поэтому если вам нужно, чтобы клиент записал в заданную характеристику более крупные данные, после регистрации используйте gatts_write() – например, gatts_write(char_handle, bytes(100)). | ||
* [[MicroPython:Библиотеки/ubluetooth/Класс BLE/BLE.gatts_register_services()|BLE.gatts_register_services()]] | |||
* [[MicroPython:Библиотеки/ubluetooth/Класс BLE/BLE.gatts_read()|BLE.gatts_read()]] | |||
* [[MicroPython:Библиотеки/ubluetooth/Класс BLE/BLE.gatts_write()|BLE.gatts_write()]] | |||
* [[MicroPython:Библиотеки/ubluetooth/Класс BLE/BLE.gatts_notify()|BLE.gatts_notify()]] | |||
* [[MicroPython:Библиотеки/ubluetooth/Класс BLE/BLE.gatts_indicate()|BLE.gatts_indicate()]] | |||
* [[MicroPython:Библиотеки/ubluetooth/Класс BLE/BLE.gatts_set_buffer()|BLE.gatts_set_buffer()]] | |||
* BLE.gatts_notify( | |||
* BLE.gatts_indicate( | |||
* BLE.gatts_set_buffer( | |||
=== Режим GATT-клиента === | === Режим GATT-клиента === | ||
GATT-клиент может находить и считывать/записывать характеристики с удаленного GATT-сервера. | GATT-клиент может находить и считывать/записывать характеристики с удаленного GATT-сервера. | ||
Для устройства в центральном режиме более характерна роль GATT-клиента, но периферийное устройство тоже может быть клиентом, чтобы найти информацию о центральном устройстве, которое к нему подключено (например, чтобы прочесть название устройства с его информационного сервиса). | Для устройства в центральном режиме более характерна роль GATT-клиента, но периферийное устройство тоже может быть клиентом, чтобы найти информацию о центральном устройстве, которое к нему подключено (например, чтобы прочесть название устройства с его информационного сервиса). | ||
* BLE.gattc_discover_services( | |||
* [[MicroPython:Библиотеки/ubluetooth/Класс BLE/BLE.gattc_discover_services()|BLE.gattc_discover_services()]] | |||
* [[MicroPython:Библиотеки/ubluetooth/Класс BLE/BLE.gattc_discover_characteristics()|BLE.gattc_discover_characteristics()]] | |||
* BLE.gattc_discover_characteristics( | * [[MicroPython:Библиотеки/ubluetooth/Класс BLE/BLE.gattc_discover_descriptors()|BLE.gattc_discover_descriptors()]] | ||
* [[MicroPython:Библиотеки/ubluetooth/Класс BLE/BLE.gattc_read()|BLE.gattc_read()]] | |||
* [[MicroPython:Библиотеки/ubluetooth/Класс BLE/BLE.gattc_write()|BLE.gattc_write()]] | |||
* BLE.gattc_discover_descriptors( | |||
* BLE.gattc_read( | |||
* BLE.gattc_write( | |||
== Класс UUID == | == Класс UUID == | ||
Строка 109: | Строка 81: | ||
=== Конструктор === | === Конструктор === | ||
* Класс ubluetooth.UUID( | * [[MicroPython:Библиотеки/ubluetooth/Класс UUID/ubluetooth.UUID()|ubluetooth.UUID()]] | ||
=== Константы === | === Константы === | ||
* ubluetooth.FLAG_READ | * [[MicroPython:Библиотеки/ubluetooth/Класс UUID/ubluetooth.FLAG_READ|ubluetooth.FLAG_READ]] | ||
* ubluetooth.FLAG_WRITE | * [[MicroPython:Библиотеки/ubluetooth/Класс UUID/ubluetooth.FLAG_WRITE|ubluetooth.FLAG_WRITE]] | ||
* ubluetooth.FLAG_NOTIFY | * [[MicroPython:Библиотеки/ubluetooth/Класс UUID/ubluetooth.FLAG_NOTIFY|ubluetooth.FLAG_NOTIFY]] | ||
=См.также= | =См.также= |
Текущая версия от 20:41, 3 октября 2020
Модуль ubluetooth – низкоуровневый Bluetooth[1]
В этом модуле реализован интерфейс для Bluetooth-контроллера платы. В данный момент поддерживается BLE (Bluetooth Low Energy) в режимах Central (центральный узел), Peripheral (периферия), Broadcaster (объявитель) и Observer (наблюдатель), а также режимы GATT-сервера и GATT-клиента. Кроме того, устройство может одновременно работать в нескольких режимах.
Эти API созданы с расчетом на соответствие низкоуровневому Bluetooth-протоколу, а также служат строительными кирпичиками для высокоуровневых абстракций вроде специфических типов устройств. Примечание: Этот модуль по-прежнему в разработке, поэтому его классы, функции, методы и константы в будущем, возможно, претерпят некоторые изменения.
Класс BLE
Конструктор
Настройки
Управление событиями
Режим объявителя (рассылка объявлений)
Режим наблюдателя (сканирование)
Режим центрального устройства
Центральное устройство может подключаться к периферийным устройствам, которые оно нашло в режиме наблюдателя (см. функцию gp_scan()), или к устройствам с известным адресом.
Режим периферийного устройства
Периферийное устройство обычно рассылает пакеты, сообщающие о том, что оно является присоединяемым устройством (см. функцию gap_advertise()). Обычно оно функционирует как GATT-сервер, но при условии, что у него есть сервисы и характеристики, зарегистрированные с помощью gatts_register_services().
При подключении центрального устройства будет запущено событие _IRQ_CENTRAL_CONNECT.
Режимы центрального и периферийного устройства
Режим GATT-сервера
У GATT-сервера есть набор зарегистрированных сервисов. Каждый сервис может содержать характеристики, каждое из которых имеет некоторое значение. Кроме того, характеристики могут содержать дескрипторы, которые тоже могут содержать значения.
Эти значения хранятся локально, и доступ к ним осуществляется по их «указателю» (аргумент value_handle в описаниях ниже), который генерируется во время регистрации сервиса. Кроме того, удаленное клиентское устройство может считывать или записывать эти значения. Также сервер может «уведомлять» характеристику клиента, к которому он подключен, при помощи так называемого «указателя соединения» (аргумент conn_handle в описаниях ниже). GATT-сервером может быть устройство, работающее и в периферийном, и в центральном режиме, но в большинстве случаев это скорее периферийное серверное устройство.
По умолчанию максимальный размер характеристик и дескрипторов составляет 20 байт. Любые данные, которые клиент попытается в них записать, будет обрезано до этого размера. Впрочем, любая локальная запись увеличит этот порог, поэтому если вам нужно, чтобы клиент записал в заданную характеристику более крупные данные, после регистрации используйте gatts_write() – например, gatts_write(char_handle, bytes(100)).
- BLE.gatts_register_services()
- BLE.gatts_read()
- BLE.gatts_write()
- BLE.gatts_notify()
- BLE.gatts_indicate()
- BLE.gatts_set_buffer()
Режим GATT-клиента
GATT-клиент может находить и считывать/записывать характеристики с удаленного GATT-сервера.
Для устройства в центральном режиме более характерна роль GATT-клиента, но периферийное устройство тоже может быть клиентом, чтобы найти информацию о центральном устройстве, которое к нему подключено (например, чтобы прочесть название устройства с его информационного сервиса).
- BLE.gattc_discover_services()
- BLE.gattc_discover_characteristics()
- BLE.gattc_discover_descriptors()
- BLE.gattc_read()
- BLE.gattc_write()