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 conecta a la computadora para que envíe una señal cuando se activa, tal vez tocando una batería o algo así.
Mi objetivo es crear un botón simple que pueda usar para realizar una serie regular de acciones con solo presionarlo. Sé que venden cosas como esta, pero sería más genial y quizás más barato si hubiera una forma de bricolaje.
Aparte de las soluciones prácticas anteriores, hay más formas diy hacky. Desmonte un teclado USB y retire la matriz de teclas. Reemplace una combinación de matriz específica con un solo botón (por ejemplo, uno sin usar como f8). Luego use un programa de teclas de acceso rápido de software para llevar a cabo el resto en función de ese teclado específico y la pulsación de tecla.
La otra forma sería desmontar un ratón y hacer lo mismo. Pero un teclado es más simple y con cualquier uno barato reciente, la placa de circuito impreso tendría aproximadamente el 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. Pura bondad del teclado USB HID.
ATTiny + V-USB actuando como teclado HID. ATMega32U4 (por ejemplo, Arduino Leonardo) actuando 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 puedo pensar en la parte superior de mi cabeza.
Necesitará algún microcontrolador de alguna descripción capaz de interactuar con USB. No puede simplemente cortar el extremo del cable y esperar simplemente conectar los cables y hacer que imprima números sin algún tipo de procesador.
USB es un protocolo bastante complejo, por lo que la mejor opción es encontrar algo que haga lo que usted quiere (como un teclado) o un microcontrolador con una pila USB HID preescrita para la que luego puede 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 la placa Leonardo que se pueden usar para enviar pulsaciones de teclas a la PC.
Le recomendaría que use un cable USB a serie (o adaptador, como se les suele llamar). Los controladores son fáciles de conseguir y, por lo general, se instalan automáticamente. Luego puede alternar 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.
Supongo que desea trabajar con los controladores de dispositivos USB existentes en los sistemas operativos comunes, por ejemplo, Windows (varias versiones), OS X y Linux. Esto permitiría que un programa que se ejecuta en la PC host abra un archivo y lea el archivo 1
.
Para enviar un mensaje 1
que sea reconocido por la PC host, deberá intercambiar varios paquetes de mensajes. No es una señal simple de un bit, ni siquiera fija de varios bits.
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.
Necesita entender cómo funciona el USB. Este tutorial de USB USB en pocas palabras puede ayudar. Describe el protocolo con suficiente detalle para que sea comprensible cómo la PC host interactuará con el dispositivo USB.
Para que sea fácil de usar, probablemente implementará un dispositivo HID, que parece un teclado para la PC host. La pulsación del botón se podría hacer para que se vea exactamente como un teclado 1
. Hay varios proyectos que puedes encontrar buscando en la web. Todos utilizan un microcontrolador para gestionar la compleja interacción con el host.
Un ejemplo, que implementa USB totalmente en software usando 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 digispark.
Hay muchas MCU que incluyen una interfaz USB de hardware. Por lo general, cuestan más de 1 GBP. Si desea seguir este camino, la mayoría de los fabricantes de MCU habilitados para USB proporcionan algún tipo de biblioteca, y también es la biblioteca USB de código abierto 'LUFA' .
Resumen : el protocolo USB es tan complejo que necesitará un microcontrolador para implementar cualquier cosa útil. USB no es un patrón de bits binario simple.
Editar:
este pedal V-USB parece una solución ajustada, si mis otras suposiciones son correctas. Tiene un solo botón, emula un teclado y está construido sobre una pieza de stripboard (veroboard) con un ATtiny y algunos componentes.
Podría usar su Arduino para hacer un programador AVR ISP. 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.
1
sin emular un dispositivo HID? ¿O al menos emulando un dispositivo bien definido?1
, un carácter o un código clave. En segundo lugar, no entiendo qué nivel de control o acceso tiene el OP a la máquina, por lo que asumo un programa simple, por ejemplo, un archivo por lotes/script de shell en una PC estándar. En tercer lugar, el OP no ha aclarado la pregunta, por lo que no pasaré más tiempo hasta que la aclaren. La señalización de bajo nivel puede ser completamente adecuada o inútil, pero solo el OP puede decirlo.Podría usar algo como esta placa de conexión FTDI que le permite interactuar fácilmente a través del protocolo en serie a través de USB.
USB tiene una señalización compleja de hecho. Pero lo que muchos pasan por alto es que el 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 necesitará es hacer 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ía 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 un cambio simple, esto fallará, pero el intento y la falla se pueden detectar en los mensajes de registro del sistema o mediante el código del kernel personalizado y, por lo tanto, puede satisfacer su necesidad.
Espere algo de latencia y una baja tasa de repetición si usa la pila USB estándar, pero los controladores de modo kernel personalizados probablemente puedan hacer esto a velocidades que se sentirían rápidas en términos humanos.
Ale..chenski
gbulmer
CodyBugstein
gbulmer
CodyBugstein