MicroPython-Hack-souris
Transformer votre PyBoard en souris
La carte pyboard est un périphérique USB et peut être configurée pour agir comme une souris à la place du lecteur Flash USB que vous connaissez déjà.
Pour transformer votre PyBoard en périphérique souris, vous devez d'abord editer le fichier boot.py et y changer la configuration USB. Si vous n'avez pas encore modifié votre fichier boot.py il devrait ressembler à quelque-chose comme ceci:
# boot.py -- run on boot-up # can run arbitrary Python, but best to keep it minimal import pyb #pyb.main('main.py') # main script to run after this one #pyb.usb_mode('CDC+MSC') # act as a serial and a storage device #pyb.usb_mode('CDC+HID') # act as a serial device and a mouse
Vous trouverez ci-dessous une version du même fichier avec une traduction des commentaire pour vous aider à en comprendre le contenu.
# boot.py -- executé au démarrage # Peut exécuter un script Python arbitraire, mais le mieux est de le garder aussi minimaliste que possible import pyb #pyb.main('main.py') # Le script principal à exécuter après celui-ci. #pyb.usb_mode('CDC+MSC') # agit comme périphérique série et de stockage #pyb.usb_mode('CDC+HID') # agit comme périphérique série et souris
Pour activer le mode souris, il faut décommenter la dernière ligne du fichier.
Cette ligne du fichier doit alors ressembler à ceci:
pyb.usb_mode('CDC+HID') # act as a serial device and a mouse
Si vous avez déjà modifié votre fichier boot.py alors le code minimum pour fonctionner est celui-ci:
import pyb pyb.usb_mode('CDC+HID')
Cela informe le pyboard de se configurer son USB comme un CDC (port série) et HID (interface Homme-Machine dite "human interface device", dans notre cas, c'est une souris) au moment du boot.
Ejectez/démonter le lecteur USB/Flash de votre carte Pyboard et réinitialisez votre carte en pressant le bouton RST. Votre PC détectera maintenant puboard comme une souris!
Envoyer des événements souris
Pour que notre souris-python fasse des choses, il faut que le programme envoie des événements souris à notre PC. Pour commencer, nous allons faire cela manuellement avec une invite de commande REPL (voyez les précédents tutoriels). Connectez-vous sur votre PyBoard à l'aide de votre logiciel terminal favoris et tapez la commande suivante:
>>> pyb.hid((0, 10, 0, 0))
Votre souris devrait se déplacer de 10 pixels sur la droite!
La commande ci-dessus envoi 4 informations: l'état du bouton, x, y et défilement (scroll en anglais). Le numéro 10 indique à notre ordinateur qu'il y a un déplacement de 10 pixels (10 points) dans la direction x.
Faisons osciller notre souris de gauche à droit:
>>> import math >>> def osc(n, d): ... for i in range(n): ... pyb.hid((0, int(20 * math.sin(i / 10)), 0, 0)) ... pyb.delay(d) ... >>> osc(100, 50)
Le premier argument de la fonction osc est le nombre d'événement souris à envoyer. Le second argument est le délais (en millisecondse) entre les événements. Testez la fonction avec différentes valeurs numériques.
Exercice
Une petit exercice amusant est de faire dessiner un cercle à la souris.
Transformer l'accéléromètre en souris
Maintenant, faisons bouger la souris en fonction de l'angle de la carte PyBoard, ceci est rendu possible grâce à l'accéléromètre. Le code suivant peut être tapé directement sur sur l'invite de commande REPL ou placé dans le fichier main.py. Ici, nous le plaçons dans main.py parce que nous allons également apprendre comment passer en "Safe Mode".
Pour le moment, la carte PyBoard agit comme un périphérique USB série et un périphérique HID (une souris). Par conséquent, cela empêche d'accéder au système de fichier pour éditer le fichier main.py.
De même vous ne pouvez pas modifier votre fichier boot.py pour sortir du mode HID et revenir au mode normal (lecteur USB)...
Pour y arriver, vous avez besoin de passer en "Safe Mode". Cela est décrit en détail dans le tutoriel sur le Safe-Mode mais vous pouvez répéter les opérations ci-dessous:
- Maintenez le bouton USR enfoncé.
- Pendant que vous maintenez le bouton USR enfoncé: pressez et relachez le bouton RST (Reset) pour réinitialiser le votre carte PyBoard.
- Les LEDs vont alors cycler de Vert à orange à vert+orange (et inversement).
- Maintenez le bouton USR enfoncé jusqu'à ce que le LED orange soit allumée, et relachez alors le bouton USR.
- La LED orange va clignoter 4 fois rapidement PUIS s'éteindre.
- Vous êtes en Safe Mode.
En "Safe Mode", les fichiers boot.py et main.py ne sont pas exécutés et la carte PyBoard démarre avec ses paramètres par défaut. Cela signifie que, maintenant, vous pouvez accéder au système de fichier (le lecteur USB devrait apparaître). Il est alors possible d'éditer main.py. (Laissez le fichier boot.py tel-quel parce nous voulons toujours revenir dans le mode HID après avoir terminé les modifications dans le fichier main.py.)
Placez le code suivant dans le fichier main.py:
import pyb switch = pyb.Switch() accel = pyb.Accel() while not switch(): pyb.hid((0, accel.x(), accel.y(), 0)) pyb.delay(20)
Sauvez votre fichier, éjectez/démontez le lecteur de la carte PyBoard puis réinitialisez votre carte avec le bouton RST. La carte devrait maintenant agir comme une souris et l'angle de la carte bougera la souris. Essayez ce programme et voyez comment vous pouvez immobiliser la souris!
Pressez le bouton USR pour arrêter les déplacements de la souris.
Vous remarquerez que l'axe-Y est inversé. C'est vraiment facile à corrigé: placez juste un signe moins devant la coordonnée-y de la ligne pyb.hid() (ci dessus).
Restaurer l'état normal de la PyBoard
Si vous laissez la carte PyBoard tel quelle, elle agira comme une souris à chaque fois que vous la brancherez.
Vous voudrez certainement revenir au fonctionnement normale. Pour y arriver, vous aurez d'abord besoin d'entrer en "Safe Mode" (vois ci-dessus) pour pouvoir éditer le fichier boot.py. Dans le fichier boot.py, commentez la ligne (en plaçant un # en début de ligne) qui contient la configuration CDC+HID. De sorte, la ligne doit ressembler à ceci:
#pyb.usb_mode('CDC+HID') # act as a serial device and a mouse
Savez votre fichier, éjectez/démontez le lecteur et réinitialisez votre carte PyBoard (en pressant le bouton reset). Elle fonctionnera maintenant en mode normal.
Source: Making the pyboard act as a USB mouse écrit par/written by Damien P.George
Traduit par Meurisse D. pour MCHobby.be - Translated by Meurisse D. for MCHobby.be
Traduit avec l'autorisation de micropython.org - Translated with the authorisation of micropython.org
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : « Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.
L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.