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