¿Cómo puedo construir un dispositivo de señalización USB simple?

1

Me gustaría construir un dispositivo simple que se conecte a un puerto USB y envíe una señal a la computadora (es decir, solo un 1 ) cuando un usuario presiona el botón o el interruptor, etc.

Me imagino que debe haber alguna forma de tomar un cable USB y modificar el lado que no se enchufa en la computadora para que envíe una señal cuando se active, tal vez tocando una batería o algo.

Mi objetivo es crear un botón simple que pueda usar para realizar una serie regular de acciones con solo presionar. Sé que venden cosas como esta, pero sería más fresco y quizás más barato si hubiera una forma de bricolaje.

    
pregunta CodyBugstein

6 respuestas

4

Aparte de las soluciones prácticas anteriores, hay más formas de piratear. Desarmar un teclado USB y eliminar la matriz de claves. Reemplace una combinación de matriz específica con un solo botón pulsador (digamos uno no utilizado como f8). Luego, utilice un programa de teclas de acceso rápido para realizar el resto según el teclado y la pulsación de teclas específicos.

La otra forma sería desarmar un mouse y hacer lo mismo. Sin embargo, un teclado es más simple y, si se compara con uno reciente, el PCB sería del tamaño de una unidad flash.

Pero una solución de microcontrolador se puede hacer completamente sin necesidad de ningún software del lado de la computadora. Pureza del teclado USB HID puro.

    
respondido por el Passerby
4

ATTiny + V-USB actúa como teclado HID. ATMega32U4 (por ejemplo, Arduino Leonardo) que actúa como teclado HID. PIC18F14K50 actuando como, sí, un dispositivo USB HID. Hay una gran cantidad de otros microcontroladores habilitados para USB, esos son solo tres que se me ocurren en la cabeza.

Necesitará un microcontrolador de alguna descripción capaz de interactuar con USB. No se puede simplemente cortar el extremo del cable y esperar simplemente conectar los cables y hacer que impriman números sin algún tipo de procesador.

El USB es un protocolo bastante complejo, por lo que lo mejor es encontrar algo que haga lo que quieras (como un teclado), o un microcontrolador con una pila HID USB preescrita para luego personalizar el código para enviar información de pulsación de tecla cuando se presiona un botón.

Ciertamente hay códigos de muestra disponibles para el tablero Leonardo que se pueden usar para enviar pulsaciones de teclas a la PC.

    
respondido por el Tom Carpenter
3

Le recomendaría que use un cable USB a Serial (o adaptador, como suele llamarse). Los controladores son fáciles de conseguir y, por lo general, se instalan automáticamente. Luego, puede cambiar el estado de uno de los pines de control, como CTS o RI usando su interruptor. Esto le permitirá leer fácilmente las líneas con un programa simple en su sistema. Puede alternar las líneas de salida a su circuito de manera similar, si lo necesita.

Hice esto yo mismo para monitorear un relé magnético montado en una puerta para monitorear y marcar las entradas al laboratorio.

    
respondido por el Blair Fonville
2

Supongo que desea trabajar con los controladores de dispositivos USB existentes en sistemas operativos comunes, por ejemplo. Windows (varios sabores), OS X y Linux. Esto permitiría que un programa que se ejecuta en la PC host abra un archivo y lea el 1 .

Para enviar un 1 reconocido por la PC host, deberá intercambiar varios paquetes de mensajes. No es una simple señal de un bit, o incluso de multibits fija.

En su lugar, el sistema operativo host solicitará suficiente información de su dispositivo de "botón" USB para averiguar qué tipo de dispositivo USB es, e iniciar el controlador de dispositivo correspondiente.

Necesitas entender cómo funciona el USB. Este tutorial sobre USB USB en pocas palabras puede ayudar. Describe el protocolo con suficiente detalle que es comprensible cómo interactuará la PC host con el dispositivo USB.

Para que sea fácil de usar, probablemente implementará un dispositivo HID, que parece un teclado para la PC host. Se puede hacer que la presión del botón se vea exactamente como un teclado 1 . Hay varios proyectos que puedes encontrar buscando en la web. Todos utilizan un microcontrolador para gestionar la interacción bastante compleja con el host.

Un ejemplo, que implementa USB totalmente en software que usa un microcontrolador de bajo costo es V-USB .

Hay varios otros proyectos, algunos que hacen lo que estás describiendo, como Teensy de PJRC , y yo digispark

Hay muchos MCU que incluyen una interfaz USB de hardware. Típicamente cuestan más de 1GBP. Si desea seguir este camino, la mayoría de los fabricantes de la MCU habilitada para USB proporcionan algún tipo de biblioteca, y también es el código abierto Biblioteca USB 'LUFA' .

Resumen : el protocolo USB es tan complejo que necesitará un microcontrolador para implementar cualquier cosa útil. USB no es un simple patrón binario de bits.

Editar:
Este stompbox V-USB parece una solución ajustada, si mis otras suposiciones son correcto. Tiene un solo botón, emula un teclado y está construido en una pieza de stripboard (veroboard) con un ATtiny y algunos componentes.

Puedes usar tu Arduino para hacer un programador ISP AVR. Eso le permitiría cargar el firmware en el ATtiny, por lo que podría ser un proyecto bastante rápido y de bajo costo.

    
respondido por el gbulmer
1

Podría usar algo como esta placa de separación FTDI que le permite interactuar fácilmente a través del protocolo serie a través de USB.

    
respondido por el mindcrime
0

El USB tiene una señalización compleja de hecho. Pero lo que muchos pasan por alto es que USB también emplea una señalización muy simple . Si controla completamente el software en la computadora, dependiendo de sus objetivos, todo lo que realmente necesita es que su botón conecte una resistencia entre cualquiera de las líneas de datos y VBUS.

Tal resistencia pull-up es la forma en que los periféricos USB señalan su presencia y cuál de las dos velocidades base utilizan. La pila USB del sistema operativo normalmente intentará hablar con el dispositivo utilizando la señalización USB diferencial de estado complejo normal y leerá información básica como VID / PID para determinar qué controlador se necesita. Por supuesto, en el caso de cambio simple, esto fallará pero el intento y el fallo son detectables de los mensajes de registro del sistema o mediante un código de kernel personalizado, y por lo tanto pueden satisfacer sus necesidades.

Espere un poco de latencia y una baja tasa de repetición si usa la pila USB de almacenamiento, pero los controladores de modo de kernel personalizados probablemente lo hagan a velocidades que se sentirían rápidas en términos humanos.

    
respondido por el Chris Stratton

Lea otras preguntas en las etiquetas