Создание самодельной воздушной мыши с мультимедийным управлением OTUS
2026-03-10 02:02 Diff

Введение

При ограниченном бюджете и любви к DIY-проектам можно создать полезное устройство, используя доступные компоненты. В ходе работы над этим проектом были использованы гироскопический датчик, ESP32-C3 и ёмкостные сенсоры, оставшиеся от предыдущих разработок. Это натолкнуло на мысль о создании воздушной мыши с мультимедийными возможностями. Таким образом, возникла идея собрать Bluetooth HID-устройство, позволяющее управлять интерфейсом при помощи жестов.

Этот гаджет может быть использован не только для управления ПК, телевизорами и Android-устройствами, но и для работы с радиоуправляемыми моделями, роботизированными системами и другими смарт-устройствами. Корпус устройства был изготовлен из пенокартона, но, при наличии 3D-принтера, его можно распечатать с помощью подготовленных STL и CAD-файлов.

Что включает статья:

  • Пошаговая сборка воздушной мыши
  • Реализация мультимедийных клавиш
  • Полностью программируемые элементы управления
  • Файлы для 3D-печати корпуса
  • Исходный код и шаблоны

Итак, начнём процесс сборки.

Необходимые материалы

Вариант с пенокартоном:

  • Пенокартон (2,5 мм толщиной)
  • Суперклей
  • Малярный скотч
  • Виниловая плёнка с текстурой карбона
  • Аэрозольная краска серебристого оттенка
  • Миниатюрный ползунковый переключатель
  • Медная лента
  • XIAO ESP32 C3
  • MPU6050
  • Ёмкостный сенсор MPR121
  • Светодиод (3 мм)
  • Литий-ионный аккумулятор 3,7 В (размер 20×20×5,5 мм)
  • Прочие материалы: провода, паяльные принадлежности, макетный нож, наждачная бумага и т. д.

Вариант с 3D-печатью:

  • 3D-принтер и филамент
  • Виниловая плёнка с текстурой карбона
  • Миниатюрный ползунковый переключатель
  • Медная лента
  • XIAO ESP32 C3
  • MPU6050
  • Ёмкостный сенсор MPR121
  • Светодиод (3 мм)
  • Литий-ионный аккумулятор 3,7 В (размер 20×20×5,5 мм – 25×20×6,5 мм)
  • Прочие материалы: провода, паяльные принадлежности, макетный нож, наждачная бумага и т. д.

Шаг 1: Вырезание шаблонов

С помощью подготовленного шаблона необходимо перенести контуры деталей на лист пенокартона (2,5 мм), а затем аккуратно вырезать их. После этого заготовки склеиваются между собой с использованием суперклея в соответствии с изображениями.

Вырезаем шаблоны Вырезаем шаблоны

Шаг 2: Создание контактных зон для мультимедийных клавиш

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

Шаг 3: Подключение компонентов

Схема устройства несложная. В её основе лежит гироскопический датчик MPU6050, определяющий ориентацию устройства, а также ёмкостный сенсор MPR121, отвечающий за распознавание касаний. В качестве управляющего блока используется Xiao ESP32-C3, который обрабатывает входные и выходные сигналы.

Поскольку MPU6050 и MPR121 работают через интерфейс I2C, их подключение осуществляется через линии SDA и SCL.

Настройка сенсорных кнопок:

  • Касание 0 – перемещение курсора
  • Касание 1 – левый клик
  • Касание 2 – правый клик
  • Касание 3 – перемотка назад
  • Касание 4 – перемотка вперёд
  • Касание 5 – увеличение громкости
  • Касание 6 – следующий трек
  • Касание 7 – воспроизведение/пауза
  • Касание 8 – предыдущий трек
  • Касание 9 – уменьшение громкости
  • Касание 10 – выключение звука
  • Касание 11 – динамическая горизонтальная/вертикальная прокрутка по наклону

Функции кнопок можно изменять в коде. Часть пинов остаётся незадействованной, что позволяет добавить новые клавиши или расширить функционал устройства.

Питание обеспечивается литий-ионным аккумулятором 3,7 В, обеспечивающим автономность работы.

После пайки соединений можно переходить к сборке.

Шаг 4: Закрепление верхней и нижней крышек

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

Шаг 5: Эксперимент с LED-рассеивателем

Первоначально светодиод не планировалось устанавливать, но возникла идея проверить, можно ли использовать встроенный индикатор MPU6050 для визуального отображения состояния питания. Однако этот эксперимент оказался бесполезным, поэтому в финальной версии был добавлен отдельный LED-индикатор, показывающий статус BLE-подключения.

Шаг 6: Финальная сборка корпуса

После полной сборки схемы корпус устройства закрывается окончательно. Для соединения деталей применяется суперклей, при этом точки склейки делаются локальными, чтобы корпус можно было открыть в будущем. Завершающий штрих – обтяжка корпуса виниловой плёнкой под карбон.

Шаг 7: Добавление маркировки клавиш

Для удобства использования кнопки обозначаются с помощью малярной ленты и аэрозольной краски. После высыхания краски защитное покрытие удаляется, оставляя чёткие символы на корпусе.

Шаг 8: Загрузка кода

Для загрузки кода будем использовать Arduino IDE.

Прежде чем продолжить, убедитесь, что в Arduino IDE установлен пакет плат ESP32. 

Для этого перейдите в Tools → Board → Board Manager, найдите «ESP32» и установите пакет от Espressif Systems.

Если в Board Manager отсутствует ESP32, добавьте следующий URL в File → Preferences → Additional Board Manager URLs: https://dl.espressif.com/dl/package_esp32_index.json

Библиотеки, используемые в проекте:

  • Wire (Версия 2.0.0) — базовая библиотека для I²C‑коммуникации (уже предустановлена).
  • MPU6050 (Версия 1.4.1) — библиотека для работы с MPU6050 (гироскоп и акселерометр).
  • Adafruit MPR121 (Версия 1.1.3) — библиотека для работы с MPR121 (ёмкостный сенсор).
  • Adafruit BusIO (Версия 1.17.0) — зависимость для библиотек Adafruit.
  • SPI (Версия 2.0.0) — библиотека для SPI‑коммуникации (уже предустановлена).
  • ESP32-BLE‑CompositeHID (Версия 0.3.0) — библиотека для добавления BLE HID‑функциональности в ESP32. Её необходимо скачать вручную в виде ZIP‑файла и установить в Arduino IDE, так как она отсутствует в стандартном поиске библиотек. Ссылка на библиотеку Mystfit/ESP32-BLE‑CompositeHID
  • NimBLE‑Arduino (Версия 2.2.1) — лёгкий стек BLE для ESP32.
  • Callback (Версия 1.1) — библиотека для обработки обратных вызовов в проекте.

Библиотеки, используемые в проекте:

  • Wire (Версия 2.0.0) — базовая библиотека для I²C‑коммуникации (уже предустановлена).
  • MPU6050 (Версия 1.4.1) — библиотека для работы с MPU6050 (гироскоп и акселерометр).
  • Adafruit MPR121 (Версия 1.1.3) — библиотека для работы с MPR121 (ёмкостный сенсор).
  • Adafruit BusIO (Версия 1.17.0) — зависимость для библиотек Adafruit.
  • SPI (Версия 2.0.0) — библиотека для SPI‑коммуникации (уже предустановлена).
  • ESP32-BLE‑CompositeHID (Версия 0.3.0) — библиотека для добавления BLE HID‑функциональности в ESP32. Её необходимо скачать вручную в виде ZIP‑файла и установить в Arduino IDE, так как она отсутствует в стандартном поиске библиотек. Ссылка на библиотеку Mystfit/ESP32-BLE‑CompositeHID
  • NimBLE‑Arduino (Версия 2.2.1) — лёгкий стек BLE для ESP32.
  • Callback (Версия 1.1) — библиотека для обработки обратных вызовов в проекте.

Осталось установить библиотеки, скачать код (MISFIT‑AIRMOUSE‑FINAL.ino) и залить его на устройство.

Шаг 9: Файлы для 3D-печати

Для владельцев 3D-принтера доступны STL и CAD-файлы корпуса, позволяющие напечатать детали самостоятельно.

Шаг 10: Финальная проверка

Теперь устройство готово к работе! Теперь вы можете:

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

Этот проект — не просто гаджет, а увлекательный эксперимент с DIY‑решениями и инновациями. От разработки корпуса до устранения проблем с BLE‑библиотеками — каждая сложность стала возможностью изучить что‑то новое и улучшить результат.

Лучшее в этом проекте — его гибкость: вы можете настроить устройство под себя! Так как мы использовали не все пины микроконтроллера, можно добавить дополнительные физические кнопки и расширить функциональность. Я также включил файлы для 3D‑печати, чтобы вы могли легко создать свою собственную версию устройства.

Автор оригинала: Misfit Maker на instructables.com
Переводчик: Ксения Мосеенкова