L'Arduino Leonardo et un USB Host Shield
Le périphérique d'entrée le moins cher du montage : comment le shield se pose sur la carte, pourquoi ses lignes SPI doivent rejoindre le connecteur ICSP, l'envoi du sketch, et les limites que vous acceptez.
Réponse courte
Un Arduino Leonardo avec un USB Host Shield est le passthrough de souris fonctionnel le moins cher : le MAX3421E du shield lit votre souris et l'ATmega32u4 la présente. C'est aussi le plus pénible, car la plupart des shields attendent le brochage de l'Uno et imposent de renvoyer le SPI vers le connecteur ICSP.
Sur cette page9
- Pourquoi il vous faut un Leonardo et non un Uno
- Quelles pièces il vous faut
- Comment relier les lignes SPI du shield
- Comment envoyer le sketch
- Pourquoi le numéro de port COM change sans arrêt
- Ce que vous abandonnez pour le prix plus bas
- Qui devrait en construire un
- À vérifier avant de conclure que c'est cassé
- Questions fréquentes sur l'Arduino
Pourquoi il vous faut un Leonardo et non un Uno
La raison tient au microcontrôleur. Le Leonardo utilise un ATmega32u4, qui intègre l'USB dans la puce : la carte peut donc se présenter directement à un PC comme un clavier, une souris ou un port série. Un Uno ne peut pas le faire, parce que sa prise USB est reliée à une puce de pont séparée dont le seul rôle est le série, et il ne pourra donc jamais prétendre être une souris. Cette seule différence justifie à elle seule le choix du Leonardo pour ce montage. C'est aussi pourquoi l'Uno que vous possédez déjà ne fonctionnera pas, quelle que soit la façon dont le code est écrit. Les cartes équipées de la même puce 32u4, comme une Pro Micro, reposent sur le même principe.
Quelles pièces il vous faut
Le montage demande deux cartes et deux câbles. Cette simplicité fait tout son intérêt, et c'est vraiment la façon la moins chère d'obtenir un curseur qui bouge.
- Arduino Leonardo
- ATmega32u4 avec USB natif. Présente l'interface souris au PC de jeu et porte aussi la liaison série
- USB Host Shield 2.0
- Porte un contrôleur hôte USB MAX3421E, piloté en SPI. C'est la moitié sur laquelle se branche votre vraie souris
- Bibliothèque
- La USB Host Shield Library 2.0, qui fournit la gestion de la souris HID du côté hôte
- Câble vers le PC de jeu
- La prise micro-USB du Leonardo. C'est le côté HID
- Câble vers le second PC
- La même prise USB du Leonardo sur un montage à un seul câble, ou un adaptateur USB-série distinct sur un UART si vous voulez séparer physiquement les deux liaisons
- Fer à souder
- Pas optionnel en pratique. Voir le bloc suivant
Attention
Comment relier les lignes SPI du shield
C'est l'étape qui a fait la réputation de ce montage. La plupart des USB Host Shields ont été conçus pour l'Uno, où le SPI sort sur les broches numériques 11, 12 et 13. Sur le Leonardo, ces broches ne sont pas du SPI du tout, parce que le SPI n'est disponible que sur le connecteur ICSP à 6 broches. Si vous empilez un shield au brochage Uno sur un Leonardo, l'ensemble aura l'air correct alors que la carte ne communiquera jamais avec le MAX3421E.
- Vérifiez si votre shield a un connecteur ICSP femelle sur sa face inférieure. Les shields qui en ont un s'empilent sur un Leonardo et fonctionnent tels quels
- Si ce n'est pas le cas, il faudra ajouter des straps. Repérez où les broches SPI du shield (horloge, entrée de données et sortie de données) tombent sur le connecteur Uno
- Coupez, pliez vers l'extérieur ou isolez autrement ces trois broches pour qu'elles ne touchent plus les broches numériques 11, 12 et 13 du Leonardo
- Tirez trois fils des broches isolées du shield vers les broches correspondantes du connecteur ICSP du Leonardo
- Laissez la ligne de sélection de puce, en général la broche 10, branchée telle quelle, parce que la sélection de puce est une broche numérique ordinaire et que son affectation est déjà correcte
- Avant de mettre l'ensemble sous tension, vérifiez que le shield reçoit bien le 5 V et la masse depuis le connecteur
- Mettez sous tension et lancez l'exemple de diagnostic de carte de la bibliothèque. Il indique si le MAX3421E répond, ce qui est la seule chose que cette étape doit établir
Comment envoyer le sketch
L'envoi est simple une fois le câblage correct, mais prouvez que le côté hôte fonctionne avant d'écrire ou de flasher quoi que ce soit de plus complexe.
- Installez l'IDE Arduino et ajoutez la USB Host Shield Library 2.0 par le gestionnaire de bibliothèques
- Sélectionnez Tools, puis Board, puis Arduino Leonardo, et choisissez le port sur lequel la carte apparaît
- Envoyez l'exemple de diagnostic de carte hôte USB de la bibliothèque et ouvrez le moniteur série, qui doit annoncer le contrôleur comme présent et initialisé
- Envoyez l'exemple de souris HID de la bibliothèque, branchez une souris filaire sur le shield, et vérifiez que les mouvements et les clics s'affichent dans le moniteur série
- Seulement ensuite, envoyez le firmware de passthrough qu'attend votre cheat, en gardant la même carte et le même port
- Notez le débit auquel le sketch ouvre la liaison série, parce que vous devrez saisir la même valeur dans le cheat
- Coupez et rétablissez l'alimentation de l'ensemble après l'envoi final plutôt que de vous fier à une réinitialisation logicielle
Pourquoi le numéro de port COM change sans arrêt
Sur un Leonardo, le port série fait partie du gadget USB de la carte plutôt que d'une puce de pont séparée. Résultat, le numéro de COM peut changer quand la carte redémarre, et il change encore quand la carte entre dans son bootloader pendant un envoi. C'est normal sur un ensemble que vous reflashez sans arrêt. Une fois votre firmware définitif, trouvez le port dans le gestionnaire de périphériques et forcez-le sur un numéro bas à un seul chiffre, dans Paramètres du port puis Avancé. Saisissez ensuite ce numéro dans le cheat. Si vous voulez séparer complètement la liaison de commande du PC de jeu, prenez-la sur un UART matériel avec un adaptateur USB-série. Le PC de jeu ne voit alors qu'un appareil qui n'est rien d'autre qu'une souris.
Ce que vous abandonnez pour le prix plus bas
Aucun de ces compromis n'est rédhibitoire, mais chacun est une chose qu'un appareil plus cher ne vous demande pas.
| Domaine | Leonardo + shield | Pourquoi c'est important |
|---|---|---|
| Assemblage | Soudure ou straps presque toujours nécessaires | La première cause d'un montage qui ne marche jamais, et la plus difficile à diagnostiquer sans multimètre |
| Bande passante hôte | Le MAX3421E est un contrôleur hôte full speed | Suffisant pour des souris. Ce n'est pas la carte à choisir si vous voulez faire passer un appareil haut débit |
| Marge de calcul | Un microcontrôleur 8 bits à 16 MHz | Assez pour relayer des rapports. Il reste très peu de marge pour lisser ou façonner le mouvement sur l'appareil lui-même |
| Fréquence de rapport | Limitée par une interface device full speed | Le plancher d'intervalle de 1 ms de l'USB full speed s'applique. Le port device haut débit d'un Teensy 4.1 n'est pas limité de la même façon |
| Contrôle du descripteur | Possible, mais l'outillage est plus rustique | Vous pouvez changer ce que voit le PC de jeu. C'est plus de travail qu'avec un Teensy, et bien plus qu'avec un firmware qui clone les descripteurs pour vous |
| Support | Communautaire uniquement | Quand ça casse, il n'y a pas de fabricant. L'avantage, c'est que chaque partie est documentée par quelqu'un |
Conseil
Qui devrait en construire un
Ce montage convient à ceux qui possèdent déjà un fer à souder, qui aiment le bricolage et qui voient l'appareil comme un projet plutôt que comme un achat. Si cela vous décrit, c'est un bon projet de week-end, et vous comprendrez la couche d'entrée mieux que quiconque ayant acheté un boîtier. Si ce n'est pas le cas, achetez un MAKCU, parce que passer trois soirées sur un shield pour économiser la différence est un mauvais calcul. Un périphérique d'entrée à moitié fonctionnel est d'ailleurs pire que pas de périphérique du tout, parce qu'il produit des pannes qui ressemblent à des bugs de cheat.
À vérifier avant de conclure que c'est cassé
- La carte est un Leonardo ou une autre carte ATmega32u4, pas un Uno
- Les lignes SPI du shield atteignent le connecteur ICSP, par un connecteur ou par des fils
- Le diagnostic de carte de la bibliothèque annonce le MAX3421E comme présent
- Une souris filaire simple affiche ses mouvements dans l'exemple de souris HID
- Le PC de jeu liste un périphérique souris quand le Leonardo y est branché
- Le numéro de COM dans le cheat correspond au gestionnaire de périphériques et tient sur un seul chiffre
- Le débit dans le cheat correspond à la valeur inscrite dans le sketch
Questions fréquentes sur l'Arduino
Puis-je utiliser un Uno avec un host shield à la place ?
Non, parce qu'un Uno ne peut pas se présenter comme une souris USB : sa prise USB est reliée à un pont série et non au microcontrôleur principal. Il vous faut une carte dont la puce intègre elle-même l'USB, comme l'une des cartes 32u4.
Dois-je vraiment souder ?
Pas si votre shield a un connecteur ICSP sur sa face inférieure, puisqu'il s'empile alors et fonctionne. La plupart des shields bon marché n'en ont pas, et dans ce cas il faut isoler trois broches et tirer trois fils.
Cet appareil est-il plus détectable qu'un KMBox ?
Rien ici n'est indétectable, et la vraie comparaison est plus étroite qu'on ne le croit. Dans les deux cas, le mouvement arrive comme du vrai trafic HID USB. Un montage maison bon marché est plutôt plus faible sur l'identité USB qu'il présente si vous le laissez d'origine, mais c'est un choix de configuration et non une conséquence du prix.
Le dongle de ma souris sans fil fonctionnera-t-il sur le shield ?
Souvent oui, parce que le contrôleur hôte le voit comme un périphérique HID USB. Les dongles qui présentent des interfaces fabricant supplémentaires sont l'exception habituelle, et les logiciels de configuration embarqués cessent en général de fonctionner à travers n'importe quel passthrough.
Pourquoi le port COM change-t-il sans arrêt ?
Parce que l'interface série fait partie du gadget USB de la carte, et que la carte redémarre pendant les envois. Une fois votre firmware définitif, forcez un numéro bas et fixe dans le gestionnaire de périphériques.
Sources
Rien dans notre liste de sources vérifiées ne couvre le Leonardo, le host shield ou le MAX3421E : les étapes de câblage et d'envoi viennent de nos propres montages.
À lire ensuite
- KMBox Net, KMBox B+, MAKCU, Teensy ou Arduino : quel périphérique d'entrée acheter
- Le Teensy 4.1 comme périphérique d'entrée DMA
- Descripteurs USB, VID/PID et ce que veut dire cloner un descripteur
- Le curseur ne bouge pas : comment réparer la couche d'entrée
- Toute la chaîne du signal, de votre main jusqu'au jeu
Toujours bloqué ? Ouvrir un ticket sur Discord
Tous les guides