Кравокс! Беспроводной, датчик движения и датчик касания
Компоненты и расходные материалы
| × | 2 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 2 | ||||
| × | 2 | ||||
| × | 2 | ||||
| × | 5 | ||||
| × | 2 | ||||
| × | 2 | ||||
| × | 3 | ||||
| × | 5 | ||||
| × | 3 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Необходимые инструменты и машины
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
|
Приложения и онлайн-сервисы
| ||||
|
Об этом проекте
Новое Вид инструмента
Kravox был создан в рамках исследовательского проекта в Университете Лунда (Швеция) с целью придать контроллерам цифровых музыкальных инструментов ощущение обычных механических инструментов.
Теперь Kravox станет доступным для всех и станет платформой для музыкальных экспериментов, поэтому это подробное руководство было создано для того, чтобы как можно больше людей могли использовать этот захватывающий новый инструмент!
Как играть в Kravox
Играть в Kravox так же просто. Только представьте, что вы играете с обычным предметом, таким как метла, и то, как вы касаетесь и перемещаете его в пространстве, определяет, как генерируется звук. Посмотрите и послушайте, как играть в Кравокс, в этом видео.
Что такое Кравокс?
Kravox - это кроссплатформенный цифровой музыкальный инструмент с открытым исходным кодом, состоящий из трех компонентов:контроллера (ов), приемника и программного обеспечения.
Контроллер / ы
Можно подключить до трех беспроводных контроллеров. Каждый контроллер обрабатывает данные об ориентации и ускорении с цифрового гироскопа MPU-6050 и данные касания с двух сенсорных плат MPR121, подключенных к Arduino Nano. Контроллер / ы отправляет данные на приемное устройство через радиоприемопередатчик nRF24L01.
Если необходимо использовать более одного контроллера, второму и третьему контроллеру необходимо назначить индивидуальные адреса. Для получения дополнительной информации о назначении адреса см. Информацию в разделе DECLARATIONS / NRF24L01 кода контроллера.
Получатель
Приемник передает данные, полученные от контроллера (ов), через USB на подключенный компьютер вместе с данными, собранными с нескольких потенциометров. Предоставленный код приемного устройства позволяет осуществлять связь с тремя контроллерами, но также будет работать только с одним или двумя без дополнительных настроек.
Программное обеспечение
Данные от приемника обрабатываются программой, написанной на Pure Data Vanilla, которая выводит звук.
Что мы построим в этом руководстве - пошаговое руководство
Красота Kravox в том, что его форму, то, как он звучит и как на нем играют, можно регулировать. Это дало мне возможность разработать легко воспроизводимую версию Kravox для этого руководства.
(Если вам интересно:на моем YouTube-канале вы также можете найти таймлапс того, как я сделал большую версию Kravox)
И видео выше, и это руководство покажут вам все необходимые шаги по созданию полнофункциональных контроллеров и приемника из легкодоступных электрических компонентов и картона.
Часть 1 - Сбор компонентов и инструментов
Для сборки контроллера Kravox + приемной станции вам потребуются следующие компоненты:
{1x} 50 * 24 отверстия (минимальный размер) монтажная плата, {5x} 40-контактные разъемы-розетки, {5x} 40-контактные разъемы-вилки, {5x} потенциометры на 10 кОм и ручки для них, {3x} синий стандарт 5 мм Светодиоды, {3x} резисторы 150 Ом, {2x} конденсаторы 10 мкФ, {2x} конденсаторы 100 нанофарад, {2x} радиопередатчики NRF24L01, {2x} наночастицы Arduino, {3x} резисторы 220 Ом, {2x} Платы сенсорных датчиков MPR121, цифровой гироскоп {1x} GY-521 MPU 6050, {2x} кабели USB-A - USB-C, {1x} 4 метра (минимум) медной ленты шириной 1 см, {1x} блок питания, {2x } Разноцветный провод 7 метров (минимум) и опционально {1x} 0,2 метра термоусадочной трубки ø =3 мм.
Кроме того, вам понадобятся инструменты для сборки компонентов:
а затем еще несколько пустых картонных коробок или чего-то подобного:
И клей, клеевой пистолет, скотч, один или несколько зажимов и резинки для изготовления корпусов:
Часть 2 - Изготовление платы контроллера
Далее я объясню, как сделать электронику контроллера шаг за шагом из частей, упомянутых выше
Если вы сомневаетесь, где припаять кабель, вы всегда можете вернуться к схеме ниже и проверить, будут ли компоненты подключены правильно, после того, как вы прикрепите Arduino и сенсорные платы к печатной плате, которую мы создаем.
2.1
Первый шаг - обрезать монтажную плату и гнездовые штыревые разъемы по размеру и собрать их вместе с большим и маленьким конденсаторами, которые помогают повысить надежность радиоприемопередатчика:
Вырежьте перфорированный картон канцелярским ножом:
Отрежьте контактные разъемы ножовкой (кладу их на книгу, чтобы выровнять их со столешницы):
Припаиваем детали. Вы уже можете подключить каждую пару контактов из двух длинных гнездовых разъемов, которые расположены рядом друг с другом. Для остальных разъемов достаточно просто прикрепить их небольшим количеством припоя - желательно контакты, которые, согласно принципиальной схеме, в любом случае не будут подключаться позже. При пайке конденсаторов обратите внимание на полярность электролитического конденсатора емкостью 10 мкФ (большего из двух). На одной стороне будет полоска и, как правило, более короткая штанина. Эту сторону необходимо заземлить. Конденсатор меньшего размера на 100 нанофарад не поляризован и его можно припаять любым способом.
Результат должен выглядеть примерно так:
2.2
Второй шаг - припаять два светодиода с их токоограничивающими резисторами.
Обратите внимание на полярность светодиода:одна его сторона плоская и обычно имеет более короткую ножку. Эта сторона должна быть заземлена на шаге 2.3. С другой стороны, мы подключим кабель голубого цвета к разъему, где позже будет находиться контакт D3 Arduino при подключении:
2.3
Затем мы добавляем все красный и синий кабели питания. Красный - 3,3 В, синий - земля (GND)
Результат должен выглядеть примерно так:
2,4
На четвертом шаге на доске уже становится тесновато. Три платы датчиков обмениваются данными по протоколу I2C (межинтегральная схема). Это означает, что все они могут быть подключены к одним и тем же двум выводам Arduino, поэтому мы припаяем желтый и зеленый кабели между ними и выводами Arduino A4 и A5. Мы также добавляем белый кабель для подключения контактов прерывания гироскопа.
Когда это будет сделано, доска будет выглядеть так:
2,5
Радиоприемопередатчик вместо этого обменивается данными по протоколу SPI (последовательный периферийный интерфейс), который требует большего количества подключений, чем I2C, поэтому мы добавляем черный, серый, коричневый, фиолетовый и оранжевый кабели:
Вот что вы получите:
2,6
Пришло время подготовить компоненты.
Помимо пайки штекерных разъемов, если они не припаяны заранее, обратите особое внимание на платы сенсорных датчиков! В дешевых моделях из Китая адресный контакт жестко подключен к земле без промежуточного резистора, поэтому вам нужно физически разрезать это соединение в нижней части платы с помощью универсального ножа. Разрежьте между двумя контактными площадками для пайки рядом с местом, где написано ADD. Я рекомендую использовать мультиметр, чтобы потом проверить, не осталось ли соединения между контактными площадками:
Когда все компоненты припаяны к контактам и подготовлены платы сенсорных датчиков, вы можете подключить Arduino Nano, гироскоп, две платы сенсорных сенсоров и радиоприемопередатчик к плате контроллера:
Готовая (возможно) плата контроллера:
2,7
После двойной проверки, если все подключено правильно, следующим шагом будет загрузка предоставленного кода Kravox-Controller (см. Приложения) в Arduino nano, но прежде чем вы сможете это сделать, вам нужно будет установить библиотеки для гироскопа, сенсорные платы и радиоприемопередатчик. Если вы новичок в библиотеках Arduino, узнайте, как их установить здесь.
- Гироскопу MPU-6050 требуются библиотеки «I2Cdev.h» и «MPU6050_6Axis_MotionApps20.h» Джеффа Роуберга, которые можно загрузить здесь.
- Платы сенсорного датчика MPR121 нуждаются в библиотеке "MPR121.h" от Bare Conductive, которую можно найти здесь. Существует как минимум две версии библиотеки. Убедитесь, что вы установили версию, разработанную Bare Conductive, а не версию, разработанную Adafruit.
- Для платы приемопередатчика NRF24L01 требуются библиотеки nRF24L01.h и RF24.h от TMRh20, которые можно скачать здесь. Обратите внимание:существуют как минимум две версии этих библиотек с одинаковыми именами. Убедитесь, что вы установили программы, разработанные TMRh20, а не maniacbug.
Как только библиотеки будут установлены, вы можете загрузить код Kravox-Controller. Если вы уже хотите проверить, работает ли контроллер, вы можете разрешить ему выводить данные с сенсорных датчиков и гироскопа через последовательный монитор. Для этого вам нужно раскомментировать последний раздел кода получателя перед загрузкой:
удалив пометки комментариев в начале (/ *) и в конце (* /), чтобы код выглядел так:
После загрузки кода с этим вариантом откройте Serial Monitor и установите для него скорость передачи (скорость передачи данных) 115200. Теперь вы должны увидеть данные с датчиков, которые меняются, когда вы перемещаете плату контроллера и касаетесь контактов плат MPR121, имеющих маркировку от 0 до 11.
Если ничего не работает или вы получаете только нули, внимательно проверьте проводку и сравните ее с приведенной выше схемой. Если вы получаете странный вывод от Serial Monitor, проверьте, правильно ли вы установили для него скорость передачи.
2,8
Подключите плату контроллера к блоку питания, который вы хотите использовать с ним.
Если плата (или, точнее, powerbank) не выключается автоматически через некоторое время, ваша плата контроллера готова, и вы можете переходить к Части 3! В противном случае выполните шаг 2.9
2,9
В принципе, плата контроллера готова, но некоторые блоки питания автоматически отключаются через несколько секунд при подключении к плате контроллера, как сейчас, потому что они потребляют очень мало энергии
В качестве грязного решения мы можем просто добавить три резистора 220 Ом параллельно между выводами 5V и GND Arduino. Эти резисторы будут рассеивать дополнительную энергию и превращать ее в тепло, поэтому контроллер потребляет достаточно энергии, чтобы блок питания оставался включенным. Не волнуйтесь:даже с небольшим блоком питания он все равно будет работать в течение нескольких дней без подзарядки
Снимите Arduino Nano и впаяйте резисторы следующим образом:
Итак, доска выглядит так:
и после повторного присоединения компонентов (определенно) готовая плата контроллера выглядит так:
Часть 3 - Изготовление приемной платы
В этой части урока я покажу вам, как сделать плату приемника. Процесс очень похож на изготовление платы контроллера
Если вы хотите проверить, где должен быть подключен определенный кабель, вы можете обратиться к этой принципиальной схеме:
3,1
Первым делом снова нужно обрезать монтажную плату и гнездовые штыревые разъемы по размеру и собрать их вместе с большим и маленьким конденсаторами, которые помогают повысить надежность радиоприемопередатчика. Самый нижний штыревой контактный разъем намеренно оставлен длиннее, чем необходимо, поэтому вы потенциально можете использовать его для других проектов, таких как гранулированный синтезатор Arduino. Вы можете сравнить этот шаг с шагом 2.1 для получения дополнительной информации
Фотография платы в конце шага 3.1:
3,2
Затем мы добавляем все красный и синий кабели питания. Красный - 3,3 В, синий - земля (GND)
Вот как это должно выглядеть:
3.3
Пайка кабелей для связи SPI:
3.4
Присоединение компонентов:
Плата приемника готова, но прежде чем мы сможем загрузить код Kravox-Receiver из приложений в Arduino Nano, нам сначала нужно создать интерфейс для приемника
Часть 4 - Создание интерфейса приемника
В этой части урока я покажу вам, как сделать интерфейс с 4 потенциометрами и светодиодом для приемника. Интерфейс устроен так:
И будет вставлен в плату приемника вот так:
Выполните следующие действия:сначала возьмите жгут из 8 кабелей и припаяйте 5 из них к средним контактам потенциометров. Желательно использовать одни и те же цвета, чтобы не запутаться:
Затем вырежьте перфорированную плату шириной 2 * 17 отверстий и штекер с 17-контактным штырем до нужного размера
Присоедините кабели и контактный разъем к плате. Обратите внимание на схему выше, чтобы убедиться, что вы подключаете кабели в правильных местах
Теперь соедините одну сторону всех потенциометров синими кабелями заземления (и, возможно, используйте кабели немного длиннее, чем я). Также добавьте синий светодиод с токоограничивающим резистором 150 Ом. Снова обратите внимание на полярность светодиода (сравните с шагом 2.2)
Затем подключите другую сторону всех потенциометров зелеными соединительными кабелями на 5 В (и, возможно, используйте кабели немного длиннее, чем я).
The finished interface should look similar to this...
...and can be plugged into the receiver board like that:
Now you can also upload the Kravox Receiver code to the receiver's Arduino Nano.
If you want to see if it is working and receiving data from the controller, you again need to make a slight adjustment to the code before uploading. By default the Receiver will output it's data in a format that can be interpreted by pure data, but will not show useful information on the Serial Monitor. However you can change this behaviour in the code by commenting (adding // in front of) the line that says:
#define WRITE_AS_BYTES
and uncommenting (removing // in front of) the line that says:
// #define PRINT_VIA_SERIAL_MONITOR
So you turn this:
into that:
After uploading the altered code you will be able to see data from the controller and 4 of the potentiometers on the Serial Monitor as I demonstrate in this video:
Part 5 – Making the Controller Interface + Enclosure
Like the receiver the controller also gets an interface – a touch interface that we will make from copper tape:
It will be connected to the controller board like this:
As we directly want to attach the touch interface to the controller's enclosure, you should already have the (non-conductive) material at hand that you want to make the enclosure from. I used empty boxes that cling film and plastic bags came in:
Start making the controller interface by marking where you want to attach the touch electrodes. Please note that they must not touch or overlap each other:
Next, cut the 24 copper electrodes to size...
...and attach them to the enclosure:
Now we can make the plug. For that cut a 2 * 24 hole wide perfboard and a 24 pin male header to size and solder 24 cables to it. The cables in the middle should be at least 10 cm long. To the outside add the width of your electrodes plus the spacing in between for each cable. If for example you use 1 cm wide copper tape and leave 3 mm between the electrodes, your cable length should increase by 1.3 cm like this 10 / 11.3 / 12.6 / 13.9 / 15.2...
and solder the other ends of the cables to the electrodes like this:
Finish the interface by covering the copper surface with non-conductive adhesive tape:
Next fold the interface into a box and glue it:
Glue a smaller box to the box we made in the previous step. It later will contain the powerbank:
Cover the back of the controller board with some leftover cardboard orother slightly thicker non-conductive material:
Cut out holes for the LEDs and glue them and the powerbank (yellow object in the picture) in place. Make sure to place the powerbank in a way that you can still plug in and remove the USB-cable because that is how you turn your controller on and off. Also connect the touch-interface to the controller board and put it in the box. Most likely it will not move much, so you do not need to glue it in.
Make a cut out for the USB-A to USB-C cable at the junction of the two boxes, pull it through and connect it to the Arduino Nano:
Now the Controller is done!
You can close it with some rubber bands. If you later have problems with the sensors recognizing touch when there is none, try to put some non-conductive material like clingfilm or the like between the touch sensitive enclosure and the board and meandering cables. Also make sure to connect the powerbank when the touch sensitive part of the enclosure does not touch your hands or anything else. See Part 7 for more info.
Part 6 – Making the Receiver Enclosure
In part six we will make an enclosure for the receiver as well. You will need another cardboard box (I chose one that contained a bluetooth transceiver before – fitting huh?) and some knobs for the potentiometers
First cut out some circular holes for the potentiometers the LED. Also mak a cut out where you want to connect the USB-Cable to the Arduino Nano
Glue the Receiver board in. Make shure that the USB-C Jack of the Arduino Nano is aligned with the hole that you cut out for the cable connection in the step before.
Next glue in the LED and screw in all the potentiometers. The order how to put them in is the same as in the circuit diagram above:
Now you only need to attach the knobs....
...and the receiver is finished!
Part 7 – Connecting the Receiver to Pure Data
Now that all the hardware is finished, it's time to play some music with it! For that you need software that you can connect the hardware to. For Kravox that software is Pure Data Vanilla that you can download here for free
After installing Pure Data to your computer, start it and open the Kravox.pd file from the attachments. Please note that it needs to be saved on your computer in the same place as the drumsamples folder it comes with - otherwise Pure Data cannot find the samples
As soon as the Kravox.pd software interface has opened, look for a blue-info box and install the four so-called externals that are listed in the box. Installing them is straightforward:Just click on "help" in the Pure Data Menu, choose "Find additional objects on the internet" (might be phrased slightly different), search for "comport", "zexy", "freeverb" and "arraysize" one by one and install the most recent version. Now the four objects labeled, comport, repack, freeverb and arraysize should have a solid outline like in the picture below. You might need to restart Pure Data for that though
After installing the necessary externals you can connect the Receiver Box via USB. If you altered the code in Part 4 to use the Receiver with the Arduino Serial Monitor you need to undo this change first and upload the original code to the receiver's Arduino Nano before connecting and close the Arduino Serial Monitor, so the receiver is not busy trying to talk to it.
Now have a look at Pure Data's log / info window. If you see a rapidly updating data stream that's great because it means that pure data has already found the receiver, but most likely it will instead show you a red message like the one below that refreshes every other moment:
The red message might be a little different, but the result is the same:Pure Data did not yet succeed to connect to your receiver. That is because the program needs to be told, which USB port to listen to. USB-ports are sometimes a bit of a funny thing though:On a 2014 macbook Pro, Pure Data recognizes both USB ports as Serial Port 3, no matter to which you connect the receiver. In Milan I used Kravox with a Lenovo Yoga Pad with only one working USB-Port, that needed to be contacted as Serial Port 6, and recently installed it to another Windows Notebook with two USB-Ports, that wished to be addressed as Serial Ports 8 and 9... So my advice is just to try which number works with your USB-Port. For that I created a simple dialog as part of the Kravox.pd interface, where you can just click through the numbers until one works. You can also try the "Show available ports" and "Show connected USB-devices" buttons – Sometimes, but not very often that also provides useful information. However it takes a while until you get a response in the info window.
You will notice that you have found the right port number and that a connection has been established when the info window shows a data stream like this that updates rapidly:
Very good so far! Click save, so Pure Data will attempt to connect to this port the next time it opens automatically.
However we still need to turn the controller on. If you uncommented the last section of the Kravox Controller code in step 2.7 to connect the controller to the Serial Monitor you should upload the original Version again now.
Connect the controller board to the powerbank. When you do this, the touch-interface-enclosure around the the board should be closed and the touch sensitive part of the enclosure should not touch your hands or anything else, as the touch sensors sense their environment when powered up and assume it to be the untouched state
Congratulations – You are done!
Have much fun playing Kravox!
Код
Kravox Code for Arduino and Pure Data
Under this link you can download a Zip-File that contains the Arduino Code for the Kravox controller and the Kravox receiver, the Kravox.pd-file for Pure Data and the necessary drumsamples for the instrument. Please refer to the tutorial for instructions how to use the files.https://github.com/timkrahmer/KravoxСхема
Производственный процесс
- Канал и замок
- Саксофон
- Лук и стрела
- Дульцимер
- Rutronik:многопротокольные беспроводные SoC и модули от Redpine Signals
- Датчик движения с использованием Raspberry Pi
- Беспроводные сети 5G могут изменить Интернет вещей и налоги
- Интегрированное в систему безопасности управление движением позволяет сосуществовать безопасности и произ…
- Соединения для управления:коммуникационные интерфейсы для датчиков положения и движения
- Как выбрать между ленточной пилой и циркулярной пилой в зависимости от моей работы?