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 :
- Pyboard (STM32R405 – carte officielle – performante) ;
- Feather STM32F405 Express (STM32R405 – Adafruit – Idem Pyboard) ;
- Plug’uino Py (STM32R405 – Sciencéthic – Idem Pyboard) ;
- SoproLab (ESP32, carte complète avec capteurs) ;
- M5Stack (ESP32, kit complet) ;
- Micro:bit (nRF51822 – moins performant) ;
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 :