Zedomax DIY121 - Como fazer seu próprio "do controlador PS3 SIXAXIS" estilo básico dispositivo USB programável!
Clique aqui para ver em Tela Cheia
Dispositivos USB são fáceis para os usuários a instalar e configurar (enquanto tudo está funcionando corretamente). Muitas vezes, basta conectar um dispositivo USB e ele funciona de imediato. Isto é especialmente verdadeiro para os dispositivos de entrada, como mouses e teclados.
Esses dispositivos estão em conformidade com a especificação em camadas em cima do protocolo USB: Dispositivo de interface humana. Quase qualquer tipo de entrada é possível definir; um descritor relatório inteiro "linguagem" é usado para dizer ao computador como processar a entrada. Isto não é muito simples de implementar; dezenas de pedidos específicos, devem ser tratadas adequadamente. Há muitas etapas entre conectar um dispositivo USB e ser capaz de usá-lo; todos estes ocorrem em alguns milissegundos e falha de uma etapa significa que o dispositivo não vai funcionar.
E se você não precisa se preocupar com nada disso? E se você pudesse utilizar o seu microcontrolador preferido, fazer "alguma coisa" ea entrada é exibida no computador no formato correto? Você não teria que se preocupar com o código USB complexo, especificações HID, ou quebrar o seu código de USB ao adicionar as outras funções que você precisa. Você não teria que se preocupar muito sobre como escrever código otimizado, ou sempre ficar no caminho de interrupções USB.
HID Portal
É exatamente isso que eu decidi fazer. Um par de anos atrás, eu desenvolvi um dispositivo USB e passou por todas as dores de cabeça de ficar um USB HID instalado e funcionando. Desde que eu já tinha feito o trabalho duro, eu decidi adicionar um método de receber dados de outro micro e usar esses dados como o fluxo de entrada para o código HID. Eu queria usar um BASIC Cubloc controlador programável para processar os meus dados de entrada e enviá-lo ao Portal HID. Minha aplicação de teste seria um acelerómetro baseado joystick HID, basta conectar o dispositivo no computador e ele vai trabalhar.
Ele não tem que ser um joystick, que poderia ser um teclado, um mouse, ou muitos outros controles definidos pelo padrão HID. É possível adicionar botões de controle de volume para um dispositivo ... talvez tenha um circuito de som do seu computador quando o telefone toca? Turn any voltage input into a joystick axis, any switch into a button? Tudo é possível!
Update: Eu decidi encolher o hardware CUBLOC até uma CB220, e tudo se encaixam em um modelo de avião. O modelo foi escolhido para coincidir com um avião disponível no Heroes of The Game Pacífico foi utilizado para testar a interface de joystick.
Hardware Explicação
O Portal HID é baseado em um projeto antigo meu, baseada em um microcontrolador MC68HC908JB8 e programados em linguagem assembly. Por razões de certeza de que não podem realmente liberar o código agora, mas há uma abundância de outros projectos USB lá fora, que poderia ser adaptada para esta finalidade. Há um código aberto implementação USB macio para o microcontrolador ATtiny, por exemplo.
Meu micro não tem embutido I2C ou SPI, assim que eu precisava para realizar um dos meus próprios. Eu também não têm pinos de interrupções disponíveis, ou seja, a minha solução precisava ser baseada em pesquisa. Quando tudo foi dito e feito e otimizado, eu não poderia detectar bordas mais rápido do que 16kHz. Isso é cerca de dez vezes mais lenta do que a saída de turnos disponíveis a partir do controlador CUBLOC, então eu não podia usar isso. Acabei escrevendo meu próprio deslocamento de saída de rotina em BASIC para obter os dados para o Portal HID. Isso poderia ser evitado pelo uso de um microcontrolador que tem SPI ou I2C construído no já, mas o JB8 é o que eu tinha na mão.
Eu uso três sinais para se comunicar com o controlador CUBLOC. Primeiro, há um sinal CLK. O Portal HID detecta uma borda de subida. Nesse ponto, ele lê o valor presente na linha de dados. Esta é deslocado em um registro até que um byte foi recebido, e os movimentos de código para o próximo byte. A / RST linha é uma maneira de sincronizar o início de cada pacote de dados, caso houvesse qualquer entrada espúrios; quando baixo ele define o pacote e os índices de bit para zero.
O Portal HID está programado para agir como um joystick, com três eixos e oito botões. Eu também testou-o como um teclado. No desenvolvimento futuro, eu gostaria de fazer o Portal HID mais flexível; deixar o controlador externo selecionar o tipo de dispositivo e quantos de cada entrada são necessários. Seria a mais flexível, se aceita diretamente descritores relatório HID, mas que abre a possibilidade de cometer mais erros e acabar com um dispositivo de não-trabalho.
O acelerómetro é DE-ACCM3D da Dimensão Engenharia. O CUBLOC simplesmente lê a tensão em seus portos ADIN e converte para um valor entre -127 e 127.
Continua na Próxima Página
















































