MicroPython-Hack-Outil

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

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:

  1. Editer le fichier sur la PyBoard puis le charger en mode REPL en utilisant la commande import
  2. 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:

  1. Presser Ctrl-A deux fois pour entrer en mode raw REPL
  2. Presser Ctrl-A Y tpour exécuter la commande "paste file" dans minicom
  3. Naviguer dans vos fichier apparaissant à l'écran et sélectionner le fichier à envoyer
  4. 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 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 & Exécuter

Tlogo-feather-load-file.jpg

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.

RSHell

Tlogo-micropython-Debugger.jpg

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:

MicroPython-Hack-Outil-01.png
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