MicroPython-Hack-Outil
Utiliser la carte PyBoard
Lorsque nous branchons le Pyboard sur un port USB de notre ordinateur, la carte apparaît comme un disque. Vous pouvez éditer le fichier main.py sur le disque, puis éjecter le disque, et finalement presser le bouton RST (Reset) pour réinitialiser la carte afin d'exécuter main.py.
Il existe cependant des façon plus interactive d'utiliser la pyboard comme le mode REPL (Read-Eval-Print Loop, boucle lecture-evaluation-affichage). Pour l'utiliser un programme de communication série (un Terminal) pour vous connecter sur le périphérique /dev/ttyACM0 (sur Linux) ou /dev/tty.usbmodemXXXX (MacOS). Le programme screen sous Unix fonctionne bien mais l'auteur de ce tuto préfère utiliser minicom (lien ArchLinux, existe aussi sur de nombreuses distribution Linux).
pyterm.py
Le script suivant s’appelle pyterm.py, il se connecter sur la PyBoard en utilisant le programme minicom:
#!/usr/bin/python import sys import os import fnmatch """ Utilisation: pyterm [péripherique] Appelle minicom sur le "périphérique". Si le périphérique n'est pas mentionné, il recherche les pérhophériques /dev/ttyACM* (le nom de la pyboard sous Linux) ou les périphériques /dev/tty.usbmodem* (nom de la pyboard sous MacOS). """ def main(): if len(sys.argv) > 1: ttymodems = [sys.argv[1]] else: ttymodems = fnmatch.filter(os.listdir('/dev'), 'ttyACM*') if len(ttymodems) == 0: ttymodems = fnmatch.filter(os.listdir('/dev'), 'tty.usbmodem*') if len(ttymodems) == 0: print('Error: no pyboard found.') sys.exit(1) ttymodems[0] = '/dev/' + ttymodems[0] os.system('minicom -D '+ttymodems[0]) if __name__ == "__main__": main()
Avec le script pyterm.py, vous pouvez démarrer une session avec la commande ./pyterm.py /dev/ttyACM1 ou /dev/ttyACM1 est le périphérique correspondant à votre pyboard.
Une fois connecté, vous pouvez saisir des commande et découvrir de nombreuses possibilités de la PyBoard. Par exemple:
led = pyb.LED(1) led.on()
qui allumera la led rouge sur la pyboard.
led = pyb.LED(1) def blink(timer): led.toggle() tim = pyb.Timer(4, freq=2, callback=blink)
Fera clignoter la LED rouge a 1Hz (la LED change d'état allumé/éteind à 2Hz).
Charger du code sur le PyBoard
Pour l'écriture de code plus complexe, il y a deux possibilités:
- Editer le fichier sur la PyBoard puis le charger en mode REPL en utilisant la commande import
- Editer les fichiers sur votre ordinateur puis faire un copier/coller en mode REPL
La première solution fonctionne bien, c'est la seule façon de de travailler si vous avez un code réparti dans différents modules.
La seconde solution est peut être la plus simple mais vous ne pouvez pas envoyer trop de texte/code dans le mode REPL sans erreur. Vous aurrez besoin de passer en mode raw REPL (REPL brute) en pressant Ctrl-A, puis coller votre code, et finaliser le transfert en pressant Ctrl-D. Votre code sera exécuté sur la PyBoard. S'il ne se termine pas par lui même, vous pouvez stopper votre code en pressant Ctrl-C, puis pressez Ctrl-B pour sortir du mode raw REPL (afin de revenir au mode REPL utilisateur). Vous pouvez effectuer une réinitialisation logiciel de votre PyBoard en pressant Ctrl-D.
Note pour les utilisateurs de minicom: vous aurez besoin de presser Ctrl-A deux fois pour envoyer un Ctrl-A au REPL parce que, par défaut, Ctrl-A est aussi la touche d'échappement de minicom. Vous pouvez utiliser la commande "paste file" dans minicom pour envoyer un fichier vers REPL. Pour réaliser cela avec Minicom:
- Presser Ctrl-A deux fois pour entrer en mode raw REPL
- Presser Ctrl-A Y tpour exécuter la commande "paste file" dans minicom
- Naviguer dans vos fichier apparaissant à l'écran et sélectionner le fichier à envoyer
- Presser Ctrl-D pour terminer le transfert
Votre fichier est alors chargé. S'il ne contient que des définitions, pressez Ctrl-B pour sortir du mode raw REPL et utiliser les différentes définitions dans le mode REPL standard.
pyboard.py
Une fois maîtrisé, PyBoard.py est un outil plus que pratique. Vivement recommandé par MCHobby. |
Une autre façon d’exécuter du code sur votre pyboard est d'utiliser le script pyboard.py disponible dans le répertoire tools du dépôt GIT MicroPython.
Plutôt que d'utiliser minicom pour transférer le contenu un fichier sur la PyBoard, vous pouvez utiliser directement le script pyboard.py. Rien ne vous empêche, par la suite, de réutiliser un programme terminal (comme minicom) pour vous reconnecter à nouveau en mode REPL.
Vous pouvez modifier le script pyboard.py pour rechercher automatiquement le périphérique "pyboard" en modifiant la fonction main() comme suit:
def main(): import argparse import os import fnmatch ttymodems = fnmatch.filter(os.listdir('/dev'), 'ttyACM*') if len(ttymodems) == 0: ttymodems = fnmatch.filter(os.listdir('/dev'), 'tty.usbmodem*') if len(ttymodems) == 0: print('Error: no pyboard found.') sys.exit(1) cmd_parser = argparse.ArgumentParser(description='Run scripts on the pyboard.') cmd_parser.add_argument('--device', default='/dev/' + ttymodems[0], help='the serial device of the pyboard')
Si vous désirez utiliser le script original du script pyboard.py, la commande à utiliser pour charger votre fichier "mon_fichier.py" sur ma pyboard est ./pyboard --device=/dev/ttyACM1 mon_fichier.py . /dev/ttyACM1 correspond à la connexion série associée à votre PyBoard.
Ampy
Ampy est un outil développé par Adafruit industrie alors que Tony Dicola produisait de la documentation pour le Feather ESP8266 Huzza.
Il permet de réaliser les différentes opérations décrites ci-dessus mais également le transfert de fichier vers et depuis une carte MicroPython par l'intermédiaire d'une connexion série.
Il s'agit d'un outil pratique car il vous permet de conduire vos développements sur PC avec votre éditeur de texte favoris; puis transférer vos fichiers sur la carte MicroPython avant de les exécuter via une session REPL.
Téléverser des fichiers et exécuter du code avec Ampy. Un flux simple de développement.
RShell
Si Ampy d'Adafruit est un outil pratique et simple, RShell est un outil nettement plus puissant.
Tout comme Ampy, RShell permet de transférer des fichiers vers (et depuis) une carte MicroPython par l'intermédiaire d'une simple connexion série. C'est donc un outil puissant et pratique.
Par contre, RShell, ne se présente pas comme une série de commande Linux mais comme un vrai shell dédié à MicroPython. Il est par ailleurs capable de supporter plusieurs cartes MicroPython connectées en même temps.
Chez MCHobby nous avons un faible un RSheel mais il faut bien reconnaître qu'il nécessite un peu plus d'investissement que Ampy mais le jeu en faut largement la chandelle.
Transférez des fichiers et contrôlez votre carte depuis une simple connexion série. ESP8266 compatible.
Element Fritzing
Mr Boulanger utilise Fritzing pour dessiner ces montage. A cette fin, il a réalisé un composant PyBoard pour Fritzing. Vous pouvez également obtenir le dessin SVG pour la carte, le schéma et l' icon.
Vous pouvez voir le résultat dans l'exemple Fritzing ci-dessous:
Source: Supelec.fr
Codes d'exemples
L'article de Mr Boulanger contient également quelques codes d'exemples, vous pourrez les trouver ici.
Source et autorisation de traduction
Le contenu de cette page est une traduction de l'article MicroPython de Mr Boulanger sur CentaleSupélec. Traduit avec l'aimable autorisation de Mr Boulanger.
Vous pouvez retrouver l'article original sur http://wdi.supelec.fr/boulanger/MicroPython/
Source: Micro Python Intro écrit par/written by Damien P.George
Traduit par Meurisse D. pour MCHobby.be - Translated by Meurisse D. for MCHobby.be
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.
Traduit avec l'autorisation de micropython.org - Translated with the authorisation of micropython.org