Comment programmer un périphérique USB avec Debian / Python

29

Le Pi est promu comme un appareil éducatif principalement pour Python. En ligne avec cela, il y a déjà eu de bons exemples en ligne de personnes accédant au GPIO à partir de Python.

Cependant, la plupart des périphériques disponibles sur le marché (plutôt que ceux fabriqués à la maison) ont des interfaces USB. Comment s'y prendre en utilisant la carte Debian / Python standard? Existe-t-il une bibliothèque Python disponible et un bon tutoriel?

winwaed
la source
1
Je pense que cela doit être plus précis. Qu'essayez-vous de faire avec l'USB exactement?
Jivings
C'est une très bonne question, je me suis toujours demandé comment fabriquer des périphériques USB.
Shane Hudson
1
L'application spécifique à laquelle je pense est un système de type JMRI pour accéder à une interface de contrôleur DCC de modélisme ferroviaire (par exemple, comme le Digitrax PR3). Mais c'est bien trop spécifique pour ce site! La question vise le niveau inférieur "comment puis-je parler à n'importe quel périphérique USB de Python" - il est implicitement supposé que le programmeur a la documentation de protocole pour le périphérique qu'il souhaite programmer.
winwaed
Je vais regarder attentivement cette question. Je regarde deux écrans tactiles, à la fois avec des jeux de commandes ASCII simples et des interfaces USB, que je veux essayer avec le RasPi.
Ray Depew

Réponses:

11

L'USB n'est au cœur qu'un appareil de communication série. La manière dont les données sont communiquées est standard, mais la composition de ces données dépend de l'appareil. Le fabricant de votre contrôleur aura inventé une API qui se compose de commandes et de messages de la forme «faites ceci» ou «cela se produit»

Si vous connaissez cette API, vous devriez pouvoir communiquer. Deux liens éventuellement utiles sont

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

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

USB Complete est une précieuse source d'informations

David Sykes
la source
Merci - oui, c'est le genre de niveau que je visais pour ma question. Les protocoles / API de produit pour des périphériques spécifiques sont d'autres questions, ou une question pour la documentation du fournisseur.
winwaed
2

Coller ceci ici pour quelqu'un d'autre sur le sentier du lapin que j'étais aujourd'hui (5 octobre 2014). REMARQUE: cela vient d'un PoV très inexpérimenté, donc cela peut être évident pour beaucoup d'entre vous, mais ce n'était pas pour moi et il a fallu un certain temps pour le comprendre.

J'essaie d'interfacer un simple scanner de codes-barres laser à un RaspberryPi B + via USB, littéralement aucune expérience avec Linux / RBPi etc. Finalement, la recherche Google m'a amené à cette page.

J'ai obtenu la réponse fournie par David Sykes le 15 juin 2012 avec la référence PyUSB et à partir de là, j'ai trouvé Installation Python & PyUSB d'ADAFruit , dans le cadre de leur piratage d'un Microsoft Kinect ..

Je pense que j'aurais pu m'en sortir assez rapidement si cela n'avait été que sur mon PC. Mais le faire avec un RaspberryPi me jetait vraiment une boucle. Si vous lisez ce guide, vous atteindrez le même barrage routier que j'ai fait où vous ne pouvez pas télécharger de trucs et vous ne pouvez pas simplement écraser les choses qu'ils disent sans les fichiers. Alors, comment obtenez-vous les fichiers si vous ne pouvez pas les télécharger? [Il y a peut-être un moyen de télécharger ces fichiers, mais sur mon Pi, je continuais à recevoir une erreur 400 sur la forge source et Midori ne téléchargerait pas les fichiers Tar ou Zip.]

En faisant référence à PyUSB de Walac , vous pouvez entrer en première partie dans le LXTerminal pour obtenir libusb, mais la commande suivante donnée suppose que vous avez les fichiers pour PyUSB et que vous pouvez les localiser via le répertoire.

Voici donc mes étapes modifiées pour installer LibUSB et PyUSB sur un RaspberryPi:

Ordre des commandes que j'ai entrées dans le LXTerminal:

sudo apt-get install python libusb-1.0

Confirmez avec Y

sudo apt-get install python-pip

puis

sudo pip install --upgrade pyusb

REMARQUE: une partie de cela peut déjà être sur votre RBPi en fonction de ce que vous avez fait avant cela, mais recommencer les commandes ne le blessera pas, cela m'a simplement dit que le fichier était à jour.

La dernière commande "--upgrade pyusb" m'a donné ce qui suit:

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...

Donc, je pense que tout va bien maintenant et je peux revenir à mes tutoriels.

Encore une fois, j'utilise un RaspberryPi B +, une installation standard de NOOBS. J'ai principalement référencé des sources telles que le système LEARN d'ADAFRUIT qui a été fabriqué principalement avec le modèle B, mais tout ce que j'ai fait jusqu'à présent fonctionne sur le B +.

Espérons que cette information aidera toute autre personne coincée au même moment.

B1llaB0ng23
la source