MicroPython

Présentation

MicroPython est une réécriture complète de Python 3 optimisée pour des microcontrôleurs créée par le physicien Damien George.  Contrairement à d’autres solutions telles que Nanpy ou PyFirmata pour Arduino, un programme MicroPython s’exécute directement sur le microcontrôleur de façon autonome.

La programmation d’un microcontrôleur en MicroPython se fait de deux manières :

  • En mode console (avec ordinateur) : les instructions sont envoyées à distance au microcontrôleur par intermédiaire d’une console REPL. MicroPython interprète ces instructions sur le microcontrôleur puis retourne les résultats à la même console si cela est nécessaire.
  • En mode autonome (sans ordinateur): le programme MicroPython est enregistré dans la mémoire flash du microcontrôleur et s’exécute en interne lors de la mise sous tension ou d’une remise à zéro de ce dernier.

Ce type de fonctionnement impose l’installation d’un firmware (distribution MicroPython) en mémoire de microcontrôleur. La plupart du temps, ce firmware est présent d’origine sur la carte.

MicroPython sous licence MIT est un projet libre. D’autres distributions comme Micro:bit MicroPython ou CircuitPython se basent sur MicroPython.

Pour quels microcontrôleurs ?

Le fonctionnement de MicroPython nécessite un microcontrôleur performant avec suffisamment de mémoire. Porté à l’origine sur les architectures ARM Cortex M, la distribution se retrouve aujourd’hui sur d’autres architectures comme ESP32. Par contre, l’Arduino UNO n’est pas compatible !

Voici une liste non-exhaustive de cartes de développement programmables en MicroPython :

Le langage

Le langage MicroPython est basé sur Python 3. L’espace mémoire étant réduit sur un microcontrôleur, seules les principales librairies sont implémentées (ex. math, time, …) avec des versions spécifiques.

Pour ce qui est de la gestion des fonctions du microcontrôleur, une librairie spécifique est disponible pour chaque type de carte :

  • la librairie pyb pour la Pyboard ou  cartes équivalentes (Plug’uino Py, Feather STM32F405 Express, STM32 Nucleo, …) ;
  • la librairie microbit pour la Micro:bit ;
  • la librairie esp32 pour les cartes à base d’ESP32 (SoproLab, M5Stack, …).

Par contre, la librairie machine apporte des fonctionnalités communes à tous les microcontrôleurs (gestion du bus I2C, …).

Exemple : programme «blink» en MicroPython sur une carte Feather STM32F405 Express.

[pastacode lang= »python » manual= »from%20pyb%20import%20Pin%20%20%20%20%20%20%20%20%20%23%20Gestion%20des%20broches%20E%2FS%0Afrom%20time%20import%20sleep_ms%20%20%20%23%20Gestion%20du%20temps%0A%0Aled%20%3D%20Pin(%22D5%22%2C%20Pin.OUT_PP)%20%23%20LED%20sur%20D5%20en%20sortie%20classique%20(push-pull)%0A%0Awhile%20True%20%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20Boucle%20infinie%0A%20%20%20%20led.on()%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20LED%20allum%C3%A9e%0A%20%20%20%20sleep_ms(500)%20%20%20%20%20%20%20%20%20%20%20%23%20Attendre%20500%20ms%0A%20%20%20%20led.off()%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20LED%20%C3%A9teinte%0A%20%20%20%20sleep_ms(500)%20%20%20%20%20%20%20%20%20%20%20%23%20Attendre%20500%20ms » message= » » highlight= » » provider= »manual »/]

Environnement de développement

Plusieurs outils existent pour le développement de microcontrôleurs sous MicroPython comme :

  • Thonny , un éditeur pour débutant qui intègre la gestion des différents microcontrôleurs (Pyboard, ESP32, Micro:bit, …) ;
  • Mu, un éditeur simpliste pour la Micro:bit.


Capteur de pression absolue Grove MPX5700AP

Introduction Le module Grove MPX5700AP est un capteur de pression absolue délivrant une tension analogique compatible 5 V (Arduino) ou 3,3 V (Pyboard, Micro:bit, …). Pour rappel, la logique 3,3 V est devenue la norme dans le domaine des microcontrôleurs. Présentation du MPX5700AP Le circuit  MPX5700AP est un capteur de… Lire la suite

Capteur résistif : cas d’une CTN

Une CTN est un capteur résistif à coefficient de température négatif dont l’évolution de la résistance en fonction de la température est donnée par la figure suivante : Principe de mesure d’une résistance La plupart des modules pour capteur résistif utilise un pont diviseur de tension pour la mesure de la résistance… Lire la suite

Installation de MicroPython sur une carte Pyboard

L’installation du firmware MicroPython sur une carte Pyboard se fait assez facilement à condition de respecter les différentes étapes. Téléchargement du firmware MicroPython La micro-distribution MicroPython est archivée dans un fichier binaire au format DFU. Le tableau ci-dessous donne les liens de téléchargement des firmware pour différentes cartes Pyboard. Placer… Lire la suite

Les bases de Micropython pour la Pyboard

Cet article résume les bases de la programmation d’une carte Pyboard officielle en langage MicroPython. IDE de développement Thonny reste un des meilleurs outils de développement pour les cartes microcontrôleurs sous MicroPython. Noms des broches Sur la Pyboard, les broches de GPIO sont divisées en deux groupes symétriques de X1… Lire la suite

Les bases de Micropython pour la Feather STM32F405 Express (Pyboard)

Cet article se base sur une carte Feather STM32F405 Express d’Adafruit. Il s’agit au final d’une «PyBoard» au format Feather utilisant une notation du type Arduino pour ces broches à un tarif très intéressant ! Cette carte de développement est disponible chez Mouser.fr pour un peu plus de 20 €… Lire la suite

Les bases de Micropython pour la Micro:bit

Cet article résume les bases de la programmation d’une carte Micro:bit en langage MicroPython. IDE de développement Thonny Thonny est un environnement de développement assez complet pour MicroPython. Il a l’avantage de gérer la plupart des cartes  : PyBoard, ESP32, Micro:bit, … Trouvez ici une documentation sur l’utilisation de Thonny… Lire la suite

Charge et décharge d’un condensateur avec la Pyboard

Montage Le montage est basé sur une carte Feather STM32F405 Express d’Adafruit (idem Pyboard) et d’un module pour capteur capacitif compatible Grove. Afin d’utiliser un uniquement câble Grove, la broche A0 est définie en sortie digitale ! Programme MicroPython Le programme suivant utilise le timer du microcontrôleur pour réaliser une… Lire la suite

Loi de Mariotte avec capteur de pression Adafruit MPRLS

Cet article met en évidence la loi de Mariotte avec un microcontrôleur PyBoard et un capteur pression absolue MPRLS (0 à 25 PSI) de chez Adafruit. Montage Un seringue de 60 mL est nécessaire pour cette expérience. Programme MicroPython Le programme suivant s’exécute en mode REPL (interfaçage par USB). Les… Lire la suite

Capteur de pression absolue MPRLS

Présentation MPRLS est une série de capteur de pression I2C (et SPI)  de la marque Honeywell. Ces capteurs piézo-résistifs (calibrés et compensés) proposent une résolution de 24 bit avec une précision de 1,25%. La carte breakout MPRLS pressure d’Adafruit est basée sur une version MPRLS0025PA. Il s’agit d’un capteur de… Lire la suite

Feather STM32F405 Express

Adafruit propose depuis peu une nouvelle carte de développement Feather STM32F405 Express avec le même microcontrôleur que la Pyboard officielle. Cette carte est programmable en MicroPython. Une solution intéressante (prix et performance) pour les sciences physiques au lycée en associant cette carte à un Shield Grove Featherwing. Caractéristiques principales STM32F405… Lire la suite