Qual é a maneira mais simples e barata de interagir com USB?

17

Se eu quisesse criar um dispositivo simples que se comunicasse com o meu computador, digamos que talvez um comutador pudesse silenciar meu computador quando ligado e desligado e conectá-lo via USB, qual seria a maneira mais barata e fácil de fazer isso?

Sean
fonte
4
olhar para o meu usb escopo único chip aqui , é difícil fazê-lo com menos peças 1 ATTiny45 e um par de Zener, 2 chanels HID
Projeto muito legal!
usar o seguinte código

Respostas:

10

Mais fácil? Pegue um Arduino e escreva algumas linhas de Python. O Arduino é incrivelmente fácil de programar, não requer hardware adicional para trabalhar e é bastante popular . O Python tem uma biblioteca serial muito simples e é muito fácil de escrever.

Código de exemplo

Python: execute este script como um serviço. Como estou usando o Ubuntu, este script exibirá uma notificação informando quando um botão foi pressionado no Arduino.

#! /usr/bin/python

import serial
import pynotify

ser = serial.Serial('/dev/ttyUSB0', 9600)
while True:
  x = ser.read()
  if x == 'b':
    # Show notification
    n = pynotify.Notification("Arduino", "The button was pressed.")
    n.show()

Arduino:

void setup(){
  // Assuming button is active low and on pin 4
  pinMode(4, INPUT);
  Serial.begin(9600);
}

void loop(){
  if(digitalRead(4) == LOW){
    Serial.print('b');
  }
}

 

Nick Pascucci
fonte
você pode fornecer mais detalhes sobre o uso de pyserial para fazer interface com o Arduino? Amostra de código ou links apreciados.
LeanerRocky
1
Coisa certa. Confira o exemplo.
27611 Nick Pascucci
Eu realmente aprecio o exemplo. Você é lenda !!
LeanerRocky
Não vai ser mais barato embora.
quickly_now
isso não é "interface com usb", mas apenas ftdi serial.
nonchip
8

Crie um dispositivo de classe de dispositivo de interface humana USB. Essa é a mesma classe usada por teclados, mouses, joysticks, consoles de jogos e similares. O seu PC já possui suporte completo ao driver de dispositivo para dispositivos HID, facilitando o acesso ao software. Muitos ponteiros e até mesmo exemplos de código podem ser encontrados na página HID de Jan Axelson . Navegue pelo site para obter muitas informações boas relacionadas ao desenvolvimento de dispositivos USB.

Muitas das pequenas famílias de microprocessadores podem fazer HIDs. Eu já vi isso em USB Low Speed ​​com um ATR minúsculo de 8 pinos inteiramente em software.

Escolha o seu chip preferido e pesquise nos "recursos usuais" amostras HID.

Outra abordagem é criar um dispositivo de comunicação serial. Existem várias soluções de chip único da FTDI . O FT232R é uma escolha popular. Os drivers são necessários, mas os drivers certificados do Windows são conhecidos pelo assistente Novo Hardware Encontrado, portanto, a instalação não é difícil. Depois de instalado, você tem um dispositivo que se parece com uma porta COM. Estão disponíveis drivers alternativos que permitem acessar seus pinos GPIO e usá-los nos modos mais avançados.

Atualização, 2015: havia um link para http://www.lvr.com/hidpage.htm , que parece ter um link apodrecido e o novo local descoberto graças a El Marce . A Lakeview Research de Jan ainda é uma ótima fonte de informações sobre o uso prático do USB.

RBerteig
fonte
O link de Jan Axelson está quebrado. Encontrei isso ( janaxelson.com/hidpage.htm ) pesquisando no Google: "jan axelson hid page". Isso seria tão gentil em verificar se é o correto? Obrigado!
El Marce
Obrigado. Esse é o site dela agora. Suponho que a Lakeview Research perdeu ou lançou seu antigo nome de domínio e foi arrebatado por alguém novo.
RBerteig
1
Se você optar por seguir a rota FTDI, certifique-se de obter um cabo com uma peça FTDI genuína. A FTDI (uma empresa chinesa) ficou cansada de ter seus chips falsificados, então eles ensinaram seus motoristas a reconhecer seus próprios chips. Isso causou MUITO problema para as pessoas que compraram rádios bidirecionais com cabos de programação construídos com chips falsificados, porque o fabricante do rádio comprou os chips falsificados (espero que por engano!).
John R. Strohm
1
A FTDI é uma empresa inglesa (bem, na verdade escocesa) com sede em Glasgow.
quickly_now
O link do @RBerteig funciona?
Fast Snail
6

Aqui está uma postagem de blog muito detalhada http://msdn.microsoft.com/en-us/devlabs/dd491992 com software para usar um PIC18F4550 abaixo de US $ 5 para fazer a interface via USB como um dispositivo HID padrão. O software fornecido pode ser usado para fazer interface com qualquer dispositivo HID; portanto, se você quiser um chip alternativo, o software continuará funcionando.

Uma vantagem adicional é que a postagem do blog mostra como fazer a comunicação bidirecional, para que você não apenas conecte um switch, como também ligue e desligue um LED.

JonnyBoats
fonte
3

Aqui está um projeto simples meu usando um PIC18F2455, baseado no software USB de Brad Minch. PCBs estão disponíveis na Olimex.

Leon Heller
fonte
2

Se você não se importa com o microcontrolador baseado no Cortex-M3, dê uma olhada no LPC1343 da NXP . É apenas US $ 6,30 na Digikey (1 peça). Há um recurso muito interessante - firmware para armazenamento e dispositivos HID na ROM do chip!

Comparado a uma solução com chip FTDI + microcontrolador, há um chip a menos :)

Pintores de código
fonte