Yahoo refuse tous les emails du site. Si vous avez une adresse chez un autre prestataire, c'est le moment de l'utiliser
En cas de soucis, n'hésitez pas à aller faire un tour sur la page de contact en bas de page.
Construction d'une souris USB "rapid fire"
La souris qui clic plus vite que son ombre
par skywodd | | Licence (voir pied de page)
Catégories : Projets | Mots clefs : Teensy Teensyduino PJRC Souris Mouse USB
Cet article n'a pas été mis à jour depuis un certain temps, son contenu n'est peut être plus d'actualité.
Dans cet article, je vous présente un projet que j'ai réalisé pour m'aider dans une tâche fastidieuse et monotone. Ce projet n'est rien de plus qu'une souris USB minimaliste, avec un unique bouton, permettant de simuler un "clic gauche" plus de 4 fois par seconde. Dans cet article, je vais vous expliquer comment j'ai réalisé ce projet et pourquoi.
Sommaire
Bonjour à toutes et à tous !
Durant le week-end, j'ai dû faire face à un problème inattendu : exporter des données d'un logiciel professionnel … à la main.
Le logiciel en question permet d'exporter des fiches clients, une fiche à la fois ou en lots, au moyen d'une liste. Dans le principe, exporter un nombre arbitraire de fiches est trivial. Il suffit de double cliquer sur le nom du client pour basculer sa fiche de la liste "clients" à la liste "à exporter".
Seulement voilà, entre théorie et pratique, il y a souvent un gouffre. Dans le cas présent, le logiciel ne permet pas de sélectionner plusieurs fiches à la fois, pour exporter un lot d'une centaine de fiches par exemple. Or, il m'était demandé d'exporter … 4538 fiches. Outch !
Un simple bouton "tout sélectionner" aurait suffi. Mais sans ce bouton pour me faciliter la vie, il a fallu que je trouve une solution par moi même. Ma solution ? Construire une souris qui clic à ma place quand je lui demande.
Le but du projet
Puis-ce qu'il me suffit d'un double clic pour exporter une fiche, je suis arrivé à la conclusion que la solution la plus simple pour arriver à mes fins serait d'avoir une souris qui clic sans interruption, d'une simple pression d'un bouton.
Dans les faits, le projet est vraiment simpliste : un bouton, une carte pouvant se faire passer pour une souris USB et un câble USB. Quand on appuie sur le bouton, la carte envoie des ordres à l'ordinateur pour lui dire de cliquer, le tout aussi vite que possible, jusqu'à ce que le bouton soit relâché. En jeu vidéo, ce genre de montage s'appelle des "rapid fire" (feu rapide).
PS : Je m'excuse par avance aux lecteurs qui s'attendent à voir une souris USB se faire mettre en morceaux au nom de la science (et du DIY). Ce projet restera d'une simplicité déconcertante et utilisera une bête carte de développement USB, mais comme on dit en informatique : "la solution la plus simple est souvent la meilleure".
Présentation rapide des cartes Teensy
Pour ce projet, j'avais besoin d'une carte de développement USB, capable de se faire passer pour une souris USB et avec une interface de programmation simple.
Deux choix s'offraient à moi : utiliser une carte Arduino Leonardo ou une carte Teensy.
Il s'avère que je dispose d'un certain nombre de cartes Teensy dans mes tiroirs, mais pas de carte Arduino Leonardo. Le choix était donc vite fait.
Sans entrer dans les détails (on verra cela plus tard dans un article de test dédié), les cartes Teensy sont des cartes compatibles Arduino, avec un port USB "natif" permettant d'émuler à peu près n'importe quel périphérique USB classique : souris, clavier, port série, joystick, dongle Midi, module HID, etc. C'était donc le candidat idéal pour ce projet.
Le montage
Le montage est simpliste, il nécessite seulement :
Une carte Teensy 2.0++ (une carte 2.0 simple ou une carte 3.x peut aussi faire l'affaire),
Un câble USB,
Un bouton poussoir,
Une résistance de 10K ohms (marron / noir / orange),
Une plaque d'essai et des fils pour câbler notre montage.
Pour réaliser le câblage, il suffit de placer la carte teensy et le bouton poussoir sur la breadboard.
Il convient ensuite de relier une extrémité du bouton poussoir à la broche GND
de la carte Teensy et l'autre extrémité à la broche F0
de la carte Teensy.
Astuce : câblez le bouton poussoir en diagonal. De cette façon, vous avez l'assurance de câbler correctement les deux contacts du bouton poussoir.
Pour finir, il suffit de câbler une résistance de tirage à l'état haut entre la broche F0
et la broche +5V
de la carte Teensy.
Le code
Les cartes Teensy sont des cartes compatibles Arduino, mais pas tout à fait. Ce sont des cartes un peu spéciales qui nécessitent un plug-in nommé Teensyduino pour fonctionner avec le logiciel de développement Arduino.
L'installation de Teensyduino est très simple, il suffit de télécharger le plug-in, de lancer l'installateur et de suivre les instructions à l'écran.
N.B. Si vous utilisez un PC sous Windows, pensez à lancer l'installateur avec les droits administrateurs (clic gauche, lancer en tant qu'administrateur).
1 | const byte PIN_BUTTON = A0;
|
Le montage est simple, le code aussi !
Le code commence par la déclaration d'une constante (mot clef const
) qui contient le numéro de broche sur laquelle est câblé le bouton.
Dans le cas de la carte Teensy 2.0++, la broche F0
correspond à la broche A0
dans le logiciel Arduino.
1 2 3 4 5 6 7 8 | void setup() {
/* Met la broche du bouton en entrée */
pinMode(PIN_BUTTON, INPUT);
/* Décommenter la ligne suivante pour les cartes Arduino Leonardo */
//Mouse.begin();
}
|
Dans la fonction setup()
, le code se contente de mettre la broche du bouton en entrée avec pinMode()
.
Pour les lecteurs qui souhaiteraient tester ce code sur une carte Arduino Loenardo, il vous suffit de décommenter la ligne Mouse.begin();
.
Le code est compatible avec les cartes Teensy et Arduino Leonardo.
1 2 3 4 5 6 7 8 9 10 11 12 | void loop() {
/* Lit l'état du bouton poussoir */
if (digitalRead(PIN_BUTTON) == LOW) {
/* Si le bouton est appuyé -> clic (gauche) de souris */
Mouse.click();
}
/* Attend 150 ms entre deux clics de souris */
delay(150);
}
|
Dans la fonction loop()
, le code se contente de vérifier l'état du bouton poussoir.
Si celui-ci est appuyé, le code envoie un clic (gauche) de souris à l'ordinateur.
Afin d'éviter de faire planter l'ordinateur et le logiciel avec des centaines de clics de souris par seconde, le code attend 150 ms entre deux clics de souris.
Le code complet avec commentaires :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | /**
* Souris rapid fire DIY.
* Fait des clics gauche aussi vite que possible quand le bouton est appuyé.
*/
/** Numéro de broche pour le bouton */
const byte PIN_BUTTON = A0;
/** Fonction setup, exécutée au lancement du programme */
void setup() {
/* Met la broche du bouton en entrée */
pinMode(PIN_BUTTON, INPUT);
/* Décommenter la ligne suivante pour les cartes Arduino Leonardo */
//Mouse.begin();
}
/** Fonction loop, exécutée en boucle tant que la carte Arduino est alimentée */
void loop() {
/* Lit l'état du bouton poussoir */
if (digitalRead(PIN_BUTTON) == LOW) {
/* Si le bouton est appuyé -> clic (gauche) de souris */
Mouse.click();
}
/* Attend 150ms entre deux clics de souris */
delay(150);
}
|
L'extrait de code ci-dessus est disponible en téléchargement sur cette page (le lien de téléchargement en .zip contient le projet Arduino prêt à l'emploi).
Conclusion
Ce projet est désormais achevé.
Si ce projet vous a plu, n'hésitez pas à le commenter sur le forum, à le diffuser sur les réseaux sociaux et à soutenir le site si cela vous fait plaisir.