Оглавление:
- Запасы
- Шаг 1. Сопряжение акселерометра с Raspberry Pi
- Шаг 2: взаимодействие кнопки с Raspberry Pi
- Шаг 3. Разработка скрипта Python для последовательного управления указателем мыши
- Шаг 4: Разработка скрипта Python для управления указателем мыши через Bluetooth
- Шаг 5: установка акселерометра и кнопки на перчатке
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Я сделал контроллер мыши на основе Bluetooth, который можно использовать для управления указателем мыши и выполнения операций, связанных с компьютерной мышью, на лету, не касаясь каких-либо поверхностей. Электронная схема, встроенная в перчатку, может использоваться для отслеживания жестов рук с помощью акселерометра, что может быть преобразовано в движение указателя мыши. Это устройство также связано с кнопкой, которая повторяет щелчок левой кнопкой. Устройство можно подключить к ПК последовательно (через USB) или по беспроводной связи через соединение Bluetooth. Bluetooth обеспечивает надежную и универсальную беспроводную связь между главным устройством и этой носимой мышью. Поскольку Bluetooth широко доступен и встроен почти во все персональные ноутбуки, возможности использования такого носимого устройства весьма широки. Используя Raspberry Pi, который является часто используемой платформой разработки для различных проектов, можно легко и легко масштабировать взаимодействие различных датчиков и разработку такого устройства. Перчатку можно заменить любой другой носимой, чтобы расширить область ее применения.
В качестве меры предосторожности против COVID-19 рекомендуется избегать прикосновения к поверхностям, которые могут использоваться разными людьми, и ноутбук с сенсорным экраном или мышь могут быть среди этих общих поверхностей. Использование такого носимого устройства помогает поддерживать гигиену и дезинфицировать часто используемые поверхности:)
Запасы
- Raspberry Pi 3 Модель B V1.2
- Трехосный акселерометр SparkFun Breakout - MMA8452Q
- Перемычка между мужчинами и женщинами
- Перчатка
- Скотч
- Ножницы
- Кабель Micro-USB
- Кабель HDMI (для отладки через Raspberry Pi)
Шаг 1. Сопряжение акселерометра с Raspberry Pi
Я использовал трехосевой акселерометр MMA8542Q от Sparkfun, который использует протокол связи I2C для связи с контактами Raspberry Pi GPIO и отправки данных осей. Этот датчик обеспечивает различные режимы работы с настраиваемой скоростью передачи данных, режимами сна, диапазоном ускорения, режимом фильтрации и т. Д. Я обнаружил, что код от Pibits очень полезен при первоначальной настройке датчика и тестировании его с помощью жестов руки. Лучше сначала поместить датчик на плоскую поверхность и делать детерминированные наклоны, наблюдая за исходными значениями датчика. Это особенно полезно для понимания того, как этот датчик реагирует на различные жесты рук и как мы можем установить пороговые значения для нашего приложения. После успешного подключения акселерометра вы можете увидеть необработанные данные осей, поступающие на экран терминала Pi.
Шаг 2: взаимодействие кнопки с Raspberry Pi
В этом носимом устройстве я подключил кнопку, которая может работать как левая кнопка мыши, чтобы я мог нажимать на значки на экране. Затем 2 конца кнопки подключаются к 2 контактам GPIO Pi. Один из выводов выводит высокий логический уровень, а другой вывод считывает это значение. Когда кнопка нажата, схема замыкается, и входной вывод может считывать значение с высоким логическим уровнем, которое затем обрабатывается сценарием, который я написал для имитации щелчка левой кнопкой мыши. Из-за отсутствия паяльника я использовал изоленту для соединения перемычек с кнопкой.
Шаг 3. Разработка скрипта Python для последовательного управления указателем мыши
Я использовал библиотеку Python Pyautogui для управления указателем мыши. Причина использования этой библиотеки заключалась в том, что она работает как на Linux, так и на платформе Windows. Чтобы управлять указателем мыши на моем Raspberry Pi, сначала я подключил свой Pi к дисплею. Затем я использовал следующие API-интерфейсы, предоставляемые библиотекой, для управления указателем мыши:
- pyautogui.move (0, 200, 2) # перемещает мышь вниз на 200 пикселей за 2 секунды
- pyautogui.click () # щелкните мышью
Чтобы отфильтровать данные об ошибках, поступающие от акселерометра, я использовал усреднение и другие методы фильтрации, которые можно легко понять из прилагаемого кода. API pyautogui.move (0, y) использовался таким образом, что указатель мыши может перемещаться вверх-вниз или влево-вправо за раз. Это связано с тем, что акселерометр сообщает оси в направлениях X, Y и Z, но API принимает только 2 аргумента, оси X и Y. Следовательно, этот подход очень подходил для моего акселерометра и отображения жестов на экране.
Шаг 4: Разработка скрипта Python для управления указателем мыши через Bluetooth
Эта часть представляет собой расширенное приложение, в котором любой ноутбук, имеющий возможности Bluetooth, может связываться с Raspberry Pi в модели связи сервер-клиент и передавать данные о координатах мыши по беспроводной сети. Чтобы настроить 64-разрядный ноутбук с Windows 10 для связи по Bluetooth, нам необходимо выполнить следующие действия:
Windows 10:
- Создайте входящий COM-порт Bluetooth.
- Соедините Bluetooth Pi с Bluetooth ноутбука, сделав Pi доступным для обнаружения.
- Установите Python в Windows.
- Установите pip в Windows. Pip используется для установки библиотек на машине Linux или Windows.
- Установите pyautogui в Windows, используя: pip install pyautogui
- После установки pyautogui на устройство установите Pybluez в Windows, используя следующую команду на терминале Windows: pip install PyBluez-win10. PyBluez включает связь Bluetooth на ПК с Windows и Linux.
-
Чтобы разработать приложение на ноутбуке с Windows 10, нам необходимо установить Microsoft Visual Studio (требуется 15-20 ГБ места) и его инструменты сборки. Поэтому вместе с PyBluez нам необходимо следовать приведенным ниже инструкциям.
- Загрузите и запустите «Установщик Visual Studio»:
-
Установите «Visual Studio Build Tools 2017», отметьте «Инструменты сборки Visual C ++» и «Инструменты сборки универсальной платформы Windows».
- git clone
- cd pybluez
установка python setup.py
- Если приведенные выше инструкции выполняются правильно, запуск Python на терминале Windows и импорт модуля pyautogui и Bluetooth должны работать без ошибок, как показано на изображении выше.
- В библиотеке pybluez, установленной на машине Windows, перейдите по адресу: pybluez-master / examples / simple / rfcomm-server.py и выполните с помощью python rfcomm-server.py. Если терминал переходит в состояние ожидания без ошибок, перейдите в раздел ниже, чтобы настроить Bluetooth на Pi. Если при установке pybluez возникают ошибки, обратитесь к разделу «Проблемы GitHub» для отладки.
Raspbian на Raspberry Pi:
- Установите PyBluez на Pi
- Запустите пример сервера в Windows. Затем на Pi перейдите к pybluez-master / examples / simple / rfcomm-client.py и выполните. Если два устройства начали обмениваться данными, Bluetooth теперь настроен на обоих устройствах. Чтобы узнать больше о том, как взаимодействие сокетов работает с Python, обратитесь к этой ссылке из MIT.
Для отправки данных осей с Pi на ПК потребуется дополнительный анализ данных, поскольку данные отправляются в байтах. Обратитесь к приложенному коду для получения дополнительной информации о передаче данных между клиентом и сервером.
Шаг 5: установка акселерометра и кнопки на перчатке
После того, как акселерометр хорошо подключен, скелетная система выглядит как первое изображение на этом этапе.
Поскольку поверхность перчатки неровная, я использовал фиктивную кредитную карту, которая то и дело приходила в мой почтовый ящик. Как показано на втором изображении на этом этапе, я прикрепил фиктивную кредитную карту к верхней поверхности перчатки с помощью изоленты. Поверх карты я прикрепил акселерометр. Эта установка была достаточно надежной, чтобы мой акселерометр оставался стабильным и мог точно отслеживать мои жесты.