logicielle d'un langage de programmation largement compatible avec Python 3, écrit en C , optimisé pour fonctionner sur un microcontrôleur .
MicroPython se compose d'un compilateur Python en bytecode et d'un interpréteur d'exécution de ce bytecode. L'utilisateur dispose d'une invite de commande interactive (le REPL ) pour exécuter immédiatement les commandes prises en charge. Il inclut une sélection de bibliothèques Python essentielles ; MicroPython comprend également des modules permettant au programmeur d'accéder au matériel de bas niveau.
MicroPython possède bien un assembleur en ligne , ce qui permet au code de s'exécuter à pleine vitesse, mais il n'est pas portable sur différents microcontrôleurs.
Le code source du projet est disponible sur GitHub sous la licence MIT .
MicroPython a été créé à l'origine par le programmeur australien Damien George, suite à une campagne de financement participatif réussie sur Kickstarter en 2013. La campagne Kickstarter initiale a permis de lancer MicroPython avec une carte de développement « pyboard » basée sur un microcontrôleur STM32F4 . Depuis, MicroPython a été développé pour prendre en charge plusieurs architectures ARM . Les architectures prises en charge par la version principale sont : ARM Cortex-M (de nombreuses cartes STM32 , cartes RP2040 , TI CC3200/WiPy, cartes Teensy, série Nordic nRF, SAMD21 et SAMD51), ESP8266 , ESP32 , PIC 16 bits, Unix, Windows, Zephyr et JavaScript. Il existe également de nombreuses versions dérivées pour divers systèmes et plateformes matérielles non pris en charge par la version principale.
En 2016, une version de MicroPython pour le BBC Micro Bit a été créée dans le cadre de la contribution de la Python Software Foundation au partenariat Micro Bit avec la BBC.
En juillet 2017, MicroPython a été dérivé pour créer CircuitPython , une version de MicroPython axée sur l'éducation et la simplicité d'utilisation. MicroPython et CircuitPython prennent en charge des matériels légèrement différents (par exemple, CircuitPython prend en charge les cartes Atmel SAM D21 et D51, mais ne prend plus en charge l'ESP8266). Depuis la version 4.0, CircuitPython est basé sur MicroPython version 1.9.4.
En 2017, Microsemi a réalisé un portage de MicroPython pour l'architecture RISC-V (RV32 et RV64).
En avril 2019, une version de MicroPython pour Lego Mindstorms EV3 a été créée.
En janvier 2021, un portage MicroPython pour le RP2040 (ARM Cortex-M0+, sur Raspberry Pi Pico et autres) a été créé.
Caractéristiques
Capacité à exécuter Python
MicroPython permet d'exécuter du code Python, offrant ainsi aux utilisateurs la possibilité de créer des programmes simples et faciles à comprendre. MicroPython prend en charge de nombreuses bibliothèques Python standard, couvrant plus de 80 % des fonctionnalités des bibliothèques Python les plus utilisées. MicroPython a été conçu spécifiquement pour pallier l'écart de performances généralement constaté entre les microcontrôleurs et Python. Le code Python peut accéder directement au matériel et interagir avec lui, offrant ainsi des possibilités matérielles accrues, inaccessibles avec une application Python classique exécutée sur un système d'exploitation .
portabilité du code
L'utilisation par MicroPython de la technologie de couche d'abstraction matérielle (HAL) permet la portabilité du code développé entre différents microcontrôleurs d'une même famille ou plateforme, ainsi que sur les appareils compatibles avec MicroPython et pouvant le télécharger. Les programmes sont souvent développés et testés sur des microcontrôleurs hautes performances, puis distribués avec l'application finale utilisée sur des microcontrôleurs moins performants.
Modules
MicroPython offre la possibilité, une fois le nouveau code écrit, de créer un module figé et de l'utiliser comme bibliothèque au sein d'un firmware développé . Cette fonctionnalité permet d'éviter le téléchargement répété d'un même code, déjà testé et exempt d'erreurs, dans un environnement MicroPython. Ce type de module est enregistré dans le répertoire des modules du microcontrôleur pour compilation et téléversement. La bibliothèque est ensuite accessible via la commande `import` de Python et peut être réutilisée.
boucle lecture-évaluation-impression
La boucle de lecture-évaluation-affichage (REPL) permet à un développeur de saisir des lignes de code individuelles et de les exécuter immédiatement dans un terminal . Les systèmes Linux et macOS disposent d'émulateurs de terminal permettant d'établir une connexion directe avec la REPL d'un périphérique MicroPython via une connexion USB série . La REPL facilite le test immédiat de différentes parties d'une application : chaque portion de code peut être exécutée et les résultats visualisés. Une fois les différentes portions de code chargées dans la REPL, des fonctionnalités supplémentaires permettent d'expérimenter avec leur comportement.
Commandes REPL utiles (une fois connecté à une console série) :
- CTRL+C : interruption clavier
- ): liste les modules intégrés
Arduino, qui propose un choix plus restreint de microcontrôleurs prenant en charge ce langage. Contrairement à d'autres plateformes , MicroPython ne dispose pas d' environnement de développement intégré (IDE) ni d'éditeur spécifique.
Syntaxe et sémantique
blocs de code
MicroPython adopte le style de programmation par blocs de Python, le code spécifique à une fonction , une condition ou une boucle étant indenté. Cela diffère de la plupart des autres langages qui utilisent généralement des symboles ou des mots-clés pour délimiter les blocs. Cette indentation améliore la lisibilité du code MicroPython, la structure visuelle reflétant la structure sémantique. Cette caractéristique essentielle est simple mais importante, car une indentation mal utilisée peut entraîner l'exécution de code dans des conditions incorrectes ou une erreur globale de l' interpréteur .
Le deux-points (:) est le symbole clé utilisé pour indiquer la fin d'une instruction conditionnelle. L'indentation est équivalente à une tabulation ou à 4 espaces.
Opérations
MicroPython a la capacité d'effectuer diverses opérations mathématiques en utilisant des opérations primitives et logiques.
| Taper | Opérateur | Nom | Exemple | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Arithmétique | + | Ajout | Comparaison | Logique | bit à bit et | de la mémoire . Les trois types de bibliothèques dans MicroPython :
MicroPython est hautement personnalisable et configurable, le langage différant d'une carte ( microcontrôleur ) à l'autre et la disponibilité des bibliothèques pouvant varier. Certaines fonctions et classes d'un module, voire du module entier, peuvent être indisponibles ou modifiées.
Bibliothèques MicroPython personnaliséesLors de la création d'une nouvelle application, les bibliothèques et pilotes MicroPython standard peuvent s'avérer insuffisants, notamment en termes d'opérations ou de calculs. À l'instar de Python, il est possible d'étendre les fonctionnalités de MicroPython grâce à des bibliothèques personnalisées qui enrichissent les capacités des bibliothèques et du firmware existants. Dans MicroPython, les fichiers se terminant par .py ont la priorité sur les autres alias de bibliothèque, ce qui permet aux utilisateurs d'étendre l'utilisation et l'implémentation des bibliothèques existantes. Matériel de supportAvec la croissance continue de l'implémentation et de la popularité de MicroPython, de plus en plus de cartes peuvent l'exécuter. De nombreux développeurs créent des versions spécifiques à chaque processeur, téléchargeables sur différents microcontrôleurs. L'installation de MicroPython sur microcontrôleurs est bien documentée et conviviale. MicroPython simplifie les interactions entre le matériel du microcontrôleur et les applications, offrant un accès à un large éventail de fonctionnalités même dans un environnement aux ressources limitées, et ce, avec une grande réactivité. Les deux types de cartes utilisées pour exécuter MicroPython :
Exécution du codePour transférer un programme sur une carte MicroPython, créez un fichier et copiez-le sur le microcontrôleur pour l'exécuter. Une fois la carte connectée à un périphérique, tel qu'un ordinateur , le lecteur flash de la carte apparaîtra, permettant ainsi le transfert de fichiers. Deux fichiers Python, boot.py et main.py, sont généralement non modifiables. Vous pouvez modifier main.py si vous souhaitez exécuter le programme à chaque démarrage du microcontrôleur ; sinon, les programmes seront exécutés via la console REPL. PyboardLa carte pyboard est la carte microcontrôleur officielle MicroPython qui prend entièrement en charge les fonctionnalités logicielles de MicroPython. Les caractéristiques matérielles de la pyboard incluent :
Le processus de démarrageLa carte PyBoard possède un disque interne dont le système de fichiers Modes de démarrageLorsque la carte pyboard est mise sous tension normalement ou que le bouton de réinitialisation est enfoncé, la carte pyboard démarre en mode standard, ce qui signifie que le fichier boot.py est exécuté, puis l'USB est configuré et enfin le programme Python s'exécute. Il est possible de modifier la séquence de démarrage standard en maintenant enfoncé le bouton utilisateur pendant le démarrage de la carte, puis en appuyant sur le bouton de réinitialisation tout en maintenant le bouton enfoncé. Les LED de la carte clignoteront entre les différents modes ; une fois le mode souhaité atteint, l’utilisateur peut relâcher le bouton utilisateur pour que la carte démarre dans ce mode. les modes de démarrage sont :
Erreurs
Exemples de programmationSource : Programme Bonjour monde : ) Importer et allumer une LED : ) as f :imprimer ( f . lire ()) BytecodeMicroPython inclut un compilateur croisé qui génère du bytecode MicroPython (fichier avec l'extension .mpy ). Le code Python peut être compilé en bytecode soit directement sur un microcontrôleur, soit après avoir été précompilé. Le firmware MicroPython peut être construit sans le compilateur, ne laissant subsister que la machine virtuelle capable d'exécuter les programmes mpy précompilés . Mise en œuvre et utilisationsMicroPython est utilisé grâce à un firmware chargé par un logiciel standard sur un microcontrôleur particulier dans une mémoire flash, communiquant à l'aide d'une application terminale chargée sur un ordinateur qui émule une interface série. Les principales utilisations de MicroPython peuvent être généralisées en trois catégories :
L'implémentation de MicroPython peut varier en fonction de la disponibilité des bibliothèques standard et de support, ainsi que de la taille de la mémoire flash et de la RAM du microcontrôleur. |