MagPI 3 Page 15

De Le French MagPi
Aller à : Navigation, rechercher

Une introduction basique des périphériques USB

Tous les moteurs du robot sont connectés par des fils à la carte électronique. En envoyant des signaux à la carte, nous pouvons contrôler chaque moteur. Cette carte électronique est un périphérique USB.

Les protocoles et les méthodes utilisés par USB sont très complexes et les évènements arrivent si rapidement qu'il faut des logiciels intelligents pour voir ce qui se passe en sniffant le port USB. Ce port est tellement étrange que personne ne peut se mettre d'accord sur qui l'a inventé et pourquoi ! Certains disent qu'il a été conçu pour réduire le nombre de câble à l'arrière du PC et il ressemble à l’ "Apple Desktop Bus" des débuts d'Apple - donc il a dû être inventé par Apple. D'autres en désaccord, pointent qu'il fonctionne comme de l’Ethernet 10 Base T (réseau d'ordinateur) avec une topologie en étoile et donc ça ne peut pas être Apple. Je pense que personne ne gagnera jamais.

Les périphériques USB ont un "Vendor ID" et un "Product ID". Ces ID's sont fournis par une organisation spéciale (USB.org). Ils différencient tous les périphériques du marché entre eux et permettent à l'ordinateur de les reconnaitre lorsqu'on les connecte. Voilà pourquoi lorsque vous branchez une souris sur votre ordinateur, il sait que c'est une "Acme Optical Mouse" et pas une "Eastern Electric My Personal Storage Pad". (Ou dans notre cas un "OWI Edge Robot Arm")

Il y dans les circuits des périphériques USB des "endpoint addresses" (adresse de point de terminaison). Les périphériques USB utilisent des "pipes" (lignes dédiées pour transmettre des données entre le périphérique et l'ordinateur). Au bout du tuyau (pipe), dans votre ordinateur, il y a un "hub" USB (qui fonctionne de la même façon qu'un hub réseau. Il permet d'attacher plusieurs périphériques qui ensuite partent sur un seul point). le "endpoint" est à l'autre bout du tuyau dans le port USB du robot et l'adresse spécifie où il est. Certains périphériques USB sont appelés périphériques "composite" parce qu'ils combinent 2 périphériques ou plus ensemble (comme une webcam avec son micro intégré). Un tel périphérique devrait au moins avoir 2 "endpoints" : 1 pour la webcam et un pour le micro.

Lorsque l'on travaille sur des périphériques USB composite, nous avons besoin aussi de nous référer à un numéro d'interface. Lorsqu'un périphérique USB est vraiment composé de plusieurs périphériques travaillant ensemble et chaque périphérique est à un "endpoint", alors une interface regroupe ces "endpoints" pour permettre à chaque périphérique de travailler ensemble pour réaliser une fonction simple. L'interface est référencée par un numéro d'interface. Ce numéro est l'index pour le périphérique qui permet au contrôleur USB de savoir à qui il parle. Le premier numéro d'interface est "0", le deuxième "1", etc...

Pour autant que le contrôle de l'ordinateur et USB est concerné, notre robot est un simple périphérique (c'est une carte électronique qui allume/éteint des moteurs électriques lorsqu'elle reçoit le bon signal de l'USB) et il est donc très simple d'écrire des programmes pour le contrôler.

Vous pouvez vous représenter la carte électronique dans le robot comme 3 lignes de 8 états (on/off) (connu aussi comme 3 octets). Lorsque l'ordinateur lui envoie le bon signal via l'USB, il modifie 1 ou plusieurs états (on) et cela démarre un moteur du bras en tournant dans un sens ou un autre.

Le circuit électronique du robot utilise une numérotation appelé "binaire". Lorsque vous envoyé un code de contrôle comme [128,0,0], ces nombres sont convertis dans leur équivalent binaire. Par exemple la dernière commande deviendrait [10000000,00000000,00000000]. Le "1" dans le premier nombre binaire est équivalent à mettre sur "on" l'état du moteur de l'épaule qui va donc tourner.

Lorsque la donnée est envoyée vers ou depuis un périphérique USB, l'information est toujours envoyé comme une série d'octets, ou 8 signaux "on" et "off" / "1" ou "0". Ces signaux sont interprétés par les périphériques USB de différentes manières et leurs permettent de réaliser toutes les différentes opérations dont ils sont capables.

Prochaine étape pour le Skutter

Pour le moment, même avec notre programme de contrôle du robot, ce n'est toujours rien de plus qu'un jouet. Il n'a toujours pas la notion d'où il est ou ce qu'il fait. En fait, nous voulons que notre robot accomplisse des "missions".

Nous allons ajouter des capteurs à notre robot pour savoir sa position et lui donner la notion robotique d'où il se situe. Les valeurs de ces capteurs devront revenir vers le "cerveau" Raspberry Pi via GPIO. Si vous avez commencé à suivre la série des "Sous Contrôle" dans ce magazine, vous devez imaginer comment nous pouvons commencer à le faire.

Notre programme de contrôle principal du Skutter aura besoin de prendre ces valeurs des capteurs, de les interpréter et de prendre des décisions : que faire avant de bouger le bras et la base ; bouger quoi, vers où et de combien ?

Dans le prochain article nous regarderons les différentes options possibles pour fournir ces "ressentis de capteurs" qui permettre au robot de devenir plus qu'un simple jouet.

Dans les prochains articles, nous regarderons comment ajouter au robot une base motorisée avec des roues et enfin nous examinerons comment lui donner une sorte d'intelligence artificielle. Je continuerai d'écrire ces articles en même temps que je construis mon propre robot. J'espère qu'ils vous seront profitables ou vous encouragerons à débuter votre projet de robot. En attendant de vous revoir tous prochainement !

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Boîte à outils