Самодельная аэромышь с мультимедийным управлением. DIY.. DIY. DIY или Сделай сам.. DIY. DIY или Сделай сам. Блог компании OTUS.. DIY. DIY или Сделай сам. Блог компании OTUS. воздушная мышь.. DIY. DIY или Сделай сам. Блог компании OTUS. воздушная мышь. мультимедиа-устройства.. DIY. DIY или Сделай сам. Блог компании OTUS. воздушная мышь. мультимедиа-устройства. сделай сам.. DIY. DIY или Сделай сам. Блог компании OTUS. воздушная мышь. мультимедиа-устройства. сделай сам. Электроника для начинающих.

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

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

Статья включает:

  • Сборка воздушной мыши

  • Клавиши мультимедийного управления

  • Полностью программируемые клавиши

  • Файлы для 3D‑печати корпуса

  • Код и шаблоны

Итак, приступаем к сборке.


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

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

  • Пенокартон 2,5 мм

  • Суперклей

  • Малярный скотч

  • Виниловая плёнка под карбон

  • Серебряная аэрозольная краска

  • Миниатюрный ползунковый переключатель [Длина: 8.5–8.6 мм, ширина: 3.7–3.8 мм, длина ножек: 3 мм, шаг: 2.54 мм (0.1»)](Pololu‑mini slide switch / SS‑SPDT‑Mini-100 / …)

  • Медная лента

  • XIAO ESP32 C3

  • MPU6050

  • Ёмкостный сенсор MPR121

  • Светодиод 3 мм

  • Литий‑ионный аккумулятор 3.7 В [Размер: 20×20×5.5 мм]

  • Прочие материалы (провода, паяльные принадлежности, макетный нож, наждачная бумага и т. д.)

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

  • 3D‑принтер и филамент

  • Виниловая плёнка под карбон

  • Миниатюрный ползунковый переключатель [Длина: 8.5–8.6 мм, ширина: 3.7–3.8 мм, длина ножек: 3 мм, шаг: 2.54 мм (0.1»)](Pololu‑mini slide switch / SS‑SPDT‑Mini-100 / …)

  • Медная лента

  • XIAO ESP32 C3

  • MPU6050

  • Ёмкостный сенсор MPR121

  • Светодиод 3 мм

  • Литий‑ионный аккумулятор 3.7 В [Размер: 20×20×5.5 мм — 25×20×6.5 мм]

  • Прочие материалы (провода, паяльные принадлежности, макетный нож, наждачная бумага и т. д.)

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

Cutting the Templates

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

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

Используя готовый шаблон как ориентир, обведите его контур на пенокартоне (2.5 мм) и аккуратно вырежьте соответствующие детали. Затем склейте их суперклеем, как показано на изображениях.

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

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

Touch Points for Media Keys

Контактные точки для мультимедийных клавиш
Touch Points for Media Keys

Контактные точки для мультимедийных клавиш
Touch Points for Media Keys

Контактные точки для мультимедийных клавиш

Шаг 3: Подключение схемы

Wiring Up the Circuit

Подключение схемы
Wiring Up the Circuit

Подключение схемы
Wiring Up the Circuit

Подключение схемы

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

Так как MPU6050 и MPR121 используют интерфейс I2C, они подключаются к микроконтроллеру через линии SDA и SCL.

Я настроил сенсорные клавиши MPR121 на следующие функции:

  • Касание 0 — перемещение курсора

  • Касание 1 — левый клик

  • Касание 2 — правый клик

  • Касание 3 — перемотка назад

  • Касание 4 — перемотка вперёд

  • Касание 5 — увеличение громкости

  • Касание 6 — следующий трек

  • Касание 7 — воспроизведение/пауза

  • Касание 8 — предыдущий трек

  • Касание 9 — уменьшение громкости

  • Касание 10 — выключение звука

  • Касание 11 — динамическая горизонтальная/вертикальная прокрутка на основе наклона

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

Для питания я использую компактный литий‑ионный аккумулятор на 3.7 В (размер 20×20×5.5 мм), который обеспечивает достаточную автономность для длительного использования.

Теперь, ориентируясь на схему, аккуратно припаяйте соединения и завершите сборку.

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

Attaching the Top and Bottom Side Covers

Крепление верхней и нижней крышек
Attaching the Top and Bottom Side Covers

Крепление верхней и нижней крышек
Attaching the Top and Bottom Side Covers

Крепление верхней и нижней крышек
Attaching the Top and Bottom Side Covers

Крепление верхней и нижней крышек

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

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

Шаг 5: Бесполезный эксперимент с LED-рассеивателем

The Unnecessary LED Diffuser Experiment

Бесполезный эксперимент с LED-рассеивателем
The Unnecessary LED Diffuser Experiment

Бесполезный эксперимент с LED-рассеивателем
The Unnecessary LED Diffuser Experiment

Бесполезный эксперимент с LED-рассеивателем

Сначала я не планировал добавлять отдельный светодиод для индикации состояния BLE‑подключения устройства. Поэтому, чтобы проверить, включено ли устройство, в голову пришла (сомнительная) идея сделать LED‑рассеиватель с использованием 5-мм светодиода. Почему я вообще решил это сделать — до сих пор не понимаю!

Идея заключалась в том, чтобы направить свет от встроенного светодиода датчика MPU6050, который указывал бы на то, что питание включено.

Но в итоге этот шаг оказался бесполезным — лучше просто его пропустить, так как в финальной версии я добавил отдельный светодиод, который корректно показывает как статус питания, так и статус BLE‑подключения. Теперь всё работает, как должно!

Разработать своё первое устройство (от идеи до производства) можно на онлайн-курсе «Электроника и электротехника».

Шаг 6: Сборка корпуса

Merging the Case

Сборка корпуса
Merging the Case

Сборка корпуса
Merging the Case

Сборка корпуса

Теперь, когда схема полностью собрана, а корпус готов, пора объединить всё воедино.

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

Конечно, можно было бы использовать изоленту, но… честно? Это было бы некрасиво.

Поэтому я выбрал компромиссный вариант: наносил небольшие капли суперклея локально, а не размазывал его по всей поверхности. Так, если мне когда‑нибудь понадобится открыть корпус, я просто аккуратно срежу эти точки склейки без особых проблем.

Финальный штрих — оборачиваю корпус в виниловую плёнку под карбон для стильного вида. Макетным ножом подрезаю лишнее — теперь всё выглядит аккуратно и профессионально.

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

Adding the Key Labels

Добавление маркировки клавиш
Adding the Key Labels

Добавление маркировки клавиш
Adding the Key Labels

Добавление маркировки клавиш

Теперь, когда виниловая плёнка на месте, пора обозначить клавиши.

Аккуратно вырезал трафареты из малярной ленты для маркировки клавиш. Затем нанёс слой серебряной аэрозольной краски поверх замаскированных областей.

После высыхания краски снял малярную ленту — обозначения клавиш получились чёткими и аккуратными.

Аппаратная часть полностью готова! Теперь осталось только загрузить код и оживить нашу мышь.

Шаг 8: Код

The Code
The Code
The Code

Для загрузки кода будем использовать 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) — библиотека для обработки обратных вызовов в проекте.

Я столкнулся с проблемой выбора подходящей BLE‑библиотеки, так как существует несколько вариантов. Сначала попробовал blackketter/ESP32-BLE‑Combo, и при первом подключении всё работало отлично. Однако после повторного соединения мультимедийные клавиши перестали работать, хотя клавиши мыши продолжали функционировать.

Сначала я решил, что проблема в коде, но после нескольких попыток его исправить, решил сменить библиотеку. Именно тогда я нашёл Mystfit/ESP32-BLE‑CompositeHID, и это полностью решило проблему — всё стало работать без сбоев, даже при повторном подключении.

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

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

Cмотреть видео в mp4

Также делюсь STL и CAD‑файлами корпуса устройства. Если у вас есть 3D‑принтер, вы можете напечатать корпус самостоятельно. Я добавил зазор 0,2 мм для точного соединения частей.

Шаг 10: Устройство готово к подключению

Your Device Is Ready to Connect

Устройство готово к подключению
Your Device Is Ready to Connect

Устройство готово к подключению

Вот так, с парой компонентов и каплей креативности, у вас готова воздушная мышь с мультимедийным управлением!

Теперь вы можете:

  • Легко перемещаться по меню, просто двигая запястьем

  • Управлять мультимедиа без лишних кнопок

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

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

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


Лучшие практики программирования и тестирования можно изучить под руководством экспертов на онлайн-курсах Otus. На открытые уроки всех курсов можно записаться в календаре.

Также всем DIY-энтузиастам рекомендую обратить внимание на онлайн-курс «Электроника и электротехника».

Автор: kmoseenk

Источник

Рейтинг@Mail.ru
Rambler's Top100