Pré-requis et installation

Le principe général est le suivant :

  • on connecte la carte avec Micropython sur le port USB : un port série lui est attribué : /dev/ttyACM0 par exemple sous Gnu/Linux
  • la carte va alors apparaître sur le système comme un disque : on voit les fichiers présents dans la flash
  • on va alors pouvoir :
    • soit lancer le mode interpréteur et interagir directement avec la carte : TOP pour tester !
    • soit écrire des codes et les exécuter dans la foulée qui seront stockés soit en RAM, soit sur carte SD
    • soit pouvoir faire exécuter les codes au démarrage

Prêt ? C'est parti...

Voici de ce dont vous avez besoin :

Pour pouvoir utiliser Micropython on a besoin d'une carte sur laquelle est implémenté Micropython (license libre MIT). Ce sont des cartes à microcontrôleur type Cortex, cadencé à 168Mhz, etc... Donc, on fait d'une pierre 2 coups en passant à micropython : on a Python pour microntrôleur + carte puissante !

Ces cartes sont de "vraies" cartes à micro-contrôleur avec au menu :

  • des broches E/S (ou GPIO) classiques
  • des broches analogiques
  • des broches PWM
  • communication série I2C, SPI
  • et même conversion numérique-analogique !

Ce sont des cartes "boostées" avec :

  • processeurs 32 bits cadencés à plus de 100Mhz
  • RAM de l'ordre de quelques 100Ko
  • Flash de l'ordre du Mo

Et selon les cas :

  • carte SD
  • RTC intégré !
  • accéléromètre sur la carte ! et autres capteurs selon carte extension utilisée.
  • communication wifi, BT, Sigfox, etc !

Parmi les cartes possibles on peut citer :

  • La Pyboard : carte officielle du projet Micropython lui-même. On démarre à 40€ voire moins sur version lite !
  • les cartes Pycom : ensemble de cartes comportant d'un côté les cartes "coeurs" et de l'autre les cartes "extension" qui complètent le coeur. On démarre à 44€ avec module wifi !

De nombreux portages existent notamment sur la Teensy, Arduino Due, etc.. Voir : https://github.com/micropython/micropython/tree/master/ports En pratique je conseille les cartes "clé en main" telle la Pyboard qui est la carte officielle du projet.

On se retrouve en pratique dans la même situation qu'avec une carte Arduino : on communique et programme la carte via une communication série USB. Et donc logiquement, en plus de la carte, vous avez besoin d'un câble USB

Pour utiliser micropython en mode "interpréteur", on a besoin d'un terminal série pour communiquer avec la carte. On parle ici d'un utilitaire en ligne de commande qui va permettre de réaliser la communication série avec la carte et d'envoyer des data vers elle.

Au choix :

sudo apt-get install screen

ou bien :

sudo apt-get install picocom

Pour plus d'info, voir : http://docs.micropython.org/en/latest/pyboard/pyboard/tutorial/repl.html

On lancera l'interpréteur en faisant :

screen /dev/ttyACM0

Ce qui donnera :

eh eh...

La doc officielle propose d'utiliser un éditeur en ligne de commande... Voir : http://docs.micropython.org/en/latest/pyboard/pyboard/tutorial/script.html

Mais on peut faire mieux : on va pouvoir ici utiliser Geany.

Commencer par installer Geany selon votre cas. Sous Gnu/Linux, avec la commande :

sudo apt-get install geany

Sinon, téléchargez-le sur le site : https://www.geany.org/Download/Releases

Ce script qui est un script Python "classique" va permettre d'envoyer les codes à l'interpréteur micropython depuis le poste fixe.

Créer un répertoire sur le poste fixe où vous mettrez vos scripts micropython.

La première chose à faire est de déposer DANS LE REPERTOIRE DU POSTE FIXE où vous allez écrire vos codes micropython (autre possibilité : le mettre sur Flash de la carte micropython mais je déconseille) le script Python "classique" suivant : https://github.com/micropython/micropython/blob/master/tools/pyboard.py

Ce script va servir à lancer l'exécution du script micropython de son choix facilement.

Ensuite, ouvrir Geany, et aller dans le menu "Construire > Définir les commandes de construction", créer un bouton "MicroPython" en section "Exécuter"

et dans le champ mettre :

python pyboard.py --device '/dev/ttyACM0' "%f"

Cette commande exécute le script pyboard.py à partir du Python desktop : pyboard.py reçoit en paramètres le port série utilisé (à adapter à votre situation le cas échéant) et le nom du fichier courant. Ceci a pour effet de lancer l'éxécution du script Python et d'afficher le résultat dans la console de Geany !!

ce qui donne :

Il suffit à présent de créer un fichier test.py dans le répertoire que nous venons de créer et ouvrez-le avec Geany. Ou bien en ligne de commmande, ouvrez un terminal dans le répertoire que vous avons créé et faîtes :

geany test.py

ou bien par clic-droit > ouvrir avec Geany directement sur le fichier voulu dans le répertoire.

Saisissez simplement :


print("Hello world !")

ensuite, l'exécuter par Menu > COnstruire > MicroPython !

Quand on lance le code de cette façon, on a un terminal qui s'ouvre dans Geany avec les sorties du code. Si on ferme ce terminal, le code n'est pas stoppé : il continue son exécution et on peut se connecter via le port série par exemple depuis une autre interface, terminal série notamment, pour communiquer avec le code.

Une fois que vous avez tout çà vous êtes parés.

IMPORTANT : L'utilisation du fichier pyboard.py fonctionne beaucoup mieux avec des codes se trouvent sur le PC local plutôt que dans la Flash de la carte . Donc,on peut opter en phase de développement pour cette option. Sinon, notamment lors de l'utilisation du port série, des problèmes de collision du fait de l'accès aux fichiers et au port série simultanément entraînent perte de fichiers et autre dans la FLASH. Ainsi, la FLASH de la carte peut rester démonté tant qu'on code. Ceci s'entend uniquement en phase de développement, les codes opérationnels étant à mettre ensuite sur la carte évidemment.

En option, si vous voulez pouvoir coder "à la arduino" à partir de votre code micropython, il suffit d'installer notre librairie uPyduino. Pour cela, c'est très simple : copier/coller simplement le fichier upyduino sur la FLASH de la pyboard.

Voilà, vous êtes prêt !

upyduino n'est qu'une simple ré-écriture des fonctions Arduino avec les instructions micropython : ainsi upyduino n'est qu'un code micropython et par conséquent, micropython reste directement et totalement accessible depuis un code qui utilise upyduino. De plus, upyduino ne fait que 10-15ko et donc n'impute quasiment pas les ressources disponibles sur la carte micropython. Enfin, upyduino ne concerne que les fonctions "dédiées microcontrôleur" et n'impacte et ne modifie en rien le langage Python lui-même. En clair, "on a le beurre et l'argent du beurre" !