Qu’est-ce que MicroPython ?
Mise en garde : euphorie imminente !
Python permet d’accéder rapidement à des résultats gratifiants. Au-delà du langage, la programmation Python sur microcontrôleur (MicroPython) permet de créer des objets intelligents interagissant avec leur environnement.
Les réussites se succédant à un rythme effréné, le système hédonique de votre cerveau (récompense et centre du plaisir) connaîtra d’agréables afflux de dopamine.
L’euphorie de la réussite laissant la place à un grand vide, nul doute que le lecteur sera tenté de réitérer l’expérience encore et encore se transformant ainsi en programmeur Python chevronné ou Maker affirmé… voire les deux.
Le savoir peut aussi être une drogue.
Bonne lecture.
Avant-propos - les origines de MicroPython
Python est un langage très agréable à utiliser et s’exploite très facilement dans de nombreux environnements. Il faut avouer que ses bibliothèques sont impressionnantes et la communauté très vaste. Rapidement épris du langage, la lecture d’un ouvrage de Tarek Ziadé (président de l’Association Francophone Python) m’a transformé en évangéliste Python. Depuis, je fais la promotion de Python dès que l’occasion se présente, ce qui est souvent le cas avec le nano-ordinateur Raspberry-Pi et les puissants microcontrôleurs.
Puis, un jour, un client me suggère de découvrir MicroPython et la carte PyBoard sur cette vidéo YouTube (https://youtu.be/5LbgyDmRu9s). Nous étions en 2014 et Damien George présentait le résultat de son travail.
Vidéo de présentation de MicroPython par Damien George (en 2014)
Époustouflant, Damien avait écrit un « interpréteur Python 3 » s’exécutant sur microcontrôleur. Encore mieux, MicroPython compilait des scripts Python 3 stockés dans le système de fichiers présents sur ce même microcontrôleur.
L’intérêt immédiat n’est pas seulement d’avoir du Python sur un microcontrôleur, mais aussi de contrôler les entrées/sorties, les bus et du matériel électronique comme cela se fait avec Arduino, mais sans nécessiter un compilateur sur ordinateur. Cerise sur le gâteau, MicroPython offre un système de fichiers et une ligne de commande interactive (dite « REPL »). Le potentiel était évident !
En 2014, MC Hobby (https://shop.mchobby.be) prenait contact avec Damien George pour devenir le...
Objectifs de l’ouvrage
Cet ouvrage vise l’apprentissage de différentes bases technologiques permettant de mettre en œuvre des montages électroniques sur des systèmes embarqués à base de microcontrôleur en exploitant le langage Python (MicroPython pour être plus précis).
De chapitre en chapitre, le lecteur sera guidé de façon didactique à la découverte de la carte Pico, son microcontrôleur RP2040, au contrôle de ses entrées/sorties, montages électroniques élémentaires. L’ouvrage propose également une série de mini-projets pour transformer les connaissances en acquis pratiques.
Le microcontrôleur RP2040 ayant été massivement adopté dans le monde, les connaissances acquises autour du Pico pourront facilement être réutilisées avec Pico-Wireless et les autres plateformes équipées du RP2040.
Cet ouvrage peut être vu comme un manuel de formation à la carte Pico sous MicroPython plus électronique de base. C’est comme un manuel Arduino Uno et C mais avec Pico et Python à la place.
À la fin de l’ouvrage, vous maîtriserez les points suivants :
-
La mise en œuvre de la plateforme Raspberry-Pi Pico, y compris mise à jour du firmware.
-
La découverte des montages électroniques de base avec Pico, transposables d’autres cartes MicroPython.
-
L’utilisation de techniques avancées comme sortie PWM, entrée analogique, interruption, approche du bus I2C.
-
L’exploitation de capteurs permettant d’acquérir des données environnementales, contrôler des moteurs...
-
La connectivité Wi-Fi avec le Pico Wireless.
Les différents chapitres contiennent, par ailleurs, des ressources et liens utiles pour aider le lecteur à...
Prérequis
Cet ouvrage vous apprendra à exploiter Python sur le microcontrôleur Raspberry-Pi Pico. Ce n’est cependant pas un manuel de programmation Python.
Il est préférable d’avoir quelques notions de bases pour aborder sereinement sa lecture.
-
Programmation : une maîtrise élémentaire de Python est nécessaire, des rudiments de programmation orientée objet sont toujours les bienvenus.
-
Électronique : un minimum de sens commun en électricité/électronique est souhaitable. Un niveau débutant est suffisant pour réaliser les raccordements sur platine de prototypage.
-
Outil informatique : un ordinateur sera nécessaire pour écrire les scripts Python et les transférer sur la carte Pico. La carte Pico peut être programmée à partir d’un environnement graphique (Thonny IDE) et avec un Raspberry-Pi en guise d’ordinateur. Ceci étant, un ordinateur Windows, Mac ou Linux fera parfaitement l’affaire. Les passionnés de la ligne de commande trouveront également quelques outils bien pratiques.
1. Apprendre Python
Cet ouvrage vous apprendra à savoir comment exploiter MicroPython, Python 3 pour microcontrôleur, mais ne vous apprendra pas à programmer en Python ! Il existe d’excellentes références sur Python 3 comme :
-
Python 3 : les fondamentaux du langage de Sébastien Chazallet, paru aux Éditions ENI,
-
Apprendre à programmer avec Python, réalisé par Gérard Swinnen (Belgique), disponible en open source,
-
Les ouvrages de Tarek Ziadé (France), dont je me souviens avoir dévoré Programmation Python : Conception et optimisation, en descendant dans le Midi de la France.
Il existe certainement d’autres ouvrages de qualité ;...
Présentation de MicroPython
Logo MicroPython
MicroPython est une implémentation du langage de programmation Python 3 pour microcontrôleur.
Suivant la philosophie « batteries included » (piles incluses) de Python, MicroPython apporte également un sous-ensemble important des bibliothèques standard de Python.
MicroPython est écrit en C99 (un C normalisé ISO/IEC ISO/IEC 9899:1999) pour assurer une portabilité maximale, le développement de MicroPython est résolument orienté vers l’efficacité et la légèreté. MicroPython est assez compact pour tenir dans un espace de 256 Kio (de Flash) et 16 Kio de RAM. De fait, il peut fonctionner sur des environnements à fortes contraintes tels que des microcontrôleurs et/ou ordinateurs avec faibles ressources.
MicroPython dispose de toutes les fonctionnalités avancées de Python 3 telles qu’une ligne de commande interactive, les entiers à précision arbitraire, les chaînes Unicode, les closures, list comprehension, les générateurs, le formatage F-Strings (PEP-498), un nouveau module multitâche coopératif avec asyncio, la gestion des exceptions et bien plus encore.
Le but de MicroPython est d’être compatible avec Python (autant que faire se peut) de sorte que cela permet de transférer plus facilement du code PC vers un système embarqué. Il est par ailleurs très confortable de tester un algorithme en Python 3 sur ordinateur avant de le transférer sur le microcontrôleur.
Après les portages de MicroPython vers les plateformes matérielles : Linux (référence), PyBoard (la carte originale), ESP8266, ESP32, Micro:Bit, Atmel ATSAMD21 (Feather M0, Arduino M0), RISC-V, c’est aujourd’hui le microcontrôleur RP2040...
Comparaison MicroPython et Arduino
Comparer le fonctionnement de MicroPython à celui de plateformes microcontrôleurs habituelles comme Arduino met en évidence des différences fondamentales dans la façon de les programmer.
1. Arduino
Le développement sur microcontrôleur s’appuie généralement sur un compilateur C fonctionnant sur un ordinateur. De cette compilation résulte un fichier binaire contenant les instructions pouvant être exécutées directement par le microcontrôleur. Ce fichier binaire est envoyé sur le microcontrôleur via USB lorsque le microcontrôleur dispose d’un bootloader, comme Arduino. Il est également possible de programmer un microcontrôleur à l’aide d’un matériel de programmation spécifique.
Principe de programmation d’un microcontrôleur type Arduino
Le programme est écrit dans un environnement de développement sur ordinateur. Les fichiers du programme sont aussi stockés sur l’ordinateur. La phase de compilation transformant le programme en fichier binaire pour le microcontrôleur est une opération gourmande en ressources, celle-ci doit nécessairement être réalisée sur ordinateur.
Le fichier binaire, spécialement compilé pour la plateforme microcontrôleur visée, est ensuite transféré vers le microcontrôleur. Dans le meilleur des cas, un bootloader est disponible sur la plateforme visée (comme Arduino), ce qui facilite singulièrement l’envoi du programme compilé.
Avantages :
-
Les programmes écrits en C et compilés sont toujours les plus rapides en termes d’exécution.
-
Il nécessite peu de mémoire Flash sur le microcontrôleur pour stocker le programme compilé. Ce dernier...
Intérêt de MicroPython
Hormis l’intérêt évident de pouvoir contrôler du matériel électronique sur microcontrôleur, MicroPython c’est avant tout du Python, un langage facile à apprendre et devenu très populaire ces dernières années.
La popularité de l’implémentation standard de Python rejaillit donc inévitablement sur MicroPython et ses applications dans le monde électronique. Ce n’est donc pas un hasard si la puissante fondation Raspberry-Pi a placé MicroPython au cœur de son premier projet microcontrôleur (Pico et RP2040), ni étonnant que l’ESA fasse la promotion active du langage Python dans ses compétitions (ex : Cansat).
Axes d’intérêt pour Python/MicroPython
1. Python pour l’électronique
Ce qui distingue MicroPython de Python, c’est sa proximité avec la couche matérielle.
Cela permet de commander facilement le niveau logique des broches, exactement comme cela se fait avec un Arduino, à l’exception que le langage est Python.
Tout comme avec la plateforme Arduino, il est relativement facile d’exploiter l’électronique de base et cet ouvrage passera en revue les principaux montages. Quelques projets d’apprentissage permettront au lecteur d’acquérir rapidement un savoir complémentaire pour devenir autonome.
2. Python, un langage populaire
Python est le langage de programmation qui connaît la plus forte progression ces dernières années. Déjà élu comme le meilleur langage en 2017 par une enquête de l’IEEE (Institute of Electrical and Electronics Engineers), Python confirme sa position dominante d’année en année. En 2021, Python reste le leader des langages de programmation dans tous...
Communauté
La communauté MicroPython est maintenant très active et il est assez facile de trouver de l’aide ou du support.
La communauté MicroPython s’est très largement développée ces dernières années.
Pour bien évaluer la communauté MicroPython, il faut scinder le support en deux groupes.
1. Bibliothèques et pilotes
Comme l’indique la capture ci-dessous, une recherche internet sur les mots-clés « MicroPython Library » retourne pas moins de 16 millions de résultats.
Recherche de bibliothèque MicroPython
En 2018, la requête « micropython library » retournait 187 000 résultats et 578 000 résultats en janvier 2021. En ce mois d’août 2022, ce chiffre a brusquement dépassé la dizaine de millions de résultats ! MicroPython est devenu très populaire.
La communauté MicroPython n’a plus à rougir de sa relative jeunesse : elle s’est hissée au même rang que la communauté Arduino (« Arduino Library » retourne 22 millions de résultats).
Disposer d’une large communauté Arduino est aussi un avantage pour la communauté MicroPython. En effet, porter un pilote d’Arduino vers MicroPython est plus facile que créer un pilote en partant de rien.
Les capteurs et breakouts populaires disposent aujourd’hui de pilotes MicroPython qu’il est assez facile de localiser sur Internet.
2. Forums
La communauté francophone, bien qu’assez petite, dispose d’un forum en langue française (https://forum.mchobby.be/viewforum.php?f=14).
S’il y a bien un endroit où de l’aide peut être trouvée facilement, c’est sur les forums de la fondation Raspberry-Pi...