Kravox! Instrumento sem fio, sensor de movimento e toque
Componentes e suprimentos
| × | 2 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 2 | ||||
| × | 2 | ||||
| × | 2 | ||||
| × | 5 | ||||
| × | 2 | ||||
| × | 2 | ||||
| × | 3 | ||||
| × | 5 | ||||
| × | 3 | ||||
| × | 3 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Ferramentas e máquinas necessárias
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
|
Aplicativos e serviços online
| ||||
|
Sobre este projeto
Um Novo Tipo de instrumento
O Kravox foi criado como parte de um projeto de pesquisa na Lund University (Suécia) com o objetivo de dar aos controladores de instrumentos musicais digitais a sensação de instrumentos mecânicos convencionais.
Agora o Kravox deve se tornar acessível para todos e servir como uma plataforma de experimentação musical, então este tutorial detalhado foi criado para permitir que o maior número possível de pessoas usem este novo instrumento emocionante!
Como jogar Kravox
Jogar Kravox é bastante simples. Imagine que você está brincando com um objeto comum, como uma vassoura, e a maneira como o toca e move pelo espaço controla como o som é gerado. Veja e ouça como jogar Kravox neste vídeo.
O que é Kravox?
Kravox é um instrumento musical digital de código aberto compatível com várias plataformas que consiste em três componentes - controlador (es), receptor e software.
Controlador / s
Até três dispositivos de controlador sem fio podem ser conectados. Cada controlador processa dados de orientação e aceleração de um giroscópio digital MPU-6050 e dados de toque de duas placas de sensor de toque MPR121 conectadas a um Arduino Nano. O (s) controlador (es) envia (m) os dados para um dispositivo receptor via transceptor (es) de rádio nRF24L01 (s).
Se mais de um controlador for usado, o segundo e o terceiro controladores precisam obter endereços individuais atribuídos. Para obter mais informações sobre como atribuir o endereço, consulte as informações na seção DECLARAÇÕES / NRF24L01 do código do controlador.
Destinatário
O receptor passa os dados recebidos do (s) controlador (es) via USB para um computador conectado, junto com os dados coletados de vários potenciômetros. O código do dispositivo receptor fornecido permite a comunicação com até três controladores, mas também funcionará com apenas um ou dois sem ajustes.
Software
Os dados do receptor são processados em um programa escrito em Pure Data Vanilla que emite som.
O que construiremos neste tutorial - guia passo a passo
A beleza do Kravox é que sua forma, como soa e como é tocado podem ser ajustados. Isso me deu a oportunidade de projetar uma versão Kravox fácil de replicar para este tutorial.
(Caso você esteja curioso:no meu canal do youtube você também pode encontrar um lapso de tempo de como fiz a versão maior do Kravox)
O vídeo acima e este tutorial mostrarão todas as etapas necessárias para construir controladores e um receptor totalmente funcionais a partir de componentes elétricos e papelão facilmente disponíveis.
Parte 1 - Reunindo componentes e ferramentas
Você precisará dos seguintes componentes para construir uma estação de recepção + controlador Kravox:
{1x} 50 * 24 orifícios (tamanho mínimo) Perfboard, {5x} cabeçalhos fêmea de 40 pinos, {5x} cabeçalhos macho de 40 pinos, {5x} potenciômetros de 10 quilo-ohms e botões para eles, {3x} padrão azul de 5 mm LEDs, {3x} resistores de 150 Ohm, {2x} 10 capacitores micro-farad, {2x} capacitores de 100 nano-farad, {2x} transceptores de rádio NRF24L01, {2x} nanos Arduino, {3x} resistores de 220 Ohm, {2x} Placas de sensor de toque MPR121, {1x} giroscópio digital GY-521 MPU 6050, {2x} cabos USB-A para USB-C, {1x} 4 metros (mínimo) de fita de cobre de 1 cm de largura, {1x} banco de alimentação, {2x } 7 metros (mínimo) de fio em várias cores e, opcionalmente, {1x} 0, 2 metros de ø =tubo retrátil de 3 mm.
Além disso, você precisa de ferramentas para montar os componentes:
e depois também algumas caixas de papelão vazias ou similares:
E cola, uma pistola de cola, fita adesiva, um ou mais grampos e elásticos para fazer os invólucros:
Parte 2 - Fazendo a placa de controle
A seguir, explicarei como fazer a eletrônica do controlador passo a passo a partir das peças mencionadas acima
Em caso de dúvida, onde soldar um cabo, você pode sempre voltar ao diagrama de circuito abaixo e verificar se os componentes serão conectados corretamente, uma vez que você conecte o arduino e as placas do sensor à placa de circuito que estamos criando.
2.1
O primeiro passo é cortar o perfboard e os pin-headers fêmeas no tamanho e montá-los juntos com um capacitor pequeno e um grande que ajudam a aumentar a confiabilidade do rádio-transceptor:
Corte o perfboard com uma faca:
Corte os cabeçalhos de alfinetes femininos com uma serra (coloquei-os em um livro para nivelá-los da mesa):
Solda nas peças. Você já pode conectar cada par de pinos dos dois cabeçotes longos femininos que ficam próximos um do outro. Para os demais conectores é suficiente simplesmente anexá-los com um pouco de solda - de preferência os pinos que terão de acordo com o diagrama de circuito sem conexão posterior de qualquer maneira. Ao soldar nos capacitores, preste atenção à polaridade do capacitor eletrolítico de 10 micro-farad (o maior dos dois). Um lado terá uma listra e geralmente também uma perna mais curta. Esse lado precisa ser conectado ao aterramento. O capacitor menor de 100nano-farad não é polarizado e pode ser soldado de qualquer forma.
O resultado deve ser semelhante a este:
2.2
A segunda etapa é soldar os dois LEDs com seus resistores limitadores de corrente.
Preste atenção à polaridade doLED:um lado dele é achatado e geralmente também terá uma perna mais curta. Esse lado precisa ser conectado ao aterramento na etapa 2.3. O outro lado agora conectaremos com um cabo ciano à tomada onde o pino D3 do Arduino ficará mais tarde quando conectado:
2.3
Em seguida, adicionamos todos os cabos de alimentação vermelho e azul. Vermelho é para 3,3 Volts e azul para terra (GND)
O resultado deve ser semelhante a este:
2,4
Na quarta etapa já está ficando meio lotado no tabuleiro. As três placas do sensor comunicam-se através do protocolo I2C (circuito inter-integrado). Isso significa que todos podem ser conectados aos mesmos dois pinos do Arduino, então soldamos os cabos amarelo e verde entre eles e os pinos do Arduino A4 e A5. Também adicionamos um cabo branco para a conexão do pino de interrupção do giroscópio.
Quando isso é feito, o quadro fica assim:
2,5
O transceptor de rádio se comunica através do protocolo SPI (interface periférica serial) que requer mais conexões do que I2C, então adicionamos cabos pretos, cinza, marrons, roxos e laranja:
Isto é o que você obterá:
2.6
Agora é hora de preparar os componentes.
Além de soldar nos cabeçotes do pino macho, se eles não forem pré-soldados, preste atenção especial às placas do sensor de toque! Os modelos baratos da China têm seu pino de endereço conectado ao aterramento sem um resistor suspenso no meio, então você precisa cortar fisicamente essa conexão na parte inferior da placa com um estilete. Corte entre as duas almofadas de solda ao lado de onde ADD está escrito. Eu recomendo usar um multímetro para verificar se nenhuma conexão foi deixada entre os pads depois:
Quando todos os componentes têm seus pinos soldados e as placas do sensor de toque estão preparadas, você pode conectar o Arduino Nano, o giroscópio, as duas placas do sensor de toque e o transceptor de rádio na placa do controlador:
A (talvez) placa controladora concluída:
2,7
Depois de verificar duas vezes, se tudo estiver conectado corretamente, a próxima etapa é carregar o código do controlador Kravox fornecido (consulte os anexos) para o Arduino nano, mas antes de fazer isso, você precisará instalar bibliotecas para o giroscópio, o placas de sensor de toque e transceptor de rádio. Se você é novo nas bibliotecas do Arduino, descubra como instalá-las aqui.
- O giroscópio MPU-6050 requer as bibliotecas "I2Cdev.h" e "MPU6050_6Axis_MotionApps20.h" de Jeff Rowberg, que podem ser baixadas aqui.
- As placas de sensor de toque MPR121 precisam da biblioteca "MPR121.h" da Bare Conductive, que pode ser encontrada aqui. Existem pelo menos duas versões da biblioteca. Certifique-se de instalar a versão desenvolvida pela Bare Conductive e não a desenvolvida pela Adafruit.
- A placa transceptora de rádio NRF24L01 requer as bibliotecas "nRF24L01.h" e "RF24.h" da TMRh20 que podem ser baixadas aqui. Observação:também existem pelo menos duas versões dessas bibliotecas com nomes idênticos. Certifique-se de instalar aqueles desenvolvidos por TMRh20 e não aqueles por maniacbug.
Assim que as bibliotecas forem instaladas, você pode fazer o upload do código do Kravox-Controller. Se você já gostaria de verificar se o controlador está funcionando, você pode deixá-lo gerar dados dos sensores de toque e do giroscópio por meio do Monitor Serial. Para isso, você precisa descomentar a última seção do código do receptor antes de fazer o upload:
excluindo as marcas de comentário no início (/ *) e no final (* /) para que o código fique assim:
Depois de enviar o código com essa variação, abra o Monitor Serial e defina-o para uma taxa de transmissão (velocidade de transferência de dados) de 115200. Agora você deve ser capaz de ver os dados dos sensores que mudam quando você move a placa controladora e toca os pinos das placas MPR121 que são rotuladas de 0 a 11.
Se nada funcionar ou você obtiver apenas zeros, verifique sua fiação cuidadosamente e compare-a com o diagrama de circuito acima. Se você obtiver uma saída engraçada do Monitor Serial, verifique se configurou para a taxa de transmissão correta.
2.8
Conecte sua placa controladora ao powerbank que deseja usar com ela.
Se a placa (ou mais precisamente o powerbank) não desligar automaticamente depois de algum tempo, sua placa controladora está pronta e você pode prosseguir para a Parte 3! Caso contrário, execute a etapa 2.9
2,9
Em princípio, a placa controladora está pronta, mas alguns bancos de energia desligarão automaticamente após alguns segundos quando conectados à placa controladora, pois consome tão pouca energia
Como uma solução suja, podemos apenas adicionar três resistores de 220 Ohm em paralelo entre os pinos 5V e GND do Arduino. Esses resistores vão dissipar energia adicional e transformá-la em calor, de modo que o controlador consome o suficiente para que o banco de energia permaneça ligado. Não se preocupe:mesmo com um banco de energia pequeno, ele ainda funcionará por dias sem parar sem recarregar
Remova o Arduino Nano e solde os resistores assim:
Portanto, o quadro se parece com isto:
e depois de reconectar os componentes, a placa controladora (definitivamente) acabada fica assim:
Parte 3 - Fazendo o quadro receptor
Nesta parte do tutorial vou mostrar como fazer a placa receptora. O processo é muito semelhante a fazer a placa controladora
Se você quiser verificar onde um determinado cabo deve ser conectado, você pode consultar este diagrama de circuito:
3.1
O primeiro passo é novamente cortar o perfboard e os pin-headers fêmeas no tamanho e montá-los juntos com um capacitor pequeno e um grande que ajudam a aumentar a confiabilidade do rádio-transceptor. O cabeçalho de pino fêmea mais baixo é deixado intencionalmente por mais tempo do que o necessário, para que você possa usá-lo posteriormente para outros projetos, como um Arduino granular Synth. Você pode comparar esta etapa com a etapa 2.1 para obter mais informações
Uma foto da placa no final da etapa 3.1:
3,2
Em seguida, adicionamos todos os cabos de alimentação vermelho e azul. Vermelho é para 3,3 Volts e azul para terra (GND)
É assim que deve ser:
3,3
Soldagem nos cabos para comunicação SPI:
3.4
Anexando os componentes:
A placa do receptor está concluída agora, mas antes de podermos fazer o upload do código do receptor Kravox dos anexos para o Arduino Nano, primeiro precisamos fazer uma interface para o receptor
Parte 4 - Fazendo a interface do receptor
Nesta parte do tutorial mostro como fazer uma interface com 4 potenciômetros e um LED para o receptor. A interface é conectada assim:
E será conectado à placa receptora assim:
Proceda assim:primeiro pegue um fio de 8 cabos e solde 5 deles aos pinos do meio dos potenciômetros. De preferência, use as mesmas cores para não se confundir:
Em seguida, corte um perfboard de 2 * 17 orifícios de largura e um cabeçalho de pino macho de 17 pinos no tamanho
Conecte os cabos e o conector do pino à placa. Preste atenção ao diagrama de circuito acima para se certificar de que você conectou os cabos nos lugares certos
Agora conecte um lado de todos os potenciômetros com cabos de conexão de aterramento azuis (e talvez use cabos um pouco mais longos do que eu). Adicione também o LED azul com seu resistor de limitação de corrente de 150 Ohm. Mais uma vez, preste atenção à polaridade do LED (compare com a etapa 2.2)
Em seguida, conecte o outro lado de todos os potenciômetros com cabos de conexão verdes de 5 V (e talvez use cabos um pouco mais longos do que eu).
A interface finalizada deve ser semelhante a esta ...
...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!
Código
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/KravoxEsquemas
Processo de manufatura
- Canal e eclusa
- Saxofone
- Arco e flecha
- Dulcimer
- Rutronik:SoCs multiprotocol sem fio e módulos da Redpine Signals
- Sensor de movimento usando Raspberry Pi
- Redes sem fio 5G podem transformar IoT e impostos
- O controle de movimento integrado à segurança permite que a segurança e a produtividade coexistam
- Conexões para Controle:Interfaces de Comunicação para Sensores de Posição e Movimento
- Como escolher entre serra de fita e serra circular com base na minha peça de trabalho?