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 en interaction 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 : premier contact 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 que la communauté est très vaste. Rapidement épris du langage, la lecture d’un ouvrage de Tarek Ziadé (président de l’Association francophone Python) m’aura 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.
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)
Incroyable ! Damien avait écrit un interpréteur Python 3 s’exécutant sur microcontrôleur. Encore mieux, MicroPython compilait des scripts Python 3 stockés 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...
Objectifs de l’ouvrage
Mon professeur de mathématiques disait souvent : « Une image vaut mieux que mille mots ! ». Voici donc, en une image, de quoi situer cet ouvrage dans le palais des connaissances.
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 et 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 originale MicroPython Pyboard, au contrôle de ses entrées/sorties, aux montages électroniques élémentaires et à l’utilisation d’interfaces avancées.
Cet ouvrage peut être vu comme un manuel de formation à la carte MicroPython Pyboard + électronique de base et ses interfaces avancées. C’est comme un manuel Arduino Uno et C, mais avec Pyboard et Python à la place.
La lecture des différents chapitres offrira de solides bases de connaissances et des outils pour aborder sereinement n’importe quel autre projet exploitant les montages électroniques élémentaires avec microcontrôleur Python.
Il servira également d’ouvrage de référence...
Prérequis
Cet ouvrage vous apprendra comment exploiter MicroPython, Python 3 pour microcontrôleur sur la carte MicroPython Pyboard et Pyboard-D. Il n’est cependant pas un manuel de programmation Python.
Il est préférable d’avoir quelques notions de base pour aborder sereinement sa lecture.
-
Programmation : une maîtrise élémentaire de Python est nécessaire, des rudiments de programmation orientée objet seront les bienvenus, mais pas indispensables.
-
É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 MicroPython Pyboard. Quelques outils en ligne de commande viendront épauler les développements. Rompu à l’environnement Linux, c’est le populaire Raspberry Pi (ou ordinateur sous Linux) qui sera utilisé comme plateforme informatique de référence. Cela étant, un ordinateur Windows ou Mac ferait aussi parfaitement l’affaire.
Apprendre Python
Cet ouvrage vous apprendra comment exploiter MicroPython, Python 3 pour microcontrôleur, mais ne vous apprendra pas à programmer en Python ! Il existe d’excellentes...
Présentation de MicroPython
Logo MicroPython
MicroPython est une implémentation du langage de programmation Python 3 pour microcontrôleur. Suivant la philosophie « battery included » (piles incluses) de Python, MicroPython apporte également un sous-ensemble des bibliothèques standards de Python.
Écrit en C99 (un C normalisé ISO/IEC 9899:1999) pour une meilleure portabilité, 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 KiB de mémoire flash et 16 KiB 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, comme une ligne de commande interactive, des entiers à précision arbitraire, des chaînes Unicode, les closures, list comprehension, des générateurs, le 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 existe aujourd’hui...
Comparaison MicroPython et Arduino
Comparer le fonctionnement de MicroPython à celui de plateformes microcontrôleurs habituelles comme Arduino met en évidence des différences importantes dans les cycles de développement respectifs.
1. Arduino
Le développement sur microcontrôleur s’appuie généralement sur un compilateur C fonctionnant sur l’ordinateur. De cette compilation résulte un fichier binaire qui est ensuite envoyé sur le microcontrôleur via USB (lorsque le microcontrôleur dispose d’un bootloader, comme Arduino) ou à l’aide d’un matériel de programmation adéquat.
Principe de fonctionnement d’un microcontrôleur type Arduino
Le programme est généralement écrit dans un environnement de développement et stocké sur l’ordinateur. La phase de compilation étant assez gourmande en ressources, celle-ci doit nécessairement se faire 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 :
-
Nécessite peu de mémoire flash pour stocker le programme...
Intérêt
Hormis l’intérêt évident de pouvoir contrôler du matériel électronique sur microcontrôleur à partir d’un langage comme Python, MicroPython, c’est avant tout du Python. L’intérêt pour l’implémentation standard de Python rejaillit donc inévitablement sur MicroPython et ses applications dans le monde électronique.
Axes d’intérêt pour MicroPython/Python
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. Ce livre explorera aussi une variété de capteurs et actuateurs pour permettre au lecteur d’acquérir rapidement son autonomie.
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...
Communauté
La communauté MicroPython est maintenant très active et il est assez facile de trouver de l’aide ou du support.
Il faut cependant reconnaître qu’elle n’atteint pas la taille de la communauté Arduino, mais, à sa décharge, il faut admettre que la communauté MicroPython est bien plus récente.
Comme pour la communauté Arduino, 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 « Arduino Library » retourne 82 millions de résultats, alors que la recherche « MicroPython Library » retourne uniquement 187 000 résultats.
Recherche de bibliothèques sur Internet.
Cette disproportion n’est pas forcément un inconvénient. En effet, l’émulation de la communauté Arduino peut être salvatrice pour porter un pilote matériel vers MicroPython. Un pilote, même en C, c’est mieux que pas de pilote du tout.
Pour l’heure, la plupart des capteurs et breakout courants (pression, température, luminosité, OLED, TFT, humidité, etc.) disposent déjà de pilotes MicroPython. Ces derniers sont assez facilement trouvables sur Internet.
Breakout : terme anglais désignant des cartes électroniques...