Índice:

Caixa extensora de joystick de teclado Arduino e controlador de som usando Deej: 8 etapas
Caixa extensora de joystick de teclado Arduino e controlador de som usando Deej: 8 etapas

Vídeo: Caixa extensora de joystick de teclado Arduino e controlador de som usando Deej: 8 etapas

Vídeo: Caixa extensora de joystick de teclado Arduino e controlador de som usando Deej: 8 etapas
Vídeo: NR-12 Acidente em torno 2024, Dezembro
Anonim
Caixa extensora de joystick de teclado Arduino e controlador de som usando Deej
Caixa extensora de joystick de teclado Arduino e controlador de som usando Deej

Projetos Tinkercad »

Por que

Há algum tempo, venho querendo adicionar um pequeno joystick ao meu teclado para controlar os elementos da interface ou outras tarefas menores em jogos e simuladores (MS Flight Sim, Elite: Dangerous, Star Wars: Squadrons, etc).

Além disso, para Elite: Dangerous, tenho lutado para misturar níveis de volume de áudio externo (a música embutida, embora boa, torna-se repetitiva depois de muitas horas no escuro), áudio do jogo e suporte de pacote de voz externo.

O mixer de origem integrado do Windows é 'ok', mas é uma dor de mudar de tela e controles deslizantes do mouse no meio de um jogo. Ter uma caixa de controle de teclado estendida parecia o caminho a percorrer. Deej é a solução que encontrei.

Quão

Recentemente, aprendi sobre o Arduino e descobri o projeto deej no reddit. Parecia que isso resolveria ambos os problemas em um pacote prático. E me permitiria projetar e imprimir uma caixa 3D bacana.

O que é DJ?

(do site) deej é um ** mixer de volume de hardware de código aberto ** para PCs com Windows e Linux. Ele permite que você use controles deslizantes da vida real (como um DJ!) Para ** controlar perfeitamente o volume de diferentes aplicativos ** (como seu reprodutor de música, o jogo que você está jogando e sua sessão de bate-papo por voz) sem ter que parar o que você está fazendo.

Minha versão

Para manter a caixa pequena, optei por botões (potenciômetro linear rotativo (potenciômetros = resistores)) em vez de controles deslizantes. Funcionalmente, eles funcionam da mesma forma. Os designs de DJ atuais e populares não incluem um joystick, então este será um pouco como um híbrido de design. Caso contrário, é uma construção bastante simples.

Deej funcionará com um Arduino Nano, Pro Micro ou Uno, mas o Nano e o Pro Micro são 'oficialmente recomendados' pelo desenvolvedor. Escolhi o Arduino Pro Micro porque queria o joystick, e a biblioteca de joystick do Arduino o suporta. Também posso usar a biblioteca de teclado do Arduino quando quiser usar a função de silêncio do teclado de mídia (em vez do 'silêncio suave') com o botão do joystick, mas isso está mais adiante.

Etapa 1: suprimentos

Suprimentos
Suprimentos
Suprimentos
Suprimentos
Suprimentos
Suprimentos

A Caixa

Baixe os arquivos STL (projetados no Tinkercad):

  • Arquivos anexos em Prusa (https://www.prusaprinters.org/)
  • Thingiverse (em breve)

O hardware (unidade de produção)

  • 1x Arduino Pro Micro
  • 4 potenciômetros rotativos (botão) de 10k (não controladores rotativos, use potenciômetros)
  • 1x Joystick Arduino KY-023
  • Cabo de rede cat5 de sucata de 5 pés
  • 1x cabo USB A para USB B micro (USB A é o grande conector quadrado, USB B micro é o que está no Arduino Pro Micro)
  • 1 LED vermelho de 5 mm
  • 1 resistor de 220 ohms

Eu tinha algumas peças extras, então pensei em construir uma unidade de desenvolvimento para testar as coisas. Apenas conectar as coisas a uma placa de ensaio tornou mais fácil visualizar a coisa final.

  • 1x Arduino Pro Micro
  • 4 potenciômetros rotativos (botão) de 10k (não controladores rotativos, use potenciômetros)
  • 1x interruptor de botão momentâneo (interruptor de reinicialização forçada)
  • 1x cabo USB A para USB B micro (USB A é o conector quadrado grande, USB B micro é o que está no Arduino Pro Micro)
  • fios de ligação variados
  • tábua de pão
  • 1 LED vermelho de 5 mm
  • 1 resistor de 220 ohms

Etapa 2: o gabinete

The Enclosure
The Enclosure
The Enclosure
The Enclosure
The Enclosure
The Enclosure
The Enclosure
The Enclosure

O design

Eu gostei de alguns dos outros designs perfilados na galeria da comunidade deej, então me baseiei nos recursos que eu gostei:

  • Fácil de projetar e imprimir
  • Não atrapalhar meus outros periféricos de desktop
  • Não use parafusos ou fechos para prender o gabinete
  • Estética de design semelhante ao teclado

Eu projetei e imprimi dois protótipos antes de me decidir pelo design final. Gosto de ter uma versão física para brincar no espaço em que estou usando, pois me dá uma ideia melhor de como o objeto final funcionará.

Comecei a projetar brevemente no Fusion360, mas não o conheço tão bem quanto o Tinkercad, então mudei e trabalhei lá.

Como eu queria um design que dispensasse o uso de parafusos, criei uma caixa de nidificação. O primeiro protótipo tinha uma tampa fina e uma caixa funda para tudo. O segundo projeto substituiu isso por uma tampa profunda e uma caixa de fundo rasa. Ele só precisava conter o Arduino Pro Mini, então realmente não precisava ser grande. Também incorporou os ícones em relevo.

O terceiro design foi redimensionado para caber no espaço ao lado do meu teclado.

A impressão

Imprimi a caixa em PLA, programando uma troca de filamento / camada de Preto para Vermelho para a tampa onde os ícones começariam a ser visíveis, e novamente para Preto para o restante da tampa.

Um problema

Em tudo isso, a montagem do joystick foi um problema. Mesmo no terceiro projeto, o bastão bate contra os suportes em um só lugar. A próxima iteração terá folgas melhores. Eu poderia ter trabalhado mais no design, mas queria passar para a próxima fase, a instalação.

Etapa 3: o circuito

O circuito
O circuito
O circuito
O circuito
O circuito
O circuito

Pior trabalho de fiação de todos os tempos

Ok, este é meu primeiro projeto Arduino completo. Sim, eu já fiz coisas em placas de ensaio antes e estou usando uma para construir a versão de desenvolvimento disso, mas quanto à fabricação e montagem de fato, esta é a minha primeira. Então, minha fiação parece uma porcaria. Pronto, isso está fora do caminho:)

Atualização: desde então construí outro e a fiação é muito melhor lá. Veja as imagens:)

Unidade de produção - o que está acontecendo e onde

O Arduino Pro Micro é uma pequena placa e cabe na seção moldada da base. Os botões e joystick se encaixam em seus respectivos orifícios na tampa. Mas não monte nada até conseguir a competição de solda.

Fiação

Eu não tinha nenhum fio de circuito adequado, mas tinha um rolo restante de cabo de rede cat5 de núcleo sólido, então foi o que usei. É um pouco mais rígido e talvez mais frágil do que o fio de circuito trançado, mas funciona.

Dispondo os componentes em uma aproximação de sua posição final de montagem, eu estimei a distância, para cada fio, adicionei um pouco mais para folga, etc, então cortei e aparei o fio. Eu deixei muita folga.

Referindo-se ao diagrama de fiação, executei o aterramento comum (preto) e VCC (vermelho) para os botões e joystick onde indicado. Como o cabo de rede não vem nessas cores, escolhi apenas uma cor e mantive minha fiação consistente com a função.

O Pot individual. as linhas analógicas (amarelas) vão para os pinos A0 - A3. As linhas do Joystick (laranja), também analógicas, correram para os pinos de E / S 8 e 9. Eles deverão ser designados como analógicos no código do Arduino como A8 e A9.

O pino da chave do joystick (Azul) correu para o pino 7. Este será um pino digital no código.

Isolamento

Como esse fio rígido será colocado em um espaço pequeno, optei por isolar minhas conexões de solda com uma boa quantidade de cola termofusível. Em seguida, colocou tudo no lugar e executei um teste simples na placa e nos potes usando a versão do código Arduino Example AnalogInput - modificado para ler todos os potes.

Segunda versão

As duas últimas imagens acima mostram a próxima caixa que estou construindo. Este terá 5 botões e um botão momentâneo para o mudo. Sem joystick. Caixa do mesmo tamanho.

Etapa 4: Concluindo o Hardware

Terminando o Hardware
Terminando o Hardware

No momento em que instalei o Joystick, percebi que não havia muito espaço entre a placa e os cabeçotes de pino restantes no Pro Micro.

Depois de dobrar com cuidado os cabeçotes dos pinos e reaplicar a cola hot melt (para isolamento), o invólucro foi fechado corretamente.

A instalação das panelas ocorreu sem problemas.

De novo com os fios

Os fios de núcleo sólido são um pouco rígidos e podem ser quebradiços se flexionados muitas vezes, portanto, dobre-os com cuidado (sem cantos agudos) no espaço disponível. Algumas das minhas eram muito longas e exigiam um pouco mais de dobra.

Depois que tudo estiver encaixado no lugar, basta encaixar a base na parte superior e você deve terminar com o hardware….

Mas espere, tem mais

Obviamente, depois de algumas semanas de uso, decidi que precisava de um indicador para me informar qual é o status da função MUTE codificada por software.

Depois de editar o código para adicionar a funcionalidade do LED (consulte a próxima seção), eu rapidamente soldei o LED / fios / resistor e os conectei à placa.

Passei mais tempo fazendo o furo na parte superior da caixa, pois não queria estragar o acabamento superior. Marquei um ponto central, amassei e girei uma broca para fazer o furo.

Uma lima cuidadosa adicional limpou o orifício e garantiu um bom ajuste de pressão para garantir que o LED não se projetasse muito acima da superfície superior.

Etapa 5: o software

O software
O software
O software
O software
O software
O software

Visão geral

Portanto, este é um processo de duas partes.

  1. Obtenha e entenda como Deej funciona e edite o arquivo Config.yaml
  2. Edite o código do Arduino para corresponder ao hardware e aos recursos desejados
  3. Obtenha a biblioteca Arduino Joystick

No meu caso, eu queria estes recursos:

  • Botões que controlam os níveis (microfone e saída)
  • Interruptor de mudo
  • Joystick de 2 eixos reconhecido pelo Windows para uso em aplicativos

Níveis

Deej praticamente cuida do primeiro ponto quando ele chega. Eu não ajustei essa funcionalidade

Interruptor de mudo

Eu havia determinado desde o início que usaria o botão / interruptor no Joystick como um botão de mudo funcional.

Ao examinar o código, você verá que escolhi (inicialmente) usar um mudo 'suave' - quando o botão é pressionado, o volume do MIC é reduzido a zero (e o LED acende). Quando é pressionado novamente, o volume do MIC retorna à configuração anterior e o LED se apaga.

Eventualmente, estarei observando a implementação da biblioteca de teclado do Arduino para alternar o status Mudo por meio do conjunto de códigos de teclado de mídia estendida.

Implementação de joystick

Isso requer o uso da biblioteca Arduino Joystick para garantir que o joystick seja reconhecido como um dispositivo HID pelo Windows e, consequentemente, por qualquer jogo / aplicativo.

Eu sou um pouco novato quando se trata de codificação e achei a documentação da biblioteca do Joystick um pouco esparsa no lado da implementação real - mas um pouco de pesquisa focada no Google me levou a outros exemplos que me ajudaram a entender o que está acontecendo. Verifique a seção de recursos no final para obter detalhes.

Tudo que eu tive que fazer foi identificar os pinos X / Y, ler seu estado e enviar para a biblioteca de Joystick. O Arduino apareceu como um Leonardo para o Windows e foi configurado corretamente como um dispositivo Joystick.

Consegui configurá-lo em Elite Dangerous, junto com minha configuração HOTAS existente e fazer com que o Joystick controlasse as coisas adequadamente e não entre em conflito com o HOTAS. Também funciona bem em Star Wars: Squadrons - configurei como um botão de alternância rápido para configurar os escudos durante o combate.

Os arquivos que funcionam com minha configuração de joystick

Eu carreguei meus arquivos atuais (outubro de 2020) para Codepile.

  • Código Arduino (arquivo.ino)
  • Deej config.yaml

Etapa 6: Fim

Fim
Fim

Bem, este está feito. Funciona e estou bastante satisfeito com a forma como surgiu. E aprendi um pouco mais sobre design de hardware, integração e programação do Arduino.

Etapa 7: Addendum..dum..dum

Addendum..dum..dum
Addendum..dum..dum

VLC - aquele incrível reprodutor de áudio e vídeo tem um pouco de estranheza onde o nível de volume, quando controlado externamente, salta de 0% para 27% ish. Isso não acontece ao ajustar o nível usando o controle de volume da interface do aplicativo, apenas com controles externos como Deej.

O desenvolvedor Deej rapidamente encontrou uma solução alternativa em VLC que faz o trabalho, veja a imagem acima:

"… se você quiser desativar esse comportamento de" Rastreamento ", pode fazê-lo alterando o módulo de saída de áudio do VLC. Usei o DirectX em minhas tentativas aqui. Você precisará reiniciar o VLC para que a alteração tenha efeito. (Você ainda ter uma sessão de áudio do Windows e ser capaz de controlá-la via deej, isso apenas impedirá que a barra de volume do VLC se mova com ela)"

Etapa 8: Recursos Adicionais

Recursos adicionais
Recursos adicionais

Encontrado por meio do poderoso Goog, listado em nenhuma ordem particular …

  • Arduino Joystick Library (v2) - necessária para integrar o joystick
  • Guia de conexão Sparkfun Pro Micro - um bom recurso sobre este Arduino
  • deej - o software que comanda os botões
  • Tipos de conectores USB - quem sabia que havia tantas variantes?
  • Pinagem analógica do Arduino Pro Micro
  • Arduino Leonardo Gaming Joystick - Leonardo é semelhante ao Pro Micro, só que maior
  • Porta Arduino Pro Micro (clone) não detectada (solução) - quando você brickou seu Pro Micro (eu fiz)
  • Arduino Leonardo / Micro como controlador de jogo / joystick
  • Exemplo de uso de uma chave multimídia para silenciar - usando a biblioteca de projetos HID
  • Exemplo de código de biblioteca do Projeto HID para pausar / reproduzir mídia
  • Outro exemplo de código mostrando o controlador do gamepad.
  • ArduinoGamingController_updated - boa descrição do código do uso da Biblioteca Joystick
  • Coisa da calculadora do resistor de LED - para descobrir o tamanho do resistor que você precisa em seu projeto
  • Biblioteca de ícones - flaticon.com - fonte das imagens usadas acima dos botões giratórios
  • Outro decodificador de cores do resistor - clique em uma cor e viola!

Recomendado: