Введение

При ограниченном бюджете и любви к 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‑печати, чтобы вы могли легко создать свою собственную версию устройства.