Проект исследования и обучения низкоэнергетического Bluetooth (BLE) для MicroPython на плате ESP32.
Терминология написана хаотично, поэтому требуется стандартизация:
плату ESP32
телефон, компьютер и т. п.
устройства, способные подключаться к Bluetooth периферииИспользуя BLE реализовать функцию управления Bluetooth клавиатурой, то есть создание Bluetooth (малой) клавиатуры (HID).
Для создания малой Bluetooth клавиатуры необходимо выполнить следующие функции:* Плата должна реализовать функцию HID, то есть работать как внешнее устройство, которое может быть сканировано и подключено центральным устройством.
Создать схему малой клавиатуры, написать драйвер клавиатуры, чтобы обеспечить возможность ввода данных через плату ESP32 на центральное устройство.
Также аппаратная часть включает световые эффекты, управляемые одним кнопочным переключателем:
Проектирование таблицы символьной отображаемости для унификации и удобства соответствия кнопкам и введенным данным.## Прогресс проекта
Успешно реализована функциональность платы как внешнего устройства, которая может быть сканирована и подключена телефоном и используется для ввода некоторых букв и цифр
Разработана схема малой клавиатуры, жду подходящего времени для производства печатной платы, имеются два варианта
Несколько попыток изготовления платы завершились неудачей, текущий уровень аппаратуры — v0.2.5
, готовлюсь к новым тестам
На данный момент v0.2.6
аппаратная часть кнопок успешно протестирована, теперь можно продолжать дальнейшее развитие...
При первом успешном соединении BLE устройства, при повторном подключении после сброса устройства или закрытия Bluetooth функции на центральном устройстве, устройство остаётся в состоянии "подключено", но центральное устройство никак не реагирует, ни успешно подключившись, ни потеряв соединение. Предположительно это связано с отсутствием настройки тайм-аута соединения, однако текущая версия прошивки устройства не поддерживает установку этого значения
На системах Windows 10 устройство BLE может быть найдено и подключено, но вскоре появляется сообщение "Ошибка драйвера", решение пока не найдено* Причиной вышеуказанных проблем является то, что MicroPython ubluetooth
не поддерживает операции парирования и привязывания между устройствами; эта проблема требует решения...* Я попробовал добавить функцию сопряжения в прошивку, тестирование на iOS
завершилось успешно.
Во время ожидания печати платы я продолжил исследование других возможностей работы с BLE, вот что получилось:
Библиотека MicroPython Beacon: Эта библиотека предназначена для реализации двух типов маяков — Google Eddystone и Apple iBeacon, а также включает приближенную систему измерения расстояния до маяка.
ESP32 BLE - Дистанционное управление: Этот проект предназначен для создания беспроволочного кнопочного управления, однако пока не поддерживает устройства Apple.
ESP32 BLE - Чтение данных температуры и влажности от Mi Temperature Humidity 2: Этот проект немного скучный, он предназначен для чтения данных о температуре и влажности с устройства Xiaomi Temperature Humidity 2.
Библиотека MicroPython BLE: На основе ранее изученной информации о работе с Bluetooth Low Energy в MicroPython были созданы модульные классы, чтобы использовать их в будущем.
ESP32 BLE - Механическая клавиатура: Основной проект, создание механической клавиатуры.* ESP32 BLE - UART: Использование UART
для передачи данных между устройствами
Для непрофессионалов, ниже приведены мои личные выводы, если есть ошибки, буду рад получить замечания
Устройства BLE следуют за спецификацией HOGP (HID over GATT Profile)
Профиль
состоит из множества Услуг
Услуги
состоят из множества Характеристик
Характеристики
состоят из множества Дескрипторов
Например, беспроволочный клавиатурный профиль включает в себя как минимум три Услуги
:
Услуга аккумулятора
Информация о устройстве
Услуга HID
Услуга аккумулятора
включает одну Характеристику
:
Уровень заряда аккумулятора
Уровень заряда аккумулятора
может включать один Дескриптор
:
Клиентский конфигурационный дескриптор характеристики
Сначала, используя спецификацию HOGP
, настроим все Услуги
, Характеристики
и Дескрипторы
.
BLE устройство работает как Периферийное устройство (GATT Сервер)
, регистрируется все Услуги
локально, генерирует payload
, ждет соединения Центрального устройства (GATT Клиента)
.
Затем, как Передающее устройство
, отправляет payload
в радиоканал, включая:* Локальное имя (отображаемое имя)
services
Централизованное устройство
анализирует содержание после получения броадкастового сообщения, отображает его, и при нажатии пользователем на отображаемое содержание начинается процесс привязки с периферийным устройством
. Затем происходит чтение информации характеристик
и дескрипторов
, хранящихся локально в BLE устройстве, что завершает соединение и готовит устройство к получению данных.В данном процессе мы занимаемся только разработкой периферийного устройства (GATT сервер)
.Разработано два варианта схемы для маленького клавиатурного блока:
Схема АЦП выборки использует последовательное соединение одинаковых по модели сопротивлений, как показано на рисунке:
Преимущества:
Недостатки:
Этот метод имеет две возможные области применения:
Схема матрицы клавиш представляет собой обычную схему клавиатуры, которая соединена следующим образом:
Преимущества:
Недостатки:
Эффекты светодиодов также будут использовать схему матрицы (ожидается подтверждение) и использовать кнопки для переключения между четырьмя различными эффектами свечения
Проект Walkline Hardware: Все открытые проекты аппаратной части, включая производственные файлы и BOM таблицы, будут доступны здесь, включая три рассматриваемые в этом проекте схемы
Bluetooth GATT
Таблица внешнего вида: таблица соответствия внешнего вида Bluetooth устройств
Таблица использования USB HID: таблица соответствия значений кнопок клавиатуры
Инструмент дескриптора HID: используется для генерации данных Report Map
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )