samedi 2 juin 2018

Émuler une souris avec l'Arduino Leonardo

Une caractéristique intéressante des cartes Arduino Leonardo, c'est que les ordinateurs les reconnaissent comme de véritables périphériques USB.  On peut donc programmer le Leonardo afin qu'il se comporte comme un clavier ou une souris.

Le langage Arduino vous propose 7 fonctions permettant de reproduire le mouvement d'une souris d'ordinateur:


  • Mouse.begin() est nécessaire pour initialiser l'émulation et utiliser les autres fonctions décrites ci-dessous.  Typiquement, vous l'utilisez à l'intérieur de setup().  Si vous désirez interrompre l'émulation de la souris, utilisez Mouse.end().
  • Mouse.move(x, y, wheel) permet de faire bouger le pointeur de souris à l'écran de l'ordinateur.  x est le nombre de pixels dont on désire faire bouger le pointeur horizontalement, alors que y est le nombre de pixels dont on désire déplacer le pointeur verticalement.  Notez que ces déplacements sont relatifs à la position initiale du pointeur sur l'écran.
  • Avec Mouse.click(), votre Leonardo aura le même comportement que si vous aviez cliqué avec le bouton gauche de la souris.  Si vous désirez produire un clic sur le bouton droit, vous utilisez Mouse.click(MOUSE_RIGHT).
  • Mouse.press() ressemble à Mouse.click(), sauf que le bouton demeure enfoncé jusqu'à ce que vous appeliez Mouse.release().
  • Mouse.isPressed() est un booléen dont la valeur sera vraie si une le bouton d'une souris reliée à l'ordinateur est enfoncé.

Le site officiel Arduino présente deux exemples très clairs pour construire votre propre souris au moyen de 5 boutons poussoirs, ou pour contrôler le pointeur au moyen d'un joystick analogique.

Question de ne pas refaire inutilement des projets qui existent déjà, je vous propose un petit sketch inutile mais rigolo qui vous permettra  de jouer un tour à vos amis: la souris truquée.  Lorsque vous branchez l'Arduino Leonardo au port USB de l'ordinateur, le pointeur de souris se mettra à bouger avec une trajectoire circulaire, comme dans la vidéo ci-dessous.  Avec une telle souris hyperactive, l'utilisateur aura bien du mal à contrôler son ordinateur...



Mais prenez garde de ne pas vous piéger vous-mêmes: si le pointeur se met à faire des cercles aussitôt que la carte Leonardo est branchée à votre ordinateur, vous serez incapable de téléverser un autre sketch dans la carte, lorsque vous en aurez assez de celui-ci.  Pour cette raison, il faut prévoir un moyen de d'empêcher la carte d'exécuter sa routine.  Dans le sktech ci-dessous, nous vérifions d'abord l'état de la broche numéro 2 de l'Arduino.  Si elle est au niveau logique haut, nous faisons bouger le pointeur de la souris, mais si elle est au niveau logique bas, nous ne faisons rien.  Donc vous reliez la broche 2 à la sortie 5 V au moyen d'un fil conducteur lorsque vous voulez faire tourner le pointeur à l'écran, mais vous la reliez à la masse (GND) lorsque vous souhaitez reprogrammer la carte.




À lire également:

D'autres projets impliquant l'Arduino Leonardo:

Yves Pelletier   (Twitter, Facebook)

dimanche 27 mai 2018

Livre: Petits robots à fabriquer

Petits robots à fabriquer
par Daniel Knox
Éditions Eyrolles, collection Serial Makers
2018
160 pages

Les 13 projets de robotiques présentés dans cet ouvrage sont classés en 3 catégories: les robots basiques, les robots simples et les robots évolués.  La relative simplicité des projets ainsi que l'importance accordée  la décoration du robot me permettent de supposer qu'on cible surtout un public assez jeune (10 à 15 ans).

Robots basiques

Les 5 premiers robots ne comportent ni microcontrôleur, ni véritable capteur.  Par conséquent, leur comportement n'a rien de très sophistiqué.  Toutefois, puisqu'il est relativement facile de les construire à partir de matériel facile à trouver, ils constituent une option très intéressante pour les débutants.

  • Le robot brosse est une brosse à ongles qui se déplace de façon aléatoire grâce aux vibrations générées par un petit moteur à courant continu.
  • Le mouvement du robot gribouilleur est tout aussi aléatoire, mais il est causé par une petite roue, mue par un moteur à courant continu, qui tourne autour d'un axe vertical.  Des crayons ont été fixés au robot, qui dessine donc des oeuvres d'art aléatoires.
  • Le robot papillon est une version miniaturisée du robot brosse: ici, la brosse à ongles est emplacée par l'extrémité d'une brosse à dents jumelée au vibreur d'un téléphone portable.
  • Construit au moyen d'un châssis de robot roulant, le robot insecte a un comportement plus intéressant que ses prédécesseurs:  chacun de ses deux moteurs est relié à un interrupteur actionné par une antenne.  Lorsque l'antenne touche un obstacle, la roue qui lui est associée se met momentanément à tourner en sens inverse, ce qui fait tourner le robot.
  • Grâce à deux moteurs à engrenages et un mécanisme constitué de bâtonnets d'esquimau, le robot spirographe est en mesure de tracer des motifs beaucoup plus élégants que ceux du robot gribouilleur.


Robots simples

