Como programar um dispositivo USB com Debian / Python

29

O Pi está sendo promovido como um dispositivo educacional principalmente para Python. Nesse sentido, já existem ótimos exemplos on-line de pessoas acessando o GPIO a partir do Python.

No entanto, a maioria dos periféricos disponíveis no mercado (em vez de em casa) possui interfaces USB. Como é possível acessá-las usando o cartão padrão Debian / Python? Existe uma biblioteca Python disponível e um bom tutorial?

winwaed
fonte
1
Eu acho que isso precisa ser mais específico. O que você está tentando fazer com USB exatamente?
Jivings
Esta é uma pergunta muito boa, eu sempre me perguntei como fazer dispositivos USB.
21712 Shane Hudson
1
A aplicação específica que tenho em mente é um sistema do tipo JMRI para acessar uma interface de controlador DCC de ferrovia modelo (por exemplo, como o Digitrax PR3). Mas isso é muito específico para este site! A questão é direcionada ao nível inferior "como eu falo com qualquer dispositivo USB do Python" - é assumido implicitamente que o programador possui a documentação do protocolo para o dispositivo que deseja programar.
winwaed
Eu vou assistir esta pergunta com cuidado. Estou olhando para dois displays de painel de toque, ambos com conjuntos de comandos ASCII simples e interfaces USB, que quero experimentar com o RasPi.
precisa

Respostas:

11

No fundo, o USB é apenas um dispositivo de comunicação serial. Como os dados são comunicados é padrão, mas o que esses dados consistem depende do dispositivo. O fabricante do seu controlador inventou uma API que consiste em comandos e mensagens no formato 'faça isso' ou 'isso está acontecendo'

Se você conhece esta API, deve poder se comunicar. Dois links possivelmente úteis são

https://walac.github.io/pyusb/

https://web.archive.org/web/20130327005316/http://www.digitalmihailo.com/post/usb-programming-with-python-on-linux

Uma fonte valiosa de informação é o USB Complete

David Sykes
fonte
Obrigado - sim, esse é o tipo de nível que eu estava buscando na minha pergunta. Protocolos / APIs de produtos para periféricos específicos são outras perguntas ou um problema para a documentação do fornecedor.
Winwaed
2

Colando isso aqui para qualquer pessoa na trilha do coelho que eu estava hoje (5 de outubro de 2014). NOTA: isto é de um POV muito inexperiente, portanto, isso pode ser óbvio para muitos de vocês, mas não foi para mim e demorei um pouco para descobrir.

Estou tentando fazer a interface de um simples scanner de código de barras a laser para um RaspberryPi B + via USB, literalmente nenhuma experiência com Linux / RBPi etc. Eventualmente, a pesquisa do Google me levou a esta página.

Cheguei à resposta fornecida por David Sykes em 15 de junho de 2012 com a referência PyUSB e, a partir daí, encontrei o Instalando o Python & PyUSB da ADAFruit , como parte do hacking do Microsoft Kinect.

Eu sinto que poderia ter passado por isso rapidamente, se fosse apenas no meu PC. Mas fazer isso através de um RaspberryPi estava realmente me deixando louco. Se você ler esse guia, encontrará o mesmo obstáculo que eu fiz, onde não é possível fazer download de coisas e não pode simplesmente misturar as coisas que eles dizem sem os arquivos. Então, como você obtém os arquivos se não pode baixá-los? [Talvez haja uma maneira de baixar esses arquivos, mas no meu Pi eu continuava recebendo um erro 400 na forja de origem e o Midori não baixava os arquivos Tar ou Zip.]

Fazendo referência ao PyUSB do Walac , você pode entrar na primeira parte do LXTerminal para obter o libusb, mas o próximo comando fornecido assume que você possui os arquivos do PyUSB e que pode localizá-los através do diretório

Então, aqui estão minhas etapas alteradas para instalar o LibUSB e o PyUSB em um RaspberryPi:

Ordem dos comandos inseridos no LXTerminal:

sudo apt-get install python libusb-1.0

Confirme com Y

sudo apt-get install python-pip

então

sudo pip install --upgrade pyusb

OBSERVAÇÃO: parte disso já pode estar no seu RBPi, dependendo do que você fez antes disso, mas executar os comandos novamente não prejudicará, simplesmente me disse que o arquivo estava atualizado.

O último comando "--upgrade pyusb" me deu o seguinte:

Downloading/unpacking pyusb
Downloading pyusb-1.0.0b1.tar.gz (44Kb): 44Kb downloaded
Running setup.py egg_info for package pyusb

Installing collected packages: pyusb
Running setup.py install for pyusb

Successfully installed pyusb
Cleaning up...

Então, acho que está tudo bem agora e posso voltar aos meus tutoriais.

Mais uma vez, estou usando uma instalação padrão do NOOBS do RaspberryPi B +. Referenciei principalmente fontes como o sistema LEARN da ADAFRUIT que foi feito principalmente com o modelo B, mas tudo o que fiz até agora está trabalhando no B +.

Espero que essa informação ajude qualquer pessoa que tenha ficado presa no mesmo ponto.

B1llaB0ng23
fonte