Kravox: беспроводной контроллер движений и касаний для Arduino
Компоненты и материалы
| Компонент | Количество | Примечание |
|---|---|---|
| Arduino Nano R3 | 2 | Один в контроллере, второй в приёмнике |
| USB-A — Mini-USB кабель | 2 | Питание и прошивка |
| MPU-6050 (GY-521) | 1 | 3-осевой гироскоп + акселерометр (I2C) |
| MPR121 (сенсор касания, 12 каналов) | 2 | Всего 24 электрода касания на контроллере |
| nRF24L01+ (радиомодуль) | 2 | SPI, 2.4 ГГц, до 3 контроллеров |
| Конденсатор 10 мкФ (электролитический) | 2 | Стабилизация питания радиомодуля |
| Конденсатор 100 нФ (керамический) | 2 | Фильтрация высокочастотных помех |
| Пин-хедеры female 40-pin | 5 | Для разъёмов плат расширения |
| Пин-хедеры male 40-pin (однорядные) | 2 | Для интерфейсов |
| Провода (разноцветные, ленточный кабель) | ~10 м | Для электродов касания и связей |
| Светодиоды синие 5 мм | 3 | Индикация |
| Потенциометры 10 кОм | 5 | 4 на приёмнике + 1 резерв |
| Резисторы 150 Ом (1/4 Вт) | 3 | Ограничение тока светодиодов |
| Резисторы 220 Ом (опционально) | 3 | Нагрузка для удержания пауэрбанка |
| Текстолитовая перфоплата (мин. 50×24 отв.) | 1 | Для контроллера и приёмника |
| Корпус (пластиковая коробка, емкость от пищевой плёнки) | 2 | Для контроллера и приёмника |
| Медная фольга/лента (ширина 1 см) | ~4 м | Электроды касания |
| Паяльник, припой, флюс | 1 | |
| Клей (суперклей, термоклей), скотч, резинки | — | Монтаж корпуса |
| Пауэрбанк (USB, малый) | 1 | Питание контроллера |
Инструменты
- Паяльная станция / паяльник
- Дрель с бором 7 мм (для потенциометров)
- Канцелярский нож
- Мелкая пила
- Стальная линейка
- Обкусыватель / стриппер
- Плоскогубцы
- Клеевой пистолет
- Шпори
Программное обеспечение
- Arduino IDE
- Pure Data Vanilla (бесплатно) — звуковой движок
- Библиотеки Arduino:
I2Cdev+MPU6050_6Axis_MotionApps20(Jeff Rowberg) — для MPU-6050MPR121(Bare Conductive) — для сенсоров касания (важно: не Adafruit!)RF24+nRF24L01(TMRh20) — для радиомодулей
Концепция Kravox
Kravox — открытый кроссплатформенный цифровой музыкальный инструмент, разработанный в Лундском университете (Швеция). Цель — дать контроллерам цифровых инструментов тактильные ощущения акустических инструментов.
Система состоит из трёх частей:
- Контроллеры (до 3) — беспроводные ручные устройства. Каждый содержит Arduino Nano, MPU-6050 (ориентация/ускорение), две платы MPR121 (24 емкостных электрода касания), nRF24L01+ для передачи данных. Питание — пауэрбанк.
- Приёмник — стационарный блок на Arduino Nano с nRF24L01+, 4 потенциометрами и синим светодиодом. Передаёт данные от контроллеров и состояния потенциометров по USB в компьютер.
- Программное обеспечение (Pure Data) — обрабатывает входящие данные и генерирует звук. Патч
Kravox.pdиспользует сэмплы барабанов и эффекты (реверб, гранулярный синтез).
Пошаговая сборка
Часть 1: Подготовка компонентов
Соберите все детали согласно списку. Рекомендуется заказать запас nRF24L01+ (5-10 шт.), так как часть может быть бракованной.
Часть 2: Плата контроллера
- Разметка и резка перфоплаты — под female-хедеры под Arduino Nano, два MPR121, MPU-6050, nRF24L01+. Припаяйте конденсаторы 10 мкФ (полярный, полоса на GND) и 100 нФ рядом с разъёмом nRF24L01+.
- Светодиоды — 2 синих LED с резисторами 150 Ом на выводах D3, D4 (аноды к пинам, катоды к GND).
- Питание — красные провода 3.3В, синие GND ко всем разъёмам.
- I2C (MPR121 ×2, MPU-6050) — жёлтый (SDA) на A4, зелёный (SCL) на A5. Белый провод — прерывание MPU (INT) на D2.
- SPI (nRF24L01+) — чёрный (SCK/D13), серый (MISO/D12), коричневый (MOSI/D11), фиолетовый (CSN/D10), оранжевый (CE/D9).
- Подготовка MPR121 — на дешёвых платах адресный пин (ADD) припаян к GND. Нужно перерезать дорожку между двумя паяльными площадками у надписи ADD (ножом), проверить мультиметром отсутствие замыкания. Это позволяет использовать две платы на одной шине I2C (адреса 0x5A и 0x5B).
- Установка компонентов — вставьте все модули в female-хедеры.
- Прошивка контроллера — установите библиотеки, загрузите скетч
Kravox_Controller.ino(из GitHub). Для теста раскомментируйте вывод в Serial Monitor (115200 бод) — должны появляться данные гироскопа и касаний. - Питание от пауэрбанка — если пауэрбанк выключается от малого тока, припаяйте 3 резистора 220 Ом параллельно 5V и GND Arduino (нагрузка ~68 мА).
Часть 3: Плата приёмника
- Аналогично: перфоплата под Arduino Nano + nRF24L01+ с конденсаторами.
- Питание (3.3В/GND) и SPI (те же пины).
- Установите компоненты, прошейте
Kravox_Receiver.ino.
Часть 4: Интерфейс приёмника (потенциометры + LED)
На маленькой перфоплате (2×17 отв.) смонтируйте 4 потенциометра (средние выводы к A0-A3 Arduino), питание (красные 5V, синие GND), синий LED с резистором 150 Ом на D5. Соедините с основной платой приёмника через male/female хедеры.
Часть 5: Сенсорный интерфейс и корпус контроллера
- Разметьте 24 позиции электродов на коробке (не перекрывающиеся).
- Вырежьте полоски медной ленты, приклейте на внутреннюю сторону коробки.
- Сделайте разъём: перфоплата 2×24 отв. с 24-pin male хедером, припаяйте провода к электродам (длины увеличиваются к краям).
- Наклейте поверх изоленту (диэлектрик).
- Согните/склейте коробку в форму «метлы», добавьте вторую коробку для пауэрбанка.
- Закрепите плату контроллера внутри, выведите USB-кабель, подключите сенсорный интерфейс.
- Закрепите резинками.
Часть 6: Корпус приёмника
В другой коробке вырежьте отверстия под 4 потенциометра, LED и USB. Установите приёмник, закрепите потенциометры, наденьте ручки.
Часть 7: Подключение к Pure Data
- Установите Pure Data Vanilla.
- Откройте
Krava.pd(требуется папкаdrumsamplesрядом). - В меню Help → Find externals установите:
comport,zexy,freeverb,arraysize. Перезапустите Pd. - Подключите приёмник по USB. В Pd нажмите «Show available ports» или перебирайте номера портов в диалоге до появления потока данных в консоли.
- Сохраните настройку порта.
- Включите контроллер (подключите пауэрбанк) — важно: в момент включения сенсорная поверхность не должна касаться рук или предметов (калибровка нуля).
- Играйте! Движения контроллера (гироскоп) и касания электродов управляют звуком.
Настройка нескольких контроллеров
Во втором и третьем контроллере нужно задать уникальные адреса nRF24L01 в коде (секция DECLARATIONS / NRF24L01). Приёмник поддерживает до 3 контроллеров без изменений кода.
Ресурсы
- GitHub репозиторий с кодом, патчем Pd и сэмплами: github.com/timkrahmer/Kravox
- Схемы (PNG) во вложениях.
Производственный процесс
- Каналы и шлюзы: инженерия, история и будущее водного транспорта в США
- Саксофон: история, дизайн и современное производство
- Эволюция и мастерство луков и стрел: от древней охоты к современной инженерии
- Дульцимер: история, дизайн и мастерство вечного инструмента
- Rutronik предлагает ультра‑низкопотребляющие мульти‑протокольные SoC от Redpine Signals
- Управление светодиодом с PIR-датчиком движения на Raspberry Pi
- Как 5G беспроводные сети сформируют IoT-адапцию и телеком-налогообложение
- Интеграция безопасности в системы управления движением: повышение производительности без компромиссов
- Связывание систем управления: доверенные коммуникационные интерфейсы для датчиков позиции и движения
- Выбор правильной пилы: ленточная или дисковая для вашего проекта