1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/walkline-esp32-ble

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

ESP32 BLE

Введение в проект

Проект исследования и обучения низкоэнергетического Bluetooth (BLE) для MicroPython на плате ESP32.

Определение терминологии

Терминология написана хаотично, поэтому требуется стандартизация:

  • BLE — низкоэнергетический Bluetooth (Bluetooth Low Energy, Bluetooth LE)
  • Peripheral, BLE устройство, внешнее устройство, устройство — представляет собой плату ESP32
  • Central, центральное устройство — представляет собой телефон, компьютер и т. п. устройства, способные подключаться к Bluetooth периферии

Цели проекта

Используя BLE реализовать функцию управления Bluetooth клавиатурой, то есть создание Bluetooth (малой) клавиатуры (HID).

Для создания малой Bluetooth клавиатуры необходимо выполнить следующие функции:* Плата должна реализовать функцию HID, то есть работать как внешнее устройство, которое может быть сканировано и подключено центральным устройством.

  • Создать схему малой клавиатуры, написать драйвер клавиатуры, чтобы обеспечить возможность ввода данных через плату ESP32 на центральное устройство.

  • Также аппаратная часть включает световые эффекты, управляемые одним кнопочным переключателем:

    • Выключение всех светодиодов (по умолчанию)
    • Включение всех светодиодов
    • Дыхательный режим свечения
    • Клик по кнопке для свечения
  • Проектирование таблицы символьной отображаемости для унификации и удобства соответствия кнопкам и введенным данным.## Прогресс проекта

  • Видео демонстрация

  • Успешно реализована функциональность платы как внешнего устройства, которая может быть сканирована и подключена телефоном и используется для ввода некоторых букв и цифр

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

  • Несколько попыток изготовления платы завершились неудачей, текущий уровень аппаратуры — v0.2.5, готовлюсь к новым тестам

  • На данный момент v0.2.6 аппаратная часть кнопок успешно протестирована, теперь можно продолжать дальнейшее развитие...

Знанные проблемы

  • При первом успешном соединении BLE устройства, при повторном подключении после сброса устройства или закрытия Bluetooth функции на центральном устройстве, устройство остаётся в состоянии "подключено", но центральное устройство никак не реагирует, ни успешно подключившись, ни потеряв соединение. Предположительно это связано с отсутствием настройки тайм-аута соединения, однако текущая версия прошивки устройства не поддерживает установку этого значения

  • На системах Windows 10 устройство BLE может быть найдено и подключено, но вскоре появляется сообщение "Ошибка драйвера", решение пока не найдено* Причиной вышеуказанных проблем является то, что MicroPython ubluetooth не поддерживает операции парирования и привязывания между устройствами; эта проблема требует решения...* Я попробовал добавить функцию сопряжения в прошивку, тестирование на iOS завершилось успешно.

Ветвные проекты

Во время ожидания печати платы я продолжил исследование других возможностей работы с BLE, вот что получилось:

Знания о BLE

Для непрофессионалов, ниже приведены мои личные выводы, если есть ошибки, буду рад получить замечания

  • Устройства BLE следуют за спецификацией HOGP (HID over GATT Profile)

  • Профиль состоит из множества Услуг

  • Услуги состоят из множества Характеристик

  • Характеристики состоят из множества Дескрипторов

    Например, беспроволочный клавиатурный профиль включает в себя как минимум три Услуги:

    • Услуга аккумулятора
    • Информация о устройстве
    • Услуга HID

    Услуга аккумулятора включает одну Характеристику:

    • Уровень заряда аккумулятора

    Уровень заряда аккумулятора может включать один Дескриптор:

    • Клиентский конфигурационный дескриптор характеристики

Программная часть

Сначала, используя спецификацию HOGP, настроим все Услуги, Характеристики и Дескрипторы.

BLE устройство работает как Периферийное устройство (GATT Сервер), регистрируется все Услуги локально, генерирует payload, ждет соединения Центрального устройства (GATT Клиента).

Затем, как Передающее устройство, отправляет payload в радиоканал, включая:* Локальное имя (отображаемое имя)

  • Все services
  • Внешний вид (иконка рядом с отображаемым именем)Централизованное устройство анализирует содержание после получения броадкастового сообщения, отображает его, и при нажатии пользователем на отображаемое содержание начинается процесс привязки с периферийным устройством. Затем происходит чтение информации характеристик и дескрипторов, хранящихся локально в BLE устройстве, что завершает соединение и готовит устройство к получению данных.В данном процессе мы занимаемся только разработкой периферийного устройства (GATT сервер).

Раздел аппаратной части (кнопки)

Разработано два варианта схемы для маленького клавиатурного блока:

  • Схема АЦП выборки
  • Схема матрицы клавиш

Схема АЦП выборки

Схема АЦП выборки использует последовательное соединение одинаковых по модели сопротивлений, как показано на рисунке:

Схема работы АЦП

Преимущества:

  • Небольшое количество необходимых входов/выходов (IO), один IO может обслуживать минимум десять кнопок (не проверено)
  • Удобство управления закупками благодаря использованию однотипных сопротивлений

Недостатки:

  • Последовательное соединение позволяет обнаружить только одно нажатие кнопки за раз, то есть одновременно можно обнаружить только одну кнопку

Этот метод имеет две возможные области применения:

  • Как маленькая клавиатура, так как она не требует возможности одновременного нажатия нескольких кнопок
  • В сочетании с двумя каналами АЦП, одним из которых управляет основные клавиши (например Ctrl, Alt, Shift), а вторым используется для простой вводной информации

Схема матрицы клавиш

Схема матрицы клавиш представляет собой обычную схему клавиатуры, которая соединена следующим образом:

Схема работы матрицы клавишПреимущества:

  • Полностью бесконфликтная работа всех клавиш
  • Простая схема, использующая только кнопки

Недостатки:

  • Большое количество необходимых входов-выходов (IO), где количество IO равно сумме колонок и строк, например, для 20-клавишной клавиатуры размером 4x5 требуется 9 IO

Раздел аппаратной части (эффекты светодиодов)

Эффекты светодиодов также будут использовать схему матрицы (ожидается подтверждение) и использовать кнопки для переключения между четырьмя различными эффектами свечения

Схема работы матрицы клавиш

Связанные ссылки

Ссылки на материалы

Рекомендованная литература

Обмен информацией и сотрудничество

  • Электронная почта для связи: walkline@163.com
  • Группы для общения через QQ:
    • Walkline IoT: 163271910
    • BigIoT: 31324057

Walkline IoTBigIoT

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Проект исследования и изучения Bluetooth с низким энергопотреблением (BLE) для платы разработки ESP32 на MicroPython. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/walkline-esp32-ble.git
git@gitlife.ru:oschina-mirror/walkline-esp32-ble.git
oschina-mirror
walkline-esp32-ble
walkline-esp32-ble
master