Cette deuxième catégorie présente des robots qui, grâce à un microcontrôleur, font preuve d'un peu plus de jugeote que ceux de la catégorie "basique".  Tous les projets de cette catégorie nécessitent l'utilisation d'une carte de prototypage micro:bit, qui se programme dans un environnement graphique très similaire à Scratch.

Le mot "robot" est certainement un tantinet discutable en ce qui concerne le robot avatar, qui est en fait un prétexte pour montrer les bases de la programmation de la carte micro:bit. Les LEDs intégrées à la carte s'allument de façon à montrer un visage heureux ou triste selon le bouton sur lequel on appuie.

Le robot speed est un petit véhicule qui roule grâce à deux servomoteurs; on le contrôle via bluetooth grâce à un téléphone ou une tablette.

Le robot catapulte est en fait est une catapulte miniature qui, grâce à un servomoteur et un  détecteur de mouvement à infrarouge, bombarde automatiquement tout intrus qui oserait entrer dans la pièce.

Le robot jardinier vous avertit lorsque votre plante a besoin d'être arrosée (vous devrez l'arroser vous-mêmes, toutefois).  Ici encore, considérant l'absence totale de mouvement, je n'aurais pas tendance à considérer ce dispositif comme un robot.

Grâce à deux jambes constituées de servomoteurs directement fixés à la carte micro:bit, le robot marcheur... marche.  C'est le robot qu'on peut voir sur la page couverture.


Robots évolués

Finalement, après vous être fait la main sur des robots simples, vous pourrez passer à des projets plus ambitieux:

Le robot guerrier présente certaines similitudes avec le robot speed, mais il est conçu pour renverser son adversaire lors d'un combat de robots.  Il est basé sur un récepteur de radiocommande Hobby King, et propulsé par une paire de servomoteurs à rotation continue.

Le robot imprimeur est la classique machine à commande numérique (CNC) construite à partir de deux mécanismes de lecteurs CD.  Il s'agit du premier de deux projets impliquant une carte Arduino.  Le fichier de code Arduino est offert en ligne sur le site des éditions Eyrolles, mais le livre ne comporte aucune information sur son fonctionnement, la programmation en C étant considérée comme trop compliquée pour le lecteur débutant.

Finalement, le robot martien se veut une réplique du Mars Pathfinder.  C'est une plate-forme à 6 roues, contrôlable par smartphone par l'intermédiaire d'un Romeo BLE all-in-one de DFRobot (compatible Arduino).  Il comporte un faux panneau solaire, qui est purement décoratif!

En bref, il s'agit d'un bon livre pour un jeune qui veut faire ses tous premiers pas en robotique: les instructions sont claires et détaillées, les photographies sont nombreuses, les projets sont variés et présentés en ordre croissant de difficulté.  Il est toutefois important de remarquer que presque tous ces robots, quand ils n'ont pas un comportement aléatoire, sont conçus pour être contrôlés par un humain.  Ce livre ne vous apprendra pas comment fabriquer des robots autonomes, qui prennent leurs propres décisions en fonction des résultats tirés de leurs capteurs (il y a bien la catapulte automatique, mais il n'y a aucun robot suiveur de ligne ou éviteur d'obstacles, par exemple).


Yves Pelletier   (Twitter, Facebook)


lundi 23 avril 2018

Livre: Arduino, S'exercer au prototypage électronique

Arduino
S'exercer au prototypage électronique
(10 projets créatifs à réaliser soi-même)
par Cédric Doutriaux
Éditions ENI (collection La Fabrique), 2017
298 pages

Une première qualité de ce livre, c'est qu'il s'adresse à des gens qui ont déjà une petite expérience de l'Arduino (car, admettons-le, nous n'avons pas vraiment besoin d'un autre livre qui consacrerait des dizaines de pages à l'installation de l'IDE et à la mise à l'essai de l'exemple "blink"!).

Nul besoin d'être un expert, toutefois, pour apprécier les 10 projets présentés dans cet ouvrage, car ils sont tous expliqués clairement, et de façon détaillée.  Ainsi, on vous guidera dans la fabrication d'un synthétiseur thérémine, d'un jeu de mémorisation musicale, d'un petit système d'arrosage automatique, d'un oscilloscope minimaliste, d'un robot suiveur de ligne, d'une lampe multicolore contrôlable via bluetooth, d'une station météo consultable par wi-fi, d'un télémètre à ultrasons, d'un robot hexapode capable d'éviter les obstacles et, finalement, d'un affichage "POV" (persistance rétinienne) monté sur une roue de vélo.

Bien sûr, il est possible de trouver de nombreuses variantes de tous ces projets sur internet.  Mais un aspect qui m'a semblé très intéressant, c'est que l'auteur ne se contente pas de nous présenter le code de la version finale du programme; il nous guide plutôt dans un processus qui consiste à coder une première version du programme et à vérifier son fonctionnement correct avant d'ajouter des fonctionnalités supplémentaires.  Par exemple, dans le jeu de mémorisation musicale, on commence par produire un sketch qui joue une mélodie.  Après avoir vérifié que tout fonctionne convenablement, on ajoute la partie qui enregistre la séquence de boutons actionnés et la compare avec la bonne réponse.  Finalement, on ajoute une fonction qui génère des nouvelles mélodies.
Je pense qu'il s'agit d'une bonne façon de faire acquérir au lecteur une méthode de travail qui lui sera utile lorsqu'il voudra concevoir ses propres projets.

Yves Pelletier   (Twitter, Facebook